Sandbox tooling

NOTE
Sandbox tooling is a foundational capability that supports both Real-Time Customer Data Platform and Journey Optimizer to improve the development cycle efficiency and configuration accuracy.

You are required to have the following two role-based access control permissions to use the sandbox tooling feature:
- manage-sandbox or view-sandbox
- manage-package

Improve configuration accuracy across sandboxes and seamlessly export and import sandbox configurations between sandboxes with the sandbox tooling feature. Use sandbox tooling to reduce the time to value for the implementation process and move successful configurations across sandboxes.

You can use the sandbox tooling feature to select different objects and export them into a package. A package can consist of a single object or multiple objects. Any objects that are included in a package must be from the same sandbox.

Objects supported for sandbox tooling supported-objects

The sandbox tooling feature provides you with the ability to export Adobe Real-Time Customer Data Platform and Adobe Journey Optimizer objects into a package.

Real-time Customer Data Platform objects real-time-cdp-objects

The table below lists Adobe Real-Time Customer Data Platform objects that are currently supported for sandbox tooling:

Platform
Object
Details
Customer Data Platform
Sources
The source account credentials are not replicated in the target sandbox for security reasons and will be required to be updated manually. The source dataflow is copied in a draft status by default.
Customer Data Platform
Audiences
Only the Customer Audience type Segmentation service is supported. Existing labels for consent and governance will be copied over in the same import job. System will auto select default Merge Policy in target sandbox with same XDM class when checking merge policy dependencies.
Customer Data Platform
Identities
The system will auto-deduplicate Adobe standard identity namespaces when creating in the target sandbox. Audiences can only be copied when all attributes in audience rules are enabled in the union schema. The necessary schemas must be moved and enabled for unified profile first.
Customer Data Platform
Schemas
Existing labels for consent and governance will be copied over in the same import job. User has the flexibility to import schemas without Unified Profile option enabled. The schema relationships edge case are not included in the package.
Customer Data Platform
Datasets
Datasets are copied with the unified profile setting disabled by default.
Customer Data Platform
Consent and Governance Policies
Add custom policies created by a user to a package and move them across sandboxes.

The following objects are imported but are in a draft or disabled status:

Feature
Object
Status
Import status
Source dataflow
Draft
Import status
Journey
Draft
Unified profile
Dataset
Unified profile disabled
Policies
Data governance policies
Disabled

Adobe Journey Optimizer objects abobe-journey-optimizer-objects

The table below lists Adobe Journey Optimizer objects that are currently supported for sandbox tooling and limitations:

Platform
Object
Supported Dependent Objects
Details
Adobe Journey Optimizer
Audience
An audience can be copied as a dependent object of the journey object. You can select create a new audience or reuse an existing one in the target sandbox.
Adobe Journey Optimizer
Schema
The schemas used in the journey can be copied as dependent objects. You can select create a new schema or reuse an existing one in the target sandbox.
Adobe Journey Optimizer
Merge policy
The merge policies used in the journey can be copied as dependent objects. In the target sandbox, you cannot create a new merge policy, you can only use an existing one.
Adobe Journey Optimizer
Journey

The following objects used in the journey are copied as dependent objects. During the import workflow, you can select Create new or Use existing for each:

  • Audiences
  • Schemas
  • Custom actions
  • Events
  • Fragments
  • Content templates
  • Canvas details
  • Custom actions: When selecting Use existing during the import process when copying a journey to another sandbox, the existing custom actions you select must be the same as the source custom action. If they are not the same, the new journey will have unresolvable errors.
  • The events and event details used in the journey are copied. It will always create a new version in the target sandbox.
Adobe Journey Optimizer
Action
Email and push messages used in the journey can be copied as dependent objects. The channel action activities used in the journey fields, which are used for personalization in the message, are not checked for completeness. Content blocks are not copied.

The update profile action used in the journey can be copied. Custom actions can be added to a package independently. Action details used in the journey are also copied. It will always create a new version in the target sandbox.
Adobe Journey Optimizer
Custom Actions

Custom actions can be added to a package independently. Once a custom action is assigned to a journey, it can no longer be edited. To make updates to custom actions, you should:

  • move custom actions prior to migrating a journey
  • update configurations (such as request headers, query parameters, and authentication) for custom actions post migration
  • migrate journey objects with the custom actions you added during the first step
Adobe Journey Optimizer
Content template
A content template can be copied as a dependent object of the journey object. Standalone templates allow you to easily reuse custom content across Journey Optimizer campaigns and journeys.
Adobe Journey Optimizer
Fragment
All nested fragments.
A fragment can be copied as a dependent object of the journey object. Fragments are reusable components that can be referenced in one or more emails across Journey Optimizer campaigns and journeys.
Adobe Journey Optimizer
Campaigns

