Navigating the Uncharted Waters of Adobe Orchestrated Campaigns: Limitations and Workarounds

ADOBE ORCHESTRATED CAMPAIGNSADOBE JOURNEY OPTIMIZER (AJO)

Pradeep Jaiswal

5/23/202611 min read

When you transition from traditional journey mapping to a batch-oriented relational model, you are bound to find undocumented quirks. Instead of keeping these to myself, I’m sharing my learning with the community. Here is an unfiltered look at limitations of Orchestrated Campaigns, and the workarounds you need to keep your builds moving.

This article continues the discussion from my previous post, “What I learned while working with Adobe Orchestrated Campaign”, where I shared early insights into Adobe’s new Orchestrated Campaign Module (OCM). Since then, I’ve been deep in the architectural weeds, pushing the module to its limits and bumping up against hard system boundaries.

The Workaround: Run the query in AEP query service backend table and generate custom reports, which properly distinguishes between multiple runs on the same day

1. Enrichment “Bleed”: Unfiltered Relational Data

The Limitation: You use the “Build Audience” node to target users with a specific attribute value (e.g., Order Status = Pending). However, your "Enrichment" node preview shows all order associated with that user (e.g., Pending, Cancelled, Submitted), not just the one you filtered for.

Audience with status “expired”

The "Build Audience" step only qualifies the Person ID. Once the person is qualified, the downstream enrichment step exposes the broader related-record level for that person. It does not automatically restrict the relational data to only the row that matched your initial condition.

The Workaround: If your downstream personalization requires only the Pending status row, you must apply that exact same filtering logic directly inside the Enrichment data setup.

2. The Re-Entry Conundrum (No In-Flight Status)

The Limitation: You have a daily recurring campaign. A profile enters but hasn’t exited the workflow yet. The next day, the campaign runs again, pulling that same profile in again and creating overlapping, concurrent journeys.

Unlike standard Journeys, OCM does not natively expose a runtime profile status (like “active” or “in-progress”). There is no built-in mechanism to natively block re-entry while a user is still in-flight.

The Workaround: Maintain a custom flag (e.g., active_in_campaign = true) explicitly in your data model. Update this flag by external system when they enter in campaign, clear it when they exit, and use the "Build Audience" step to explicitly exclude anyone with the active flag.

3. Consent Snapshots Ignore Mid-Flight Denials

The Limitation: If a user denies consent while a campaign run is mid-execution, they will still receive the emails scheduled for that specific batch run.

OCM operates on a batch-oriented model. It resolves profile data using a “snapshot” taken at publication or run time. It does not perform a live UPS (Unified Profile Service) lookup before every email send like an AJO Journey does.

The Workaround: Include the consent field directly in your audience logic, , add wait period long enough that you get new value in profile snapshot, rebuild the audience before every single email or other channel.

4. Stale Relational Data in Mid-Flight Campaigns

The Limitation: You want to check if a user received “Email 1” (via the MessageFeedback table) or attained a Order status right before sending “Email 2” within the same canvas. OCM won’t catch the updates right away.

Because OC relies on a batch-oriented snapshot at execution time, it does not evaluate freshly updated table values mid-execution.

The Workaround: Insert a wait period of few hours and natively re-query the updated MessageFeedback dataset to get recent log.

5. Day-Level Reporting Blindspots for Multiple Runs

The Limitation: If your orchestrated campaign runs every 6 hours, your Campaign Reporting OOTB UI will only show you the aggregated daily metrics. You cannot filter by a specific run.

The Batch Instance selector in the reporting UI currently filters by day, not by timestamp. The UI simply cannot view each same-day run instance separately.

The Workaround: Change your design to ensure you configure a dedicated channel setup specifically for OC with only one target dimension.

10. Profile Count Blackholes Between Nodes

The Limitation: You need to validate your campaign by seeing the exact profile count moving between two specific nodes on the canvas.

Currently, there is no system dataset or backend table exposed to end user that provides the exact profile count transferring between two discrete node activities on daily basis, though UI shows the data in canvas.

The Workaround: There is no direct workaround; this has been flagged as a feature enhancement request with adobe engineering to implement step event table for OCM similar to AJO.

11. Missing Batch Instance IDs in Feedback Datasets

The Limitation: When querying the ajo_message_feedback_event_dataset for tracking, the batchInstanceID is sometimes completely empty.

While expected for batch executions, batchInstanceID can appear empty for event-based journey scenarios and is not guaranteed across all campaing in all runs.

The Workaround: Do not rely solely on batchInstanceID. The more reliable correlation is achieved using a combination of messageExecutionID, messageID, and correlationID.

12. Untraceable Published Email Templates

