Resolving config value conflicts

Tray's config resolution feature allows you to manage conflicts in config values during project import.

The Config Resolution Modal shows only the values that clash between incoming and existing projects, giving a clear view of potential issues.

It explains how these differences will affect the destination project in the 'Effect' column.

By default, it uses the incoming project's config values.

You can set all existing project values together or pick and choose individually.

The following screenshot is from a project where we are using different form and sheet variables in our source (dev) project and destination (prod) project. In this case we wish to maintain the existing values in the destination so that it continues to work in production:

Displayed information:




Current resolution

Indicates which values are used in the current resolution

- incoming

- existing

- custom values

List of values

A list of config values where the incoming and existing values are different in the source and destination projects


The config key

Final value

The config value that will be applied after completing the project import

Edit resolution

(pencil icon)

You can set a different resolution method for each value individually

- incoming

- existing

- custom values


The potential impact on the existing project resulting from the selected config value resolution`

Updated - will overwrite an existing configuration value.

New - will introduce a new configuration item.

Deleted - will delete a config item, unused by incoming workflows.

Unused - the item is not used by any incoming workflows, it has been likely deleted in the incoming project.

no changes - existing configuration item will remain unaffected

Resolution options

  • "Set all to existing": applies all configuration values from the existing project.

  • "Set all to incoming": applies all configuration values from the incoming project.

  • Individual item settings: “Use incoming value”, “Use existing value”, "Custom value": enables users to specify individual values based on their preferences.


  • Value Specification

    • Newly introduced configuration items require specified values. You can choose to use the incoming value or specify a custom one. They can be empty strings but cannot be (not set)

  • Type Consistency

    • Updates in type from the incoming project are highlighted

    • Types must consistently match the incoming configuration


What information is shown in the config resolution modal?

The config resolution modal exclusively presents configuration values with conflicts between the incoming project and the existing ones. It shows the configuration values that will be applied to the project after import, illustrating how these values impact the destination project. The default values are set to those of the incoming project. You can adjust the resolution by selecting 'Set all to existing' or specifying values individually.

Why can't I see all the project's configuration values?

You may not see all the project's configuration values because the Config Resolution modal specifically displays conflicted values—those where the incoming configuration differs from the existing one. Values without conflicts, where the incoming and existing values match, are not shown in the modal.

How can I resolve config conflicts during the import process?

You can choose to set all values to existing or incoming project values, or specify values individually by selecting incoming or existing values, or specifying custom values.

What does the “Effect” represent?

The Effect highlights the potential impact on the existing project resulting from the selected resolution. It includes statuses like "No Change," "New," "Deleted," "Updated," and "Unused."

What does the "Final Value" represent?

The "Final Value" is the configuration value that will be applied after completing the project import.

When is a config item marked as "Unused"?

A config item is marked as "Unused" when it is not used by any incoming workflows. This occurs when a value has been deleted in the incoming config, but you have selected the existing or a custom non-empty config value instead of the incoming deletion.

Why do config keys and types have to match the incoming project config?

Config keys and types must consistently match the incoming project config to maintain compatibility with the functionality of incoming workflows.

Can I perform the config resolution at import via the API?

Yes, you can resolve configuration conflicts at import via the API. Utilize the exportProjectConfig endpoint to retrieve destination configuration information and pass resolved values in the importProject payload for seamless resolution. For more details, check the API documentation.