The following objects used in the campaign are copied as dependent objects:

  • Campaigns
  • Audiences
  • Schemas
  • Content templates
  • Fragments
  • Message/Content
  • Channel configuration
  • Unified decision objects
  • Experiment settings/variants
  • Campaigns can be copied along with all items related to the profile, audience, schema, inline messages, and dependent objects. Some items are not copied, such as data usage labels and language settings. For a complete list of objects that cannot be copied, refer to the exporting objects to another sandbox guide.
  • The system will automatically detect and resuse an existing channel configuration object in the target sandbox if an identical configuration exists. If no matching configuration is found, the channel configuration is skipped during import, and users must manually update the channel settings in the target sandbox for this journey.
  • Users may reuse existing experiments and audiences in the target sandbox as dependent objects of selected campaigns.

Surfaces (for example, presets) are not copied over. The system automatically selects the closest possible match on the destination sandbox based on the message type and surface name. If there are no surfaces found on the target sandbox, then the surface copy will fail, causing the message copy to fail because a message requires a surface to be available for setup. In this case, at least one surface needs to be created for the right channel of the message in order for the copy to work.

Custom identity types are not supported as dependent objects when exporting a journey.

Export objects into a package export-objects

NOTE
All export actions are recorded in the audit logs.
NOTE
You can only import a package if you have permission to access the objects.

This example documents the process of exporting a schema and adding it to a package. You can use the same process to export other objects, for example, datasets, journeys, and many more.

Add object to a new package add-object-to-new-package

Select Schemas from the left navigation and then select the Browse tab, which lists the schemas available. Next, select the ellipsis (...) next to the selected schema, and a dropdown displays controls. Select Add to package from the dropdown.

List of schemas showing the dropdown menu highlighting the Add to package control.

From the Add to package dialog, select the Create new package option. Provide a Name for your package and an optional Description, then select Add.

The Add to package dialog with Create new package selected and highlighting Add.

You are returned to the Schemas environment. You can now add additional objects to the package you created by following the next steps listed below.

Add an object to an existing package and publish add-object-to-existing-package

To view a list of the available schemas, select Schemas from the left navigation and then select the Browse tab. Next, select the ellipsis (...) next to the selected schema to see control options in a dropdown menu. Select Add to package from the dropdown.

List of schemas showing the dropdown menu highlighting the Add to package control.

The Add to package dialog appears. Select the Existing package option, then select the Package name dropdown and select the package required. Finally, select Add to confirm your choices.

Add to package dialog, showing a selected package from the dropdown.

The list of objects added to the package is listed. To publish the package and make it available to be imported into sandboxes, select Publish.

A list of objects in the package, highlighting the Publish option.

Select Publish to confirm to publication of the package.

Publish package confirmation dialog, highlighting the Publish option.

NOTE
Once it has been published, the package’s contents cannot be changed. To avoid compatibility problems, ensure that all necessary assets have been selected. If changes must be made, you are required to create a new package.

You are returned to the Packages tab in the Sandboxes environment, where you can see the new published package.

List of sandbox packages highlighting the new published package.

Import a package to a target sandbox import-package-to-target-sandbox

NOTE
All import actions are recorded in the audit logs.

To import the package into a target sandbox, navigate to the Sandboxes Browse tab and select the plus (+) option beside the sandbox name.

The sandboxes Browse tab highlighting the import package selection.

Using the dropdown menu, select the Package name you want to import to the targeted sandbox. Add a Job name, which will be used for future monitoring. By default, unified profile will be disabled when the package’s schemas are imported. Toggle Enable schemas for profile to enable this, then select Next.

The import details page showing the Package name dropdown selection

The Package object and dependencies page provides a list of all assets included in this package. The system automatically detects dependent objects that are required for successfully importing selected parent objects. Any missing attributes are displayed at the top of the page. Select View details for a more detailed breakdown.

The Package object and dependencies page shows missing attributes.

NOTE
Dependent objects can be replaced with existing ones in the target sandbox, which allow you to reuse existing objects rather than creating a new version. For example, when you import a package including schemas, you can reuse existing custom field group and identity namespaces in the target sandbox. Alternatively, when you import a package including Journeys, you can reuse existing segments in the target sandbox.
Sandbox tooling does not currently support updating or overwriting existing objects. You may choose to create a new object, or continue to use the existing object without modifications.

To use an existing object, select the pencil icon beside the dependent object.

The Package object and dependencies page shows a list of assets included in the package.

The options to create new or use existing are displayed. Select Use existing.

The Package object and dependencies page showing dependent object options Create new and Use existing.

The Field group dialog shows a list of field groups available for the object. Select the field groups required, then select Save.

