Closed‑Loop Pharma: Architectures to Deliver Real‑World Evidence from Epic to Veeva
Architectures for privacy-safe closed-loop pharma, from Epic to Veeva, with de-identification, identity resolution, ETL, and provenance.
Closed-Loop Pharma: Architectures to Deliver Real-World Evidence from Epic to Veeva
Pharma teams want more than campaign attribution. They want a defensible, privacy-safe way to connect HCP engagement, care pathways, and patient outcomes so they can measure what actually changes behavior and treatment results. That is the promise of closed-loop systems spanning Veeva and Epic integration, but the real challenge is architectural: how do you move from raw events to trustworthy real-world evidence without creating compliance risk or brittle point-to-point plumbing?
The answer is not a single API, data lake, or dashboard. It is a chain of controls: de-identification, identity resolution, event-driven ETL, lineage, and governance. If those controls are designed well, life sciences teams can close the loop between field activity and outcomes while preserving HIPAA, GDPR, and organizational trust. If they are designed poorly, the same pipeline becomes a liability, especially when it touches regulated CRM systems like Veeva CRM and high-volume clinical systems like Epic EHR.
This guide lays out concrete architecture patterns, practical data contracts, and implementation decisions that technical leaders can use to build a closed-loop platform that is durable, auditable, and scalable. It draws on the operating reality of healthcare data platforms and the broader trend toward predictive and AI-assisted analytics in healthcare, a market that continues to grow rapidly as organizations invest in better outcomes and decision support.
1. What “Closed-Loop Pharma” Actually Means
From campaign reporting to outcome intelligence
In the simplest version of pharma CRM, a rep logs an interaction, marketing sends follow-up content, and leadership reviews activity counts. Closed-loop pharma goes further: it asks whether outreach influenced treatment adoption, adherence, referrals, persistence, or other downstream outcomes. That requires linking engagement data from Veeva with clinical and operational signals from Epic, then reconciling them into a lineage-rich evidence layer that can support analysis.
That shift matters because modern healthcare buyers increasingly expect more than promotional activity. Closed-loop architectures help answer hard questions like whether a disease-awareness campaign led to earlier diagnosis, whether a provider education program improved guideline adherence, or whether patient support interventions reduced abandonment. For teams building this capability, the technical design is as important as the analytics. A useful starting point is to think in terms of operating models that keep data contracts explicit, similar to how teams building cloud apps benefit from disciplined patterns described in hardening CI/CD pipelines and measurable deployment controls.
Why Epic and Veeva are the canonical systems in the loop
Epic sits close to the point of care, where orders, encounters, diagnoses, labs, and care gaps are created. Veeva sits close to the customer relationship, where field teams and commercial operations coordinate HCP engagement, speaker programs, samples, and support workflows. When these systems are aligned through approved integration patterns, the organization gains a view that spans both commercial and clinical context.
But that span creates risk. Epic data is deeply sensitive, and commercial systems were not designed to be de facto clinical data warehouses. Therefore, the architecture must enforce purpose limitation, patient consent boundaries, and minimum necessary access. If your organization already thinks carefully about cost, portability, and cloud control, the same discipline applies here; a good reference for that mindset is TCO and migration planning for cloud-hosted EHRs, which reinforces how hidden integration costs surface if architectural decisions are deferred.
Closed-loop is a governance model, not just a data flow
A closed-loop system only works if stakeholders trust the evidence. That means the analytics layer must be provable: every transform should have a known owner, a version, a schema contract, and a recorded source. In practice, this is where provenance, signed acknowledgements, and contract testing become as important as data science. The same principle appears in other domains where data distribution matters, such as automating signed acknowledgements for analytics pipelines, because downstream consumers need to know exactly what was delivered and when.
2. Reference Architecture for Epic-to-Veeva Closed Loops
Layer 1: Source systems and domain boundaries
The architecture begins with two separate domains. On the care side, Epic emits encounters, diagnoses, medication orders, appointments, and care-management signals. On the commercial side, Veeva manages HCP accounts, territories, field activities, and support events. Do not let those domains bleed together. Instead, define canonical boundary objects, such as HCP, organization, patient token, consent status, encounter event, and intervention event.
A strong boundary model prevents accidental overexposure of PHI and makes it easier to support multiple downstream uses. The same sort of discipline is required in integration-heavy environments beyond healthcare, as seen in integration patterns for enterprise systems, where the success of the whole depends on carefully defined interfaces.
Layer 2: De-identification and tokenization pipeline
The first technical control is de-identification. In a practical setup, PHI should be stripped or transformed at the ingestion edge before data is persisted in the analytical zone. That can mean direct identifiers are removed, quasi-identifiers are generalized, and each patient record is replaced with a reversible token held in a separate, highly restricted vault. For many organizations, this is the first line of defense against accidental misuse.
A mature pipeline should support two pathways: a privacy-preserving analytics path and a tightly controlled re-identification path for permitted patient support workflows. The analytics path should never expose names, full addresses, MRNs, or free-text notes if those fields can contain hidden identifiers. For teams balancing utility and privacy, the trade-offs resemble those in edge and device architectures, where the move to smaller, more distributed compute changes both performance and privacy assumptions, as discussed in edge AI and privacy.
Layer 3: Event bus, ETL, and evidence lakehouse
The third layer is an event-driven ETL backbone. Instead of nightly batch loads, the system should emit domain events such as PatientMatched, ConsentUpdated, HCPEngaged, EncounterClosed, LabResultReceived, and InterventionCompleted. Those events are validated against data contracts and routed through a message bus or streaming platform. This approach reduces latency, improves traceability, and makes failure modes explicit.
Once validated, events flow into an evidence lakehouse or comparable analytical store. Here, the system keeps raw, standardized, and curated layers separate. Raw events are immutable; standardized events normalize code sets like ICD, NDC, and LOINC; curated evidence marts contain business-ready measures such as time-to-therapy, adherence proxies, and HCP influence scores. When built well, this is the healthcare equivalent of the disciplined operational models used in hybrid application deployment: inputs, transforms, and outputs are explicit, observable, and versioned.
Layer 4: Provenance, lineage, and audit controls
The final layer is provenance. Every downstream insight must be traceable to the exact source event, mapping version, and transformation rule used to create it. If a dashboard says that an educational campaign improved follow-up adherence by 8%, leadership should be able to trace the calculation back to the Epic encounter feed, the identity resolution outcome, the campaign-touch record in Veeva, and the feature engineering logic applied in analytics. Without this, the output is a hypothesis, not evidence.
Provenance also supports compliance investigations, model governance, and cross-functional credibility. In organizations that already care about operational auditability, the lessons are similar to those in enterprise audit templates and other systems where traceability protects scale. In healthcare, the stakes are higher because the data may influence care pathways and regulated commercial claims.
3. Identity Resolution: The Hidden Core of Closed-Loop Systems
Why identity is hard in healthcare-commercial integration
Identity resolution is the hardest part of the loop because the same person can appear under different identifiers in different contexts. A physician may exist as an HCP in Veeva, a provider in a hospital directory, and a prescriber in claims data. A patient may be represented by MRN, encounter IDs, payer claims IDs, and de-identified tokens. If the matching logic is weak, the loop breaks; if it is too aggressive, it creates privacy and data quality risk.
A reliable strategy is to split identity into separate domains. Use an HCP master that maps NPI, facility affiliation, specialty, and territory. Use a patient token service that generates non-derivable identifiers. Use match confidence scores to determine whether a linkage can support analytics, operational follow-up, or only aggregate reporting. This layered approach is more robust than a simplistic deterministic match, and it scales better when integrating multiple EHRs or CRM instances.
Deterministic, probabilistic, and hybrid matching
Deterministic matching works when the same identifier is present in both systems, but that is uncommon across clinical and commercial domains. Probabilistic matching uses a combination of attributes, such as name fragments, location, specialty, timestamps, and encounter context, to assign a confidence score. Hybrid models combine both, with deterministic rules for high-confidence cases and probabilistic rules for ambiguous ones. In practice, hybrid matching is often the right answer because healthcare data is messy, and false certainty is worse than explicit uncertainty.
Build the matching service as a governed component with versioned rules, not a hidden spreadsheet. If the logic changes, you need to know which evidence sets are affected. If you are building a broader analytics capability, it is worth reviewing the operating lessons from data literacy and care teams, because better identity stewardship depends on the people interpreting the output as much as the code generating it.
Identity resolution outputs should be machine-readable and explainable
Do not emit only a matched/unmatched flag. Emit the matched entity, confidence score, rule path, matching timestamp, and a reason code for any rejection. This is essential for debugging and for proving to governance teams that you are not over-linking records. It also makes the loop more actionable because operational teams can decide whether to trigger patient support, HCP follow-up, or analytic inclusion.
Pro Tip: Treat identity resolution like a product, not a one-time ETL task. Version the rules, publish match quality metrics, and monitor false-positive and false-negative rates as closely as you monitor cloud spend or pipeline latency.
4. De-identification and Privacy Engineering That Actually Holds Up
Edge stripping and minimum necessary design
De-identification must happen as early as possible. Ideally, the ingestion layer should strip direct identifiers, quarantine free text, and mask quasi-identifiers before records reach broader analytics zones. This reduces the chance that a developer, analyst, or vendor accidentally gets more data than intended. It also aligns with the principle of minimum necessary access, which is especially important when commercial and clinical data coexist.
One useful pattern is a two-tier architecture. Tier one holds a de-identified operational dataset for analytics and reporting. Tier two holds a tightly controlled, separately audited token vault for authorized recontact or patient support activities. The two layers should communicate through approved service calls, not through ad hoc joins. If your org has ever had to untangle messy infrastructure because controls were added late, the same lesson shows up in practical guides like document automation TCO analysis: hidden complexity always reappears downstream.
Safe harbor, expert determination, and risk-based masking
Teams often over-focus on whether they have “de-identified” data and under-focus on the method. In the U.S., Safe Harbor removal of identifiers is one route, but many analytical programs require more nuance. Expert determination can preserve more utility when performed by qualified privacy specialists, while risk-based masking can be calibrated to the specific use case. The right method depends on data type, downstream purpose, and regulatory constraints.
For closed-loop pharma, the best answer is usually layered: de-identify at ingestion, minimize fields, tokenize where linkage is required, and conduct periodic re-identification risk review. For more on safeguarding sensitive operational workflows, teams can borrow risk reasoning from incident response for leaked private content, because the question is not whether sensitive data is important, but how fast and transparently you can contain exposure if something goes wrong.
Privacy-preserving analytics patterns
Where possible, use aggregate reporting, thresholding, suppression of small cells, and cohort-based outputs. Differential privacy, synthetic data, and secure enclaves can also help, but they should be selected carefully and tested against actual business needs. The goal is not to make analysis impossible; it is to make harmful reconstruction much harder while preserving the signal needed for operational decisions.
In many organizations, privacy success comes from product design, not just controls. This is similar to how effective customer engagement systems are shaped by workflow and context, not just features. A useful parallel can be found in workflow blueprints for marketing operations, where operational alignment matters more than isolated tooling.
5. Data Contracts and Event-Driven ETL for Reliable Evidence
Why contracts matter more than schemas
A schema tells you what fields exist. A data contract tells you who owns them, how they can change, what quality expectations apply, and what happens if they break. In closed-loop pharma, that distinction is critical. If Epic changes an event format or Veeva alters a field mapping, the evidence pipeline can silently degrade unless there is a contractual mechanism to catch the drift.
Each event should specify required fields, acceptable ranges, identity and consent dependencies, freshness expectations, and a fallback behavior if validation fails. This makes the pipeline resilient and makes failures visible before they contaminate the analytical layer. Teams that have implemented rigorous acknowledgment workflows in other analytics environments will recognize the value of this discipline from signed acknowledgements and distribution controls.
Practical event model for Epic-to-Veeva workflows
A useful event model might include EncounterFinalized, MedicationInitiated, PriorAuthApproved, HCPRepContacted, PatientSupportEnrolled, ConsentRevoked, and OutcomeObserved. Each event should include event ID, source system, source timestamp, domain owner, and linkage keys. The system should also preserve the raw payload in an immutable store for audit and replay purposes.
Event-driven ETL is especially powerful when downstream consumers are diverse. Commercial operations may need near-real-time alerts. Medical affairs may need cohort-based reporting. Data science may need feature tables for predictive models. A streaming architecture can serve all three without forcing the source systems to support every use case directly, which helps avoid the sort of brittle coupling that makes enterprise platforms expensive to operate. For a broader perspective on platform coupling and interoperability, see enterprise integration patterns and apply the same reasoning to healthcare.
Testing, replay, and idempotency
Closed-loop pipelines must be idempotent. If the same event arrives twice, the system should not create duplicate interventions or count a single outcome multiple times. Build replay capability for backfills and corrections, and verify that your evidence marts can be rebuilt from the event log. That is how you keep the platform trustworthy when source systems inevitably change.
Regression testing should cover contract validation, identity resolution stability, privacy suppression thresholds, and metric reproducibility. This is an operational mindset similar to the one used in secure CI/CD, where every release is checked against known-good behavior before promotion.
6. Provenance: How to Make the Evidence Defensible
Lineage from source event to metric
Provenance means you can explain exactly how a metric was created. In a closed-loop pharma environment, a user should be able to click from a dashboard metric to the curated dataset, from there to the transformation job, and from there to the source events in Epic and Veeva. That level of traceability is not a luxury; it is what turns analytics into evidence.
Store source system IDs, ingest timestamps, transformation versions, code hash references, and policy versions with the record. This is especially important when the same metric may be used in regulatory discussions, medical insights, and business planning. If provenance is weak, teams spend more time debating the data than using it.
Governance workflows and approval gates
Not every user should be able to create a new join between commercial and clinical data. Introduce review gates for new use cases, especially when they involve patient-level linkage or re-identification pathways. Approved use cases should include stated purpose, data scope, retention policy, and legal basis. Governance should be lightweight enough to support innovation, but strict enough to prevent scope creep.
Good governance is often invisible when it works. That is why companies invest in operating playbooks and audit patterns in adjacent domains, such as enterprise audit templates. The lesson transfers directly: scale requires repeatable review, not heroics.
Provenance for AI and predictive models
If your organization uses machine learning to identify high-risk patients, likely adopters, or care gaps, provenance becomes even more important. You need training data lineage, feature versioning, and model output traceability. Otherwise, you cannot explain why a model predicted a certain outcome or whether the prediction depended on a field that later changed definition.
This matters because the healthcare predictive analytics market is expanding quickly, driven by rising demand for personalized care, AI adoption, and operational efficiency. But the growth in tooling does not remove the need for governance; it increases it. A mature architecture lets your teams benefit from analytics while keeping the evidence chain intact.
7. A Concrete End-to-End Architecture Pattern
Step 1: Ingest and normalize
Start by ingesting Epic events through approved APIs, FHIR resources, or integration middleware. Normalize those events into a canonical healthcare event model and tag them with source metadata immediately. Simultaneously, ingest Veeva CRM activity events, campaign responses, HCP account updates, and program enrollments into a parallel event stream. The key is to avoid direct dependence on any one application’s internal schema.
Build this layer with strict contract validation and a dead-letter path for malformed events. That way, source changes do not poison the analytical store. It is the same core principle behind resilient system design in other cloud environments, including approaches discussed in cloud deployment hardening.
Step 2: Resolve identity and apply privacy controls
Run identity resolution against approved master data services. For patient-linked workflows, tokenize identifiers and separate the lookup table from the analytics zone. For HCP-linked workflows, enrich with validated reference data and territory mappings. Apply de-identification rules based on purpose, not convenience, and record which rule set was used for each dataset version.
At this stage, a patient support event may be linked to an outcome record only if the policy allows it and the linkage confidence exceeds a defined threshold. Otherwise, aggregate only. This allows the organization to support both commercial intelligence and privacy protection without confusing the two.
Step 3: Materialize evidence marts and operational triggers
Once curated, the data can feed two outputs. The first is the evidence mart, which supports analysis, reporting, and medical insights. The second is the operational trigger layer, which can send alerts into Veeva for approved next actions, such as a follow-up task, content recommendation, or support escalation. The trigger layer should be narrow and policy-bound; it should never become a backdoor for ungoverned PHI exposure.
In practice, this is where closed-loop pharma becomes tangible. A support-enrollment event might correlate with improved persistence, or an HCP education touch might precede better therapy initiation rates in a defined cohort. The architecture should support those questions without forcing analysts to reconstruct the data from scratch every time.
Step 4: Measure, learn, and retrain
Closed-loop systems should feed continuous improvement. Track data quality, match rates, consent violations, event latency, and outcome attribution confidence. Publish those measures to both technical and business stakeholders. Then use the evidence to refine campaigns, support programs, and target selection.
Organizations often underestimate the operational maturity needed for this kind of loop. The same is true in other industries that rely on real-time signals, such as hospitality and logistics, where real-time intelligence powers better decisions. In pharma, the stakes include patient outcomes, regulatory risk, and commercial credibility.
8. Comparison Table: Common Architecture Choices for Closed-Loop Pharma
| Architecture Choice | Best For | Strengths | Weaknesses | Operational Risk |
|---|---|---|---|---|
| Batch ETL from Epic to Veeva | Simple reporting and low-frequency updates | Easy to implement, predictable schedules | High latency, weak loop closure, stale insights | Medium; delays can mask errors |
| Event-driven ETL with data contracts | Closed-loop engagement and near-real-time triggers | Lower latency, better traceability, reusable events | Requires stronger engineering discipline | Low when contracts and replay are enforced |
| Centralized identity graph | Multi-source patient and HCP linkage | Improves matching consistency across domains | Can become a governance bottleneck if unmanaged | Medium; poor stewardship creates trust issues |
| Token vault with separate analytics zone | Privacy-sensitive patient workflows | Strong separation of duties and reduced PHI exposure | Adds operational complexity and latency to re-identification workflows | Low to medium, depending on access controls |
| Lakehouse with provenance and lineage | Real-world evidence and model-driven analytics | Flexible, auditable, supports multiple downstream consumers | Needs rigorous metadata and versioning | Low when lineage is embedded by design |
| Point-to-point API integration | Pilot projects and narrow use cases | Fast to prototype | Hard to scale, brittle under change, difficult to govern | High; technical debt accumulates quickly |
9. Implementation Roadmap for Technical Leaders
Phase 1: Prove value with one tightly scoped use case
Choose a use case with clear business value, modest privacy risk, and measurable outcomes. Good candidates include patient support enrollment, rep-to-HCP follow-up, or referral pattern analysis. Define the minimum data required, the legal basis for processing, the identity model, and the output metric before building anything. This prevents scope creep and aligns stakeholders early.
At this stage, avoid over-engineering. You need to validate the loop, not build the final platform on day one. Teams often find that a narrow, well-governed pilot delivers more credibility than a broad but ambiguous data lake.
Phase 2: Build the governed event backbone
Next, introduce the event bus, contract tests, and provenance metadata. Add monitoring for event lag, validation failures, and match quality. Establish an approval workflow for new event types and new joins. This creates a reusable platform rather than a one-off integration.
If your organization already has cloud modernization initiatives, align the integration layer with broader reliability and cost governance. Closed-loop systems can become expensive if every use case builds its own pipeline, so it is wise to borrow the same cost discipline seen in cloud economics and infrastructure planning.
Phase 3: Expand to multi-domain evidence and decision support
After the first loop is stable, expand into broader real-world evidence and decision support. Add claims, lab, specialty pharmacy, and patient-reported outcome sources where permitted. Layer in cohort analysis, segmentation, and signal detection. The architecture should now support both retrospective evidence generation and prospective operational nudges.
At that point, the platform becomes a strategic asset. It can support medical affairs, market access, analytics, and patient services while preserving privacy and accountability. That kind of shared capability is difficult to achieve with ad hoc integration, but very achievable with a principled architecture.
10. Common Failure Modes and How to Avoid Them
Failure mode: confusing analytics with operational authorization
Just because a dataset can be linked does not mean it should be used for direct action. Build policy checks that separate analytical enrichment from operational outreach. A system can know that a cohort showed improved outcomes without automatically sending a follow-up to a particular patient or provider. This boundary is essential for trust.
Failure mode: weak ownership of data definitions
If “therapy start,” “adherence,” or “HCP engagement” means something different across teams, your evidence will be inconsistent. Assign business owners to key definitions and make them part of the contract. This is where data governance stops being theoretical and starts preventing rework.
Failure mode: skipping lineage until audit time
It is too late to add provenance after the fact. Embed metadata, versioning, and source references from the beginning. Teams that postpone this work usually end up with expensive remediation and low-confidence dashboards. That is why strong operational patterns matter in every regulated analytics environment.
Pro Tip: If a metric cannot be traced from dashboard to source event in under five minutes, it is not ready for executive or regulatory use.
11. Conclusion: Closed-Loop Pharma Needs More Than Connectivity
The most successful Epic-to-Veeva programs will not be the ones with the most integrations. They will be the ones with the clearest architecture, the strongest privacy boundaries, and the most credible provenance. Closed-loop pharma works when organizations treat real-world evidence as a governed product, not a side effect of CRM automation.
That means investing in de-identification at the edge, robust identity resolution, resilient event-driven ETL, and uncompromising provenance. It also means designing for trust across every stakeholder: security, privacy, medical affairs, commercial operations, and data science. For teams already thinking about scalable integration and cloud economics, the playbook is familiar: start with clear boundaries, automate validation, and measure what matters.
When done well, the result is powerful. A rep’s outreach, a support program enrollment, and an observed patient outcome can finally sit in the same governed analytical universe without violating privacy. That is the real promise of closed-loop pharma: not just better reporting, but better decisions with evidence you can defend.
FAQ
How is closed-loop pharma different from traditional CRM reporting?
Traditional CRM reporting tracks activity, such as calls, visits, and content views. Closed-loop pharma connects those activities to downstream clinical or operational outcomes, such as therapy start, adherence, persistence, or referral patterns. That requires stronger identity resolution, privacy controls, and provenance, because the goal is evidence rather than activity counting.
Do we need direct patient identifiers to deliver real-world evidence?
Not necessarily. Many real-world evidence use cases can be handled with de-identified or tokenized records, especially when the analysis is cohort-based. Direct identifiers are typically only needed for tightly controlled support workflows or approved recontact processes, and those should be isolated from the main analytics environment.
What is the safest architecture for Epic-to-Veeva integration?
The safest pattern is a contract-based, event-driven integration with early de-identification, a separate token vault, strict access controls, and full lineage. This avoids direct point-to-point sharing of sensitive records and makes it easier to prove compliance. It also reduces brittleness when either Epic or Veeva changes schemas or workflows.
How do data contracts help in regulated healthcare integrations?
Data contracts define ownership, schema expectations, quality thresholds, allowed changes, and fallback behavior. In regulated environments, that makes failures visible, prevents silent drift, and gives governance teams a clear basis for approval. They are especially valuable when many downstream teams depend on the same events and metrics.
What metrics should we monitor in a closed-loop platform?
Track event latency, contract validation failures, identity match rates, false positives and negatives, suppression counts, consent violations, lineage completeness, and metric reproducibility. These operational metrics matter because they reveal whether the loop is trustworthy enough to support commercial decisions, medical insights, and possible regulatory review.
How do we avoid creating a privacy risk when linking outcomes to marketing activity?
Use minimum necessary data, separate analytics from re-identification paths, apply de-identification before broad storage, and require policy approval for any patient-level linkage. Also use thresholding and aggregation when exact linkage is not needed. The goal is to preserve analytic value while making unauthorized reconstruction or misuse substantially harder.
Related Reading
- TCO and Migration Playbook: Moving an On-Prem EHR to Cloud Hosting Without Surprises - Learn how to model the hidden costs of healthcare platform modernization.
- Hardening CI/CD Pipelines When Deploying Open Source to the Cloud - See how disciplined release controls improve reliability and auditability.
- Automating Signed Acknowledgements for Analytics Distribution Pipelines - A practical look at proving who received what data and when.
- Operationalizing Hybrid Quantum-Classical Applications: Architecture Patterns and Deployment Strategies - Explore how versioned interfaces and orchestration help complex systems scale.
- Upskilling Care Teams: The Data Literacy Skills That Improve Patient Outcomes - Understand why human readiness is essential to data-driven healthcare programs.
Related Topics
Jordan Vale
Senior SEO Content Strategist
Senior editor and content strategist. Writing about technology, design, and the future of digital media. Follow along for deep dives into the industry's moving parts.
Up Next
More stories handpicked for you
Measuring Clinical Impact: Metrics, A/B Testing, and Causal Evaluation for CDS Tools
Deploying Clinical Decision Support (CDS) at Scale: Latency, Reliability, and Safety Constraints
Teaching AI Literacy: Lessons from ELIZA to Today's Chatbots
Cloud vs On‑Prem vs Hybrid for Healthcare Predictive Analytics: A Practical Decision Framework
MLOps for EHR-Embedded Models: Testing, Monitoring, and Clinical Risk Controls
From Our Network
Trending stories across our publication group