The Limitation: You apply an AJO template to an OCM email and hit publish. Later, you try to find out which template you originally used , but the link is gone.

Once a template is applied, it serves merely as a starting point. The email becomes an independent message, and AJO does not retain a UI or Query Service metadata link back to the original template name.

The Workaround: Capture the template name in your implementation notes or use strict naming conventions of email node before the campaign is published.

13. The Hard Limit of 10 Inline Campaigns

The Limitation: Imagine building a robust, multi-step orchestration only to be greeted by a cryptic “OCM error 6017–500: Inline campaign count limit exceeded.” OCM imposes a strict limit on the number of messaging actions on a single canvas.

Every channel action (Email, SMS, Push) inside an Orchestrated Campaign acts as an “inline campaign” backed by AJO Campaign APIs. The architecture is currently not scalable enough to support large counts, imposing a hard limit of 10 inline message activities per orchestrated campaign.

The Workaround: You cannot bypass this. If your campaign requires more than 10 touches, you must split your logic across multiple orchestrated campaigns.

14. The Stubborn Fork Deletion Blocker

The Limitation: You make a mistake on the canvas and try to delete a “Fork” activity, but the UI won’t let you.

A fork must have at least two transitions by definition. You cannot delete it if subsequent activities are attached because it would break the downstream flow.

The Workaround: You must painstakingly delete all transitions following the fork first before you can remove the fork itself.

15. Misleading Template Sources from Integrations (Knack)

The Limitation: You sync external email templates from Knack into AJO. However, the template list UI shows the source as “AJO” for both native and externally synced templates.

This is a product limitation. The “Source” field in the template interface cannot be relied upon to distinguish between templates originating in Knack versus those created directly in AJO.

The Workaround: Establish an operational convention: use a naming prefix like KNAK_, apply tags upon sync, and use dedicated folders.

16. ODBC Errors with Message Feedback Enrichment

The Limitation: Adding Message Feedback attributes to your Enrichment step causes the campaign to fail with a database (ODBC) error.

Engineering identified this as a bug caused by a missing link-key field generation during orchestration joins specifically for the message feedback dataset.

The Workaround: Query the message_feedback dataset within the Build Audience step instead, and perform the enrichment using attributes from the targeting dimension (a reverse join approach).

17. Lack of Future-Relative Date Presets

The Limitation: You are trying to build an audience of Order status expiring “within the next 90 days,” but there is no date preset in the dropdown for future dates.

By design, the date preset dropdown in the builder focuses exclusively on lookback windows (e.g., “in the last N days”).

The Workaround: Write a custom PQL condition (e.g., effectiveEndDate <= (now() + 90 24 60 60 1000)) or data distiller query to pre-calculate these dates in the data model.

18. Unified Profile Service (UPS) Store Isolation in Targeting rules.

The Limitation: Dynamic content targeting rules within the AJO OCM Email Action strictly support the Real-Time Customer Profile (UPS) store. When creating targeting rules, you can only access the Profile store data, and relational table data is unavailable.

The Workaround: Create an audience using those relational attributes, and access audience inside the Targeting rules section.

19. Unified Profile Service (UPS) Store Isolation in Dynamic Conditional Content

The Limitation: Dynamic content targeting rules within the AJO OCM Email Action strictly support the Real-Time Customer Profile (UPS) store. When creating conditions for dynamic content, you can only access the Profile store data, and relational table data is unavailable.

The Workaround: Create an audience using those relational attributes, and access audience inside the Conditional content section.

20. Multi-Entity Schema Enrichment Constraints

The Limitation: AJO OCM enrichment workflows currently lack support for multi-hop or multi-table relational joins. Practitioners cannot use attributes from multiple tables in enrichment inside one single expression.

The Workaround: Create a first enrichment to access those attributes from each relational table. Add 2nd enrichment node after the first enrichment node, which would allow applying enrichment function such as concatenation of two enrichment values received from node1.

21. Static Configuration for Secondary Dimensions (1:N Messaging)

The Limitation: AJO OCM lacks a dynamic loop or contextual switch for varying secondary dimensions when executing multi-email delivery streams to a single profile.

If a campaign requires sending multiple distinct emails to the same customer based on a shifting secondary dimension (e.g., multiple different store locations or product IDs associated with one profile), the email channel configuration must be manually re-created for each distinct combination of primary and secondary dimension. Where as AJO journey we can use supplemental Ids directly inside the canvas without creating it as separate email channel configuration.

The Workaround: This is a hard constraint and no workaround exist for this.

22. Missing ‘IP warming plan activation’ in email configuration.