A list of fields shown on the Field group dialog, highlighting the Save selection.

You are returned to the Package object and dependencies page. From here, select Finish to complete the package import.

The Package object and dependencies page shows a list of assets included in the package, highlighting Finish.

Export and import an entire sandbox

NOTE
Currently, only Real-time Customer Data Platform objects are supported when exporting or importing an entire sandbox. Adobe Journey Optimizer objects such as journeys are not supported at this time.

You can export all supported object types into a full sandbox package, then import the package across various sandboxes to replicate object configurations. For example, this functionality allows you to:

  • Reimport a sandbox to reproduce all of the object’s configurations if you need to reset the sandbox
  • Import the package into other sandboxes and utilize it as a blueprint sandbox to accelerate the development process.

Export an entire sandbox export-entire-sandbox

To export an entire sandbox, navigate to the Sandboxes Packages tab and select Create package.

The Sandboxes Packages tab highlighting Create package.

Select Entire sandbox for the Type of package in the Create package dialog. Provide a Package name for your new package and select the Sandbox from the dropdown. Finally, select Create to confirm your entries.

The Create package dialog showing completed fields and highlighting Create.

The package is created successfully, select Publish to publish the package.

List of sandbox packages highlighting the new published package.

You are returned to the Packages tab in the Sandboxes environment, where you can see the new published package.

Import the entire sandbox package import-entire-sandbox-package

NOTE
All objects will be imported into the target sandbox as new objects. It is best practice to import a full sandbox package into an empty sandbox.

To import the package into a target sandbox, navigate to the Sandboxes Browse tab and select the plus (+) option beside the sandbox name.

The sandboxes Browse tab highlighting the import package selection.

Using the dropdown menu, select the full sandbox using the Package name dropdown. Add a Job name, which will be used for future monitoring and an optional Job description, then select Next.

The import details page showing the Package name dropdown selection

NOTE
You must have full permissions to all of the objects included in the package. If you do not have permissions, the import operation will fail and error messages will appear.

You are taken to the Package object and dependencies page where you can see the number of objects and dependencies that are imported and excluded objects. From here, select Import to complete the package import.

The Package object and dependencies page shows the inline message of object types not supported, highlighting Import.

Allow some time for the import to complete. The time to complete can vary depending on the number of objects in the package. You can monitor the import job from the Sandboxes Jobs tab.

Monitor import details view-import-details

To view the imported details, navigate to the Sandboxes Jobs tab and select the package from the list. Alternatively, use the search bar to search for the package.

The sandboxes Jobs tab highlights the import package selection.

Select View import summary from the right details pane in the Jobs tab in the Sandboxes environment.

The sandboxes Imports tab highlights the View import details selection in the right pane.

The Import summary dialog shows a breakdown of the imports with progress as a percentage.

NOTE
You can view a list of objects by navigating to specific inventory pages.

The Import details dialog showing a detailed breakdown of the imports.

When your import is complete, a notification is received in the Experience Platform UI. You can access these notifications from the alerts icon. You can navigate to troubleshooting from here if a job is unsuccessful.

Transfer iterative object configurations updates across sandboxes via sandbox tooling move-configs

You can use sandbox tooling to transfer object configurations between different sandboxes. Previously, configuration updates to your objects (such as schemas, field groups, and data types) had to be manually recreated or reimported in order to be transferred to other sandboxes. With this capability, you can use sandbox tooling to accelerate your workflows and reduce potential errors by seamlessly transferring your configuration updates across different sandboxes.

A diagram that displays how updates are moved across sandboxes.

TIP
Ensure that you have the following prerequisites before attempting to transfer your object configurations across different sandboxes.
  • The appropriate permissions to access sandbox tooling.
  • A newly created or updated object (such as a schema) in your source sandbox.
recommendation-more-help

Supported object types for update operation

The following are supported object types for update:

  • Schemas
  • Field groups
  • Data types
Supported updates
Unsupported updates
  • Adding new fields/field groups to the resource.
  • Making a required field optional.
  • Introducing new required fields.
  • Introducing a new relationship field.
  • Introducing a new identity field.
  • Changing the resource’s display name and description.
  • Removing previously defined fields.
  • Redefining existing fields when schema is enabled for Real-Time Customer Profile.
  • Removing or restricting previously supported field values.
  • Moving existing fields to a different location in the schema tree – this will create a new field in the target sandbox, but the previous field will not be removed.
  • Enabling or disabling the schema to participate in Profile – this operation will be skipped in diff comparison.
  • Access control labels.

Follow the steps below to learn how to use sandbox tooling to transfer your object configurations across different sandboxes.

Previously imported objects

Follow these steps if your use case involves existing objects in your source sandbox that require configuration updates, after having already been packaged and imported to other sandboxes.

