Appian ACD101 study materials
Appian ACD101 study resources

TEST to PROD: Groups, Constants and a Missing Service Account

Appian ACD101 · Put your knowledge to work in context.

All case studies

TEST to PROD: Groups, Constants and a Missing Service Account

An application of 60 objects is deployed from TEST to PROD. The package includes the group 'Claims Adjusters' with three test users, and 'Overwrite existing objects' is selected. In PROD, Claims Adjusters has 40 members synced from Active Directory, and that sync is owned by IAM - not by the Appian team. A constant INTEGRATION_URL points at the TEST endpoint. A process model runs a 'Run as' service account, svc_claims, which does not exist in PROD; the last deployment reported success for all objects, but the process now errors at runtime with a user-not-found message whenever an adjuster submits a claim.

1. What is the risk of including the group in the package with overwrite selected, and how would you handle the group in future deployments?

Read the worked answer

The risk is that a deployment silently rewrites PROD authorization data. The group object carries its membership; with overwrite selected, the PROD group can end up with the three TEST users added, and PROD members who are not in the package can be displaced. IAM believes it owns that membership, so the drift is invisible until someone cannot see their claims - and the deployment log will say everything succeeded, because from Appian's point of view it did.

Handling it:

  • Exclude the group from the package if it already exists in PROD and is externally managed. Deploy the objects that reference the group; the reference resolves against the existing PROD group.
  • Use compare before deploying rather than deploying blind, and read the differences for group objects specifically - membership differences are easy to skim past in a long object list.
  • Never use overwrite as a blanket setting. Choose per object type, and treat groups and security as review-required.
  • Confirm the group exists in the target before the deployment. A missing group fails late and can leave objects pointing at nothing.

The general rule: deployment carries design, not authorization data. The moment group membership is externally owned, it stops being an application object for deployment purposes.

2. How should INTEGRATION_URL and the credential be handled so this does not recur on every release?

Read the worked answer

Manual post-deploy edits are the failure mode. The constant reached PROD holding the TEST value because the deployment carried the value that was in TEST, and someone has to remember to change it - which means eventually nobody does, and the test endpoint gets production traffic.

Endpoint: use a deployment customization so the import applies environment-specific values automatically. Export the constant and supply the PROD value during import rather than editing it afterwards; the value then becomes part of the deployment record instead of tribal knowledge.

Credential: do not put secrets in a constant at all. Use the platform's credential/connected-system handling, configured per environment, so the deployment carries the definition and the environment holds the secret. A constant holding a password or token is readable by anyone with design permissions and ends up in exports.

Verification: add a smoke check to the release - start the integration once in PROD and confirm the response host. A value that is merely present is not proof that it is correct, and this failure mode produces errors only when a real user submits a claim.

If customization is not available for a given object type, at minimum put the environment value on a release checklist with a named owner, and keep the TEST value obviously fake so a leak is visible.

3. The deployment succeeded but the process errors at runtime. Explain the cause and what you would add to the release process.

Read the worked answer

The cause is a missing runtime dependency: the process model is configured to run as svc_claims, and that user does not exist in PROD. Deployment validates objects and references it can see, but it does not fabricate users, and this failure only surfaces when the process actually executes - which is why 'all objects deployed successfully' and 'user not found' are both true.

Fix: create the service account in PROD through the admin console, give it the correct group memberships and the object permissions it needs (at minimum, the ability to start the process and access the records it touches), and store its identity as an environment-specific value so the two environments are configured identically rather than by memory. Do not solve it by running as a human user - that ties a core process to one person's account status.

Add to the release process:

  1. A dependency checklist for non-deployable prerequisites - users, groups, credentials, connected-system configs, data sources - reviewed before import.
  2. A post-deploy smoke test that starts one instance of each critical process and completes it, rather than only checking that objects imported.
  3. A check of process-instance errors in the days after release; runtime failures of this kind are visible there long before a user reports them.

The pattern to internalize: deployment verifies that objects arrived, not that the application can run.