Adobe Campaign Standard Developer Expert study materials
Adobe Campaign Standard Developer Expert study resources

Adobe Campaign Standard Developer Expert common mistakes

Adobe Campaign Standard Developer Expert · Understand the traps and how to avoid them.

Mistake 1

Trying to add a field to the out-of-box Profile resource by editing schema XML or applying a schema patch, as one would in Campaign Classic.

Candidates carry over Classic habits and assume direct schema modification is allowed; ACS manages the core Profile resource and does not permit editing it in place.

What to do instead

Create a custom resource extension on Profile, add the field in the extension, publish the custom resource, and reference the field through the extension namespace in queries and personalization.

Mistake 2

Merging two query branches with a Union activity and sending a delivery from the union even though the same recipient can appear in both branches.

Union is treated as a set operation, but in ACS it can preserve duplicate rows unless deduplication or key handling is configured.

What to do instead

Use Intersection when only common rows are wanted, or configure deduplication/primary-key handling on Union; add a Reconciliation or Deduplication activity before the delivery and verify counts per branch.

Mistake 3

Writing personalization against targetData fields for a workflow audience but testing only with a proof sent to a seed address whose profile has all fields populated.

The expression context changes between a recipient-based delivery and a temporary target audience, and a seeded proof can hide empty or missing values.

What to do instead

Use the expression builder to select fields from the actual target dimension, provide default values for empty fields, and preview/test with a real extracted target that includes records with missing data.

Mistake 4

Using Campaign Classic server-side JavaScript helpers such as sqlExec or Classic session calls inside an ACS workflow JavaScript activity to update profiles.

The ACS JavaScript API and execution environment differ from Classic, so Classic-only methods are unavailable or behave differently.

What to do instead

Use the documented ACS JavaScript API (queryDef, entity/DOM methods) or the ACS REST API for external updates; test the script in a JavaScript activity and inspect the workflow log for API errors.

Mistake 5

Loading a CSV with the default Update and insert mode without defining a reconciliation key, then discovering duplicate profiles after the import.

The import wizard does not automatically treat email or another field as a unique key; default mode inserts when no match is found and can create duplicates.

What to do instead

Define the reconciliation key in the import template (for example email plus namespace), enable duplicate management or reject handling, run the import on a small sample, and inspect rejected records before the full load.

Mistake 6

Using a personal administrator login and password inside an API integration because creating a dedicated technical operator and product profile takes extra setup.

This is convenient and often mirrors local testing, but it violates least privilege and makes credential rotation and audit difficult.

What to do instead

Create a dedicated technical operator, assign a least-privilege product profile through the Adobe Admin Console, use OAuth/JWT credentials for the integration, and rotate/monitor them separately from human accounts.

Mistake 7

Scheduling a nightly workflow query that filters on a custom field with no index and no date restriction, causing a full scan of the Profile table on every run.

The query was copied from a small test dataset and the custom field was never indexed; ACS does not automatically index every custom field.

What to do instead

Enable indexing on the custom field where supported, add a lastModified or date filter, use an incremental query where possible, and review workflow logs and database load after the change.

Mistake 8

Placing a Wait activity at the start of a recurring workflow and setting a Scheduler to run every hour, then being unable to explain overlapping executions.

Wait and Scheduler serve different purposes; without a concurrency guard, a long-running execution can be started again by the next scheduled trigger.

What to do instead

Use Scheduler for recurrence, configure workflow execution options to prevent concurrent runs, or introduce a signal/queue pattern; monitor active executions and adjust frequency to actual runtime.

Mistake 9

Applying a typology rule only to the delivery template but creating the live delivery without that typology, so quarantine exclusions and pressure rules are not applied.

Typology inheritance and delivery-level assignment are not fully understood, and a template setting can appear to be active when the delivery does not use it.

What to do instead

Attach the typology to the template and verify the delivery inherits it, explicitly set the typology on the delivery if needed, and test with a quarantined address to confirm exclusion behavior.

Mistake 10

Creating a 1-N link from a custom resource to Profile but leaving the link cardinality as 1-1 or choosing the wrong target key, which breaks joins and produces duplicate enrichment rows.

The link wizard defaults and cardinality settings are easy to misread, and the error only appears when a profile has multiple child records.

What to do instead

Set the link cardinality to 1-N, target the Profile primary key, publish the custom resource, and test with a profile that has multiple related records to confirm the join returns the expected rows.