First, update the object in your source sandbox. For example, navigate to the Schemas workspace, select your schema, and add a new field group.

The schema workspace with an updated schema.

Once you have updated your schema, navigate to Sandboxes, select Packages, and then locate your existing package.

The sandbox tooling interface with a package selected

Use the packages interface to verify your changes. Select Check for updates to view any changes to the artifacts in your package. Next, select View diff to receive a detailed summary of all the changes conducted against your artifacts.

The package interface with the view diff button selected.

The View diff interface appears. Refer to this toll for information on your source and target artifacts, as well as the changes to be applied to them.

The summary of changes.

During this step, you can also select Summarize with AI for a step-by-step summary of all changes.

The summary with AI-enabled.

When ready, select Update package and then select Confirm in the pop up window that appears. Once the job is complete, you can refresh the page and select View history to verify the version of your package.

The confirmation window.

To import your changes, navigate back to the Packages directory and select the ellipses (...) beside your package, then select Import package. Experience Platform auto-selects Update existing objects. Verify the changes, and then select Finish.

NOTE
All dependent objects are automatically updated in the target sandbox as part of this workflow.

The import objective interface.

To further validate your import process, navigate to your target sandbox and manually view the updated object from within that sandbox.

Objects created manually in target sandbox

Follow these steps if your use case involves applying configuration changes to objects that were manually created in separate sandboxes.

First, create and publish a new package with your updated object.

Next, import your package to the target sandbox that contains the objects that you also want to update. During the import process, select Update existing objects and then use the object navigator to manually select the target objects that you want your updates to apply to.

NOTE
  • It is optional to select a target mapping in a different sandbox for dependent objects. If none is selected, a new one is created.
  • For identity namespace, the system auto-detects if a new identity needs to be created if an existing one needs to be reused in the target sandbox.

The import objective interface with placeholders for the target objects to be updated.

Once you have identified the target objects that you want to update, select Finish.

The target objects selected.

Video tutorial

The following video is intended to support your understanding of sandbox tooling, and outlines how to create a new package, publish a package, and import a package.

Transcript
In this video, we will showcase how Sandbox Tooling can drastically help you reduce time to value and optimize your development lifecycle, enabling customers and implementation teams to replicate successful configurations across multiple sandboxes effortlessly. In the typical development cycle, you often create objects like schemas, audiences, and journeys. Unfortunately, replicating those objects from the development sandbox to other sandboxes is painstakingly manual and repetitive. But by introducing the Sandbox Tooling in Adobe Realtime CDP and Adobe Journey Optimizer, we bring you an innovative solution, packages. These packages allow for a smooth and seamless export and import of objects you add to them between different sandboxes. Now, let’s dive into a practical demonstration. ImagineLuma, a global airline company, is interested in sending a promotional email to their US Gold loyalty members, who have visited their website but have yet to book a ticket. Start in Luma development sandbox. Once data engineers and marketers build and test the required artifacts for the promotional email, I can create a package and start adding loyalty schemas to it. I can also keep adding artifacts to the package as needed, such as the PromotionJourney object. Once I have added all artifacts to the package, I can now go to the package inventory page and review it. Then, when I confirm all my artifacts are there, I can publish the package to make it ready for import into other target sandboxes. The package is available on the organizational level to be imported to various target sandboxes that are representing different business units, brands, teams, and geographies. I will switch to the Luma UI sandbox to import this package into the production sandbox. Click Import Action on the package. In the import workflow, select the target sandbox as Luma US. In the next step, I can review all assets included in the package. And what’s even more powerful, the system will auto-detect the dependent objects that are required for importing the selected artifacts. I can also choose to replace the dependent objects with an existing one in the target sandbox. This is important to help reduce object proliferation when not necessary. Monitoring and alerts are enabled to provide transparency for both package export and import jobs. I will also get a notification. When I see the package is successfully imported to Luma UI sandbox, I can go to the Schema, Audience, and Journey Browse pages to validate all artifacts are successfully created. Also worth noting is that all governance and consent labels added on schemas and audiences are copied over in the same import job. All export import operations are recorded in the audit log, ensuring your business is effectively compliant with corporate data stewardship policies and regulatory requirements. Sandbox tooling is a foundational capability that supports both real-time CDP and Journey Optimizer objects. Thank you for watching this demo.

Next steps

This document demonstrated how to use the sandbox tooling feature within the Experience Platform UI. For information on sandboxes, see the sandbox user guide.

For steps on performing different operations using the Sandbox API, see the sandbox developer guide. For a high-level overview of sandboxes in Experience Platform, refer to the overview documentation.

e243ad8f-a318-46b3-9930-159a80f82b42