The Limitation: If you are migrating to Adobe Journey Optimizer and standing up a brand new instance, you know the golden rule of deliverability: you have to systematically warm your IPs before opening the floodgates. In standard AJO Campaigns Action, there is a handy “IP warming plan activation” toggle right inside the email configuration screen to help manage this. But if you try to build that same email inside an Orchestrated Campaign (OCM), the feature is completely absent.

The Workaround

  • Use OCM purely as your query engine: Build your Orchestrated Campaign using your relational-table logic to identify the exact target population.

  • Export the list: Instead of adding an Email action node, use a “Save Audience” node. This materializes the resulting audience and makes it available in the AEP Audience Portal for reuse.

  • Wrap it in a Segment: Head over to the AEP Audience Portal and create a new segment definition. Use your newly saved OCM audience as the input/component condition.

  • Merge Policy Check: Ensure this new segment definition is set to use the default merge policy, then allow the segment to evaluate.

  • Switch to Standard AJO: Leave OCM and create a standard Scheduled Marketing Campaign with an Email action.

  • Activate Warming: Because you are now in standard AJO, the “IP warming plan activation” toggle is natively supported. Enable it, select your newly evaluated segment-definition audience, and let the system handle the safe throttling.

23. The Missing Dropdowns: Manual Value Entry in the OCM Audience Builder

The Limitation: You are building an audience in the OCM canvas and want to filter your users by a common attribute say, Loyalty Tier. In the standard AEP Segment Builder, clicking on this field would immediately populate a handy dropdown menu of available enumerated values (e.g., Gold, Silver, Bronze). But in the OCM segment builder that dropdown is a ghost town. Your stakeholders are forced to manually type the exact string values from memory.

The Workaround: This is a massive risk for user error. If a marketer types “goold” instead of “Gold”, or adds an accidental trailing space, the query fails silently and returns zero profiles. You cannot rely on stakeholders to manually type raw database strings.

The workaround requires a shift in your operating model:

  • Maintain a Data Dictionary: Keep a heavily documented, easily accessible “cheat sheet” of exact string values for your campaign operators.

  • Pre-build Standardized Audiences: For highly utilized fields like Loyalty Tier or Subscription Status, an architect should pre-build and save these as standardized OCM audiences. Instead of dragging in the Loyalty Tier field and typing "Gold", the stakeholder simply drags in the pre-verified Audience: Loyalty - Gold node.

6. No Variant Reporting for Dynamic Content Blocks

The Limitation: If you use Dynamic Content condition blocks in an email (e.g., showing Block A vs. Block B for if-else condition), you cannot report on how many users saw which block.

AJO/OCM does not currently provide out-of-the-box reporting for individual conditional blocks rendered during personalization. Reporting is strictly at the message or channel level.

The Workaround: Track distinct link URLs inside each block to compare clicks, or redesign the use case using Targeting rules or Content Experiments, which provide details of variant-level reporting.

7. Testing Workflows Halts at Message Nodes

The Limitation: When using Test Mode, you cannot test the progression of a workflow past the first message activity without actually skipping the sending emails note. This feature is present as Dry run in AJO but missing in OCM.

The Workaround: Temporary delete the email node from canvas, test the entire flow, add the email node again.

8. Lost Audience Definition Traceability

The Limitation: Once an OCM audience is created, you cannot see its definition logic from the Audience UI, nor can you see which campaign generated it.

This is an acknowledged product gap. OCM saves audiences purely as flat lists of profiles and currently provides no navigation path back to the definition or source campaign.

The Workaround: Rely heavily on strict naming conventions and external documentation to keep track of your audience definitions.

9. Strict One-Dimension Rules for Channel Configurations

The Limitation: You are unable to select your Email channel configuration in the OCM UI if it has more than one target dimension.

Orchestrated Campaigns require a channel configuration with exactly one target dimension. Configurations with a “Target + Secondary dimension” will setup the channel but it would fail in campaign canvas while using the channel .

I am a huge advocate for Adobe’s ecosystem, largely because of how rapidly their products evolve with every release. In fact, the pace of innovation is often so fast it’s a challenge to keep up with every new feature. I am confident that many of the limitations identified here are already on the roadmap and will be addressed in future iterations of Orchestrated Campaign.

Press enter or click to view image in full size

Values other than ‘Expired’ still exists

At Shiftlytic, we specialize in Orchestrated Campaigns architecture, helping brands like yours navigate the technical nuances of relational data stores and batch-oriented executions. We know firsthand that transitioning from traditional journeys to complex OCM workflows can expose undocumented limitations

Contact us today to schedule one free consultation and ensure your Orchestrated Campaigns are accurate, scalable, and fully optimized. Let’s turn your data into a competitive advantage together.

Need Expert Help ?