# Set up config modifiers

A <u>**config modifier**</u> contains custom instructions for processing data at an indicated log processing stage. [Learn more about config modifiers](/how-to-use-redox/change-data-with-config-modifiers).

## Prerequisites

- All environment users can view config modifiers. However, a user must be assigned to an <u>**engineer**</u> or a <u>**support**</u> role to manage config modifiers. [Learn about user roles](/basics/managing-access-for-your-redox-organization/what-are-user-roles).
- To create a config modifier within log inspector, you must have logs for the subscription you need a config modifier for.

## View config modifiers

Follow these steps to view any existing config modifiers in your environment.

1. Log in to the Redox dashboard.
2. From the navigation menu, click the **Operations** drop-down.
3. The Operations options expand. Click the **Config modifiers** option.


![The Config modifiers option is a sub-option under the Operations tab.](https://images.ctfassets.net/cl3wt5ehhnlv/6k2ZCpXbxLAM5mAOi2g9Ff/02f2b573540ecfd7af4df0920b88323d/side-nav-operations-config-modifiers.png)

*Config modifiers in the side nav*


4. All existing config modifiers in the environment appear. 


![A table contains all the environment’s config modifiers and their related details.](https://images.ctfassets.net/cl3wt5ehhnlv/3rgO4L0ednH1UTKtbunvzk/63f763ee89273dd6986851abd1eadb17/config-modifiers-view.png)

*View existing config modifiers*


5. (Optional) Use the **filters** at the top of the page to narrow down the list of config modifiers. 
   1. <u>Search</u>: Type in a config modifier’s name into the search bar. 
   2. <u>Connection</u>: Pick from the list of available connections. 
   3. <u>Data model</u>: Pick from the list of data models and FHIR resources. You can only pick one data model or resource at a time. 
   4. <u>Subscription</u>: Pick from the list of source and destination combinations. This is useful if you’re searching for a specific config modifier link.  


> **Result tips**
>
> These are `AND` filters, so all populated filters apply to the search. 
>
> You can share the list of results with other users in the organization by sharing the URL of the page. The URL updates based on the applied filters, so the user you share with will see the same view you do. 




![A user clicks through the filters and types a keyword into the search field to narrow down the config modifier results. ](https://images.ctfassets.net/cl3wt5ehhnlv/4Q0Fs4FNAV4sQXGT8mRG7J/1af77b0324483c0d346675f29131df14/config-modifier-search-filters.gif)

*Config modifier filters*


6. (Optional) Click on a **config modifier** **row** to view the <u>Details</u> page, which includes the name, version, selector path, flavor, created and updated dates, and links.

## Create a config modifier

There are two places you can create config modifiers: 

1. <u>Operations</u> \> <u>Config modifiers</u> tab: Create a config modifier without an existing log or live traffic. This option is useful if you’re configuring before go-live. 
2. <u>Log inspector</u>: Create a config modifier within the context of a log. This option is useful if you’re responding to an issue with live traffic and want to implement logic reactively.  

In both options, <u>**Config Modifier Assistant**</u> is available for writing the schema and testing is optional. Review the table below for differences. 

|  | **Config modifier tab** | **Log inspector** |
| --- | --- | --- |
| Best when | You have similar subscriptions but want to create or multi-link config modifiers before go-live. | You need to create config modifiers within the context of live traffic. |
| Multi-linking availability | Yes You can select one or more subscriptions to link to when you create. | No You have to select one log and subscription at a time to create. |
| Copy from an existing config modifier | The **Copy** option is available in the config modifiers table, in the three-dots icon of the config modifier you want to copy. | The **Copy from existing** option is available when you click any config modifier tab in the log stages list. |
| Write or choose the selector path | You must write the selector path from scratch since this is outside the context of a subscription. | You can write or choose the selector path from a drop-down with options based on the subscription you're in. |
| Provide a sample payload | You must provide your own sample JSON payload to use <u>Config Modifier Assistant</u> or to test before saving. | The selected log provides a sample JSON payload. |

<details>
<summary>Option 1: Create in Config modifiers tab</summary>

Follow these instructions to create and link a config modifier in the <u>**Operations**</u> \> <u>**Config modifiers**</u> tab. 

1. From the navigation menu, click the **Operations** drop-down.
2. The Operations options expand. Click the **Config modifiers** option.


![The Config modifiers option is a sub-option under the Operations tab.](https://images.ctfassets.net/cl3wt5ehhnlv/6k2ZCpXbxLAM5mAOi2g9Ff/02f2b573540ecfd7af4df0920b88323d/side-nav-operations-config-modifiers.png)

*Config modifiers in the side nav*


3. All existing config modifiers in the environment appear. Click the **New** button.


![The New button appears on the top right of the Config modifiers page.](https://images.ctfassets.net/cl3wt5ehhnlv/6ZmiSkDyJhDuuPqZ74a40k/4a47b2f1fd377482066d38e3e417201f/config-modifier-new-button.png)

*Click the New button*


4. The <u>Create</u> form opens with the details on the left and the testing panel on the right. 
5. (_Optional_) You can link a config modifier as you create it or wait until later. To add one or more subscription links, click the **Add a subscription** button. 
   1. From the <u>Connection</u> drop-down, select the **connection** you want to create a config modifier for.
   2. Click the <u>Subscription</u> drop-down. A modal opens with a list of the selected connection's subscription(s). Click the **radio button** of the subscription you want, then click the **Select** button. 


> **Link one subscription at a time**
>
> While you can link to multiple subscriptions, you can only select one subscription at a time. 


   3. (_Optional_) Click the <u>Event type</u> drop-down to select which **event type(s)** to link to. By default, <u>All</u> event types are selected. 
   4. From the <u>Processing</u> drop-down, select the **log stage** to link the config modifier to. [Review our technical reference below](https://docs.redoxengine.com/how-to-use-redox/change-data-with-config-modifiers/set-up-config-modifiers/#technical-reference-linking-config-modifiers) about how linking works. 
   5. Click the **Link** button. 


![A user selects the connection, subscription, and processing location for the new config modifier.](https://images.ctfassets.net/cl3wt5ehhnlv/5PNsxgKDdRGem1qXEuHntX/33e564c2c79d1488ecf06e9cf66a2492/config-modifier-create-linked-subscriptions.gif)

*Add a subscription*


   6. Click the **Add another** button to create another link. 
6. In the <u>Name</u> field, enter a human-friendly **name** for your config modifier. 
7. In the <u>Flavor</u> field, select the **radio button** for either **Put** or **Delete**. 
Remember that <u>Put</u> either writes new data or replaces existing data in a payload, while <u>Delete</u> removes specific parts of a payload.
8. In the testing panel, paste a **sample JSON payload**. For <u>Put</u> flavors, you must provide this payload before using <u>**Config Modifier Assistant**</u> to write the schema or testing. If you have existing traffic, you can get this from a log ([learn how to search for logs](/how-to-use-redox/search-for-logs)).
9. In the <u>Selector</u> field, enter the JSON path to define the scope of the config modifier schema and point to the field the modifier should act on. [Learn more about selector paths](/how-to-use-redox/change-data-with-config-modifiers/choose-or-write-config-modifier-selectors).
10. (Only for <u>Put</u> flavors) In the <u>Schema</u> field, enter the set of keywords with instructions for what changes to make when applying the config modifier. [Learn how to build a config modifier](/how-to-use-redox/change-data-with-config-modifiers/build-a-config-modifier-schema). 
To use <u>**Config Modifier Assistant**</u>, click the **Help me write** button. This AI assistant knows our coding language and builds a schema when you enter a natural language prompt. You must have a selector and sample payload populated to use the AI assistant. 


![A user creates a config modifier to remove the facility code from PatientAdmin events.](https://images.ctfassets.net/cl3wt5ehhnlv/2nxJ1aNJxtRvKcaO3XUqfr/f0c36809cc90463383d6b63ae9ff4b4e/config-modifier-create.gif)

*Create a delete flavor config modifier*


11. (_Recommended_) Test the config modifier. 
    1. In the testing panel, select whether the sample payload should reflect the **initial payload** or **processed payload**. 
    2. Click the **Test** button to preview the impact this new config modifier would have on the selected log. Review the processing snapshots below to see what would change. 


![A user pastes a raw payload and tests the new config modifier. ](https://images.ctfassets.net/cl3wt5ehhnlv/1Ecx5bkKl8zvPdprRK5sqo/1224f6e38355cb497c219fc5e78e517c/config-modifier-test.gif)

*Test a config modifier*


12. Click the **Create** button. 


</details>

<details>
<summary>Option 2: Create and link in log inspector</summary>

Follow these instructions to create and link a config modifier within <u>**log inspector**</u>. 

1. Log in to the Redox dashboard.
2. From the navigation menu, click the <u>Logs</u> page.
3. By default, the search bar and filters display, along with any logs from the last seven days. Use search terms, filters, or both to find a log from the subscription you want to link a config modifier to. Click the relevant **log** in the list. 
4. The log details display on the right, which includes the log ID and the processing stages the log went through. Click the **Log inspector** button. 
5. Log inspector runs and opens a new page with the source, destination, timestamp, and operation details ([review operation types](/basics/data-exchange-with-redox/operations-for-data-processing)). Operations display in their sequential processing order. 


![A user picks a log and opens log inspector.](https://images.ctfassets.net/cl3wt5ehhnlv/nmq2itBQLRMWKtovOinnR/4b8a3c5fcc493af36b3c08991365b429/Logs-log-inspector-open.gif)

*Pick a log and open log inspector*


6. Select the **config modifier tab** at the processing location you want to link a config modifier to. [Review our technical reference below](https://docs.redoxengine.com/how-to-use-redox/change-data-with-config-modifiers/set-up-config-modifiers/#technical-reference-linking-config-modifiers) about how linking works. 


![A user selects the post-processing, outbound stage to create a new config modifier.](https://images.ctfassets.net/cl3wt5ehhnlv/1LS4QVSBmbJPFW89FulWlX/337afe6cd82565e81bb33be5763c6036/Logs-log-inspector-create-new-config-modifier.gif)

*Create a new config modifier*


7. Any existing config modifiers for that processing location display. Click the **Create new** button or **Copy from existing** option from the drop-down menu. 


> **No create option**
>
> If you don't see the option to create a new config modifier, it means your organization doesn't own that processing location. You may view config modifiers that your connection has created and linked. However, you won't be able to edit or create config modifiers for their processing location(s). 


8. The <u>Settings</u> form opens. Fill out these fields: 
   1. <u>Name</u>: Enter a human-friendly name for your config modifier. 
   2. <u>Subscription</u>: This field is automatically populated with the subscription that the link relates to. If you didn’t mean to link a config modifier for this subscription, click the **Cancel** button. Then find a log for the subscription you want to add a config modifier to.  
   3. <u>Flavor</u>: Select the **radio button** for either **`Put`** or **`Delete`**. 
Remember that <u>`Put`</u> either writes new data or replaces existing data in a payload, while <u>`Delete`</u> removes specific parts of a payload.
   4. <u>Selector</u>: Enter or copy the JSON path to define the scope of the config modifier schema and point to the field the modifier should act on. 


> **Selector path**
>
> _Tip_: In the log inspector payload, click on a field to automatically copy its JSON path. [Learn more about choosing or writing a selector](/how-to-use-redox/change-data-with-config-modifiers/choose-or-write-config-modifier-selectors).


   5. <u>Event types</u>: By default, <u>all</u> event types are selected. If you want to apply the config modifier only to certain event types, click the field and select the relevant **event type(s)**. 


> **Available event types**
>
> The available event type(s) are based on the log you're currently viewing in log inspector. All event type(s) of the related subscription's data model or FHIR resource display in the drop-down list. 
>
> If you didn't mean to link a config modifier for this subscription, click the **Cancel** button. Then find a log for the subscription you want to add a config modifier to.
>
> If you select an event type that doesn't include the log you're currently viewing in log inspector, a warning displays. You can still create the config modifier, but the warning lets you know that the config modifier won't actually apply to the selected log. 
>

  


> **Editing selected event types**
>
> If you’re editing the config modifier, you can click the X to remove an event type. However, if you remove all the selected event types, this field resets to the default of <u>all</u> event types selected. 


   6. <u>Schema</u>: (only for <u>`Put`</u> flavors) Enter the set of keywords with instructions for what changes to make when applying the config modifier. [Learn how to build a config modifier](/how-to-use-redox/change-data-with-config-modifiers/build-a-config-modifier-schema). Or click the **Help me write** button to use Config Modifier Assistant. 


![A user fills out the config modifier settings.](https://images.ctfassets.net/cl3wt5ehhnlv/LsZvDmuvS5CU5wAZT9Ico/bfaff5b3fd0d7d73a3ca07d721e8a2c4/Log-inspector-config-modifier-enter-settings.gif)

*Fill out config modifier settings*


9. (_Recommended_) Test your changes. 
   1. Click the **Test changes** button to preview the impact this new config modifier would have on the selected log. Review the processing snapshots below to see what would change. 


![A user tests the config modifier and reviews what changed in the input and output payloads.](https://images.ctfassets.net/cl3wt5ehhnlv/1I6q0HR3Nyi0TXo87KrKhI/83e4d040c39985ee7d2408e9d75e34b7/Log-inspector-config-modifer-test-changes.gif)

*Test changes*


   2. Click the **Run log inspector** button to re-run _all_ the operations in this log to see how the config modifier works with all the operations in a log. 


![A user runs log inspector.](https://images.ctfassets.net/cl3wt5ehhnlv/6ZsSpAgPD5oVL08VJnNOVA/204909c950035de6b91d29247a236c07/Log-inspector-run.gif)

*Test changes - Run log inspector*


10. Once you’re finished testing, click the **Create** button. In a production environment, a confirmation modal appears. Click the **Apply** button. This links the config modifier to the selected subscription and event type(s) for real-time traffic.
If you click the **Cancel** button, any changes are discarded. 


> **One link per config modifier**
>
> You can only link a config modifier once. However, if you want to re-use the config modifier settings or schema, you can always copy from an existing config modifier to create a new one. 




![A user clicks the Create button to save and apply the config modifier to production traffic.](https://images.ctfassets.net/cl3wt5ehhnlv/3IItKqKMR15chVhm0My2CU/64edae02ec04d49546d48ef4fcffef7d/Log-inspector-config-modifier-create.gif)

*Click the Create button*


11. Repeat this process for any other config modifiers you want to create for this processing location. 
You can have multiple config modifiers for different paths at the same processing location. However, you can only create one config modifier per selector path. 
12. (Optional) You can link the same config modifier to multiple subscriptions by editing the config modifier links on the <u>**Operations**</u> \> <u>**Config modifiers**</u> tab.

</details>

## Edit a config modifier

Whenever you edit, you create a new version of the config modifier. You might want to promote or restore versions, in case of troubleshooting. 

> **Editing promoted assets**
>
> You can’t edit production assets if they’ve been promoted from staging. First edit the asset in staging, then re-promote to production.

1. Follow the steps to view config modifiers. 
2. Find the config modifier you want to edit and click anywhere in its **row.** 
3. The <u>Details</u> page opens. Under the <u>Config modifier details</u> section, click the **Edit** button.
4. The edit form opens so you can edit the subscription(s), name, flavor, selector, or schema. Edit any of the fields, then click the **Save** button.


> **Editing selected event types**
>
> If you’re editing the config modifier, you can click the X to remove an event type. However, if you remove all the selected event types, this field resets to the default of <u>all</u> event types selected. 




![A user edits the event type and schema of an existing config modifier.](https://images.ctfassets.net/cl3wt5ehhnlv/7AsXHh8sURxbrzOLiYE4bJ/84f4598768539b5b0ca58d151263a71d/Log-inspector-config-modifier-edit.gif)

*Edit a config modifier*


5. (_Optional_) Test your changes. Remember you must provide a sample payload to test with when creating or editing on the <u>Config modifiers</u> tab.
   1. If editing within <u>log inspector</u>, a sample payload is provided for you. In log inspector, you can re-run _all_ the operations to see how this config modifier works with all the operations in a log.  
6. Click the **Save** button. 
   1. If editing a config modifier with multiple links, a modal opens with affected subscriptions. Click the **Save changes** button to continue or the **Cancel** button to discard edits. 


![A modal opens with a list of linked subscriptions that will be affected by this edit. ](https://images.ctfassets.net/cl3wt5ehhnlv/KZHjYGueFBSUU6oHysqr8/22060db8640362e2751997496809a588/config-modifier-edit-affected-subscriptions.png)

*Review affected subscriptions*


   2. If editing within log inspector in a production environment, a confirmation modal opens. Click the **Apply** button. This immediately applies the edited config modifier to the selected subscription and event type(s) for real-time traffic. 
If you click the **Cancel** button, any changes are discarded. 


![A user applies the edits to a config modifier.](https://images.ctfassets.net/cl3wt5ehhnlv/2d0vQoMSjTtRIarth8DYpQ/e74ead3981ad5a30e7a92932843fd848/Log-inspector-config-modifier-edit-apply-changes.gif)

*Apply edits*


7. This creates a new version of the config modifier. If you’re editing a staging asset, you may need to re-promote to production. 

## Delete a config modifier

You must first delete any config modifier links in order to delete a config modifier. 

1. Follow the steps to view config modifiers. 
2. Find the config modifier you want to delete and click anywhere in its **row.** 
3. The <u>Details</u> page opens. Click the **Delete** button.


> **Can’t delete a linked config modifier**
>
> You can’t delete a config modifier that’s linked to a subscription. The <u>Delete</u> button is grayed out if there are any active links.
>
> Make sure to delete any links first to delete a config modifier.


4. A confirmation modal appears. Click the **Delete** button to proceed. 


![A user deletes a config modifier from the Details page.](https://images.ctfassets.net/cl3wt5ehhnlv/1yuKQOrYqbFCPWzojjJiqJ/72a31811e3eb85a0335dc219768f9f1b/config-modifiers-delete.gif)

*Delete a config modifier*



## Link a config modifier

Follow these instructions if you didn’t link a config modifier when creating or you want to add more links. A config modifier can be linked to multiple subscriptions. 

1. Follow the steps to view config modifiers. 
2. Find the config modifier you want to link and click anywhere in its **row.** 
3. The <u>Details</u> page opens. Fill out the fields under the <u>Links</u> section. 
   1. From the <u>Connection</u> drop-down, select the **connection** you want to link the config modifier to.
   2. Click the <u>Subscription</u> drop-down. A modal opens with a list of the selected connection’s subscription(s). Click the **radio button** of the subscription you want, then click the **Select** button. 


> **Link one subscription at a time**
>
> While you can link to multiple subscriptions, you can only select one subscription at a time. 


   3. (_Optional_) Click the Event type drop-down to select which **event type(s)** to link to. By default, <u>All</u> event types are selected. 
   4. From the Processing drop-down, select the **log stage** to link the config modifier to. [Review our technical reference below](https://docs.redoxengine.com/how-to-use-redox/change-data-with-config-modifiers/set-up-config-modifiers/#technical-reference-linking-config-modifiers) about how linking works. 
4. Click the **Link** button. 


![A user selects an existing config modifier and adds a second subscription link on the Details page.](https://images.ctfassets.net/cl3wt5ehhnlv/ST4khQ2s48TCyRVjLcodj/6edd521c76c3585a3e91d97b04a0c181/config-modifiers-add-link.gif)

*Add a link to a config modifier*


5. Repeat these steps for as many links as you need.  

## Manage links

1. Follow the steps to view config modifiers. 
2. Find the config modifier with link you want to review and click anywhere in its **row.** 
3. The <u>Details</u> page opens. Under the <u>Links</u> section, you can view, add, or delete links. 
   1. To view an existing link in context, click the **link** to open related logs. 


> **Default to all event types **
>
> You might have a config modifier with a link to only one event type. When you open the <u>Logs</u> page, the log filters automatically default to <u>all</u> event types. This means you might see logs without the given config modifier linked to it, so you may need to filter more specifically to find the right log.


   2. To add a new link, follow the steps for creating a link. 
   3. To delete an existing link, click the **three-dots** icon, then the **Delete** option. A confirmation modal opens. Click the **Delete** button to continue or the **Cancel** button to discard the changes. 


![A user deletes one of the existing links from the Details page.](https://images.ctfassets.net/cl3wt5ehhnlv/67q1SJk8PLt8I1TDhC2Bav/fecdded37b173eb42963a0f7663623ab/config-modifiers-delete-link.gif)

*Delete a config modifier link*



## Set processing order

If a subscription has multiple config modifier links, you can set the order that they should process in outside of log inspector. 

Config modifiers with no explicit order run under our standard logic: 

- The `put` flavor config modifiers execute before any `delete` flavors. 
- Within each of flavor category, the order is determined by the <u>**created at**</u> date. 
- If a group of config modifier links is only partially ordered, explicitly ordered ones run first, then unordered ones follow by <u>**created at**</u> date.

> **Processing order of one subscription**
>
> Processing order is scoped to individual subscriptions. Meaning, if you change the processing order of one subscription, it doesn't affect the processing order of another, even if they share config modifiers. 

1. Follow the steps to view config modifiers. 
2. Find the config modifier with link you want to manage and click anywhere in its **row.** 
3. Under the <u>Links</u> section, find the link you want to re-order and click the **three-dots** icon.
4. Click the **Edit processing order** option. 
5. A modal opens. Drag and drop the **links** in the order you want them to process in. 
6. Click the **Save order** button.


![A user reorders the config modifier links at the same processing location of a subscription.](https://images.ctfassets.net/cl3wt5ehhnlv/5x3zYYys6Mfr7rKGqrrmDN/f0fab4639fdb0cdbe973c3301f85e328/config-modifier-set-processing-order.gif)

*Set processing order*



## Promote a config modifier

After testing in staging, you can promote a config modifier to production. [Learn about promoting assets](/implementation-guide/promote-assets-in-your-redox-organization). 

1. Follow the steps to view config modifiers. 
2. From the <u>Environments</u> drop-down, make sure you’ve selected the **Staging** environment.


![The environment drop-down field in the top left corner of the Redox allows you to switch between environments.](https://images.ctfassets.net/cl3wt5ehhnlv/5fgoEIuUz7oSO5DrNXvJFw/39e6d7e79fe09106705e931ecd9b2ebc/Environment-select-staging.png)

*Select the staging environment*


3. Find the config modifier you want to promote and click anywhere in its **row.** 
4. The <u>Details</u> page opens. Click the **Promote** button.
5. A modal appears to let you know you’re exiting the staging environment and proceeding to the production environment. Click the **Proceed** button. Otherwise, click the **Cancel** button to discard the promotion. 


![A user promotes a staging config modifier to production. ](https://images.ctfassets.net/cl3wt5ehhnlv/5dhbrxZAcW5l50Wx6SqJoG/e1c2e19fd377cc1c281e11aaa2906cbf/Config-modifier-promote__1_.gif)

*Promote a config modifier to production*


6. The <u>Settings</u> page in the production environment opens. 
   1. To make any changes to the config modifier, click the **Go to Staging** button.


![The Go to staging button appears on the top right of the details.](https://images.ctfassets.net/cl3wt5ehhnlv/4mBT6iYF5gn444bMNbWxDQ/6f10668644da722ffeba9707f2ac84d2/Config-modifier-edit-in-staging.png)

*Go to staging to edit*


   2. A modal appears to confirm that you want to switch environments. Click the **Proceed** button to continue. 
   3. The config modifier settings page opens in the staging environment. Open the logs for that config modifier, then [follow the instructions to edit a config modifier](https://docs.redoxengine.com/permalink/6sZ0Y9XdnMRCyoSWlqscjM/#edit-a-config-modifier).


> **No edit button**
>
> Config modifiers can only be edited within log inspector. This means you won’t see an <u>Edit</u> button on the settings page in the staging environment; instead, you have to open logs related to the config modifier to begin editing.

 
   4. Once changes are successfully made, re-promote the config modifier to keep the assets in sync across environments. 
7. Next, add link(s) to subscriptions to apply the config modifier in your production environment.  

## Restore a config modifier version

You can restore a version of a config modifier that’s not currently in use. This might be helpful when troubleshooting to see where an error may have been introduced or to resolve an error by using a version that worked previously.    

1. Follow the steps to view config modifiers. 
2. From the list of existing config modifiers, click on the **config modifier** you want to update. 
3. The <u>Settings</u> page opens. Click the **Restore** button.


![A user clicks the Restore button to open the diff view. ](https://images.ctfassets.net/cl3wt5ehhnlv/12qgEn5cR7P2dd0kKjEls7/82e2ea2f63ae7b60fea74bc974f535bb/Config-modifier-restore-button__1_.gif)

*Click the Restore button*


4. A modal appears to restore a version. From the drop-down, select a **version** to restore. 


> **Restore notes**
>
> Restoring means activating a version that’s not in use. That means you can go backwards or forwards a version. 
>
> Keep in mind you can’t restore a version that’s already in use or an asset that’s been deleted. 

 
5. The diff view shows what’s different between the current and selected version. Review the differences. When finished, click the **Restore** button. 


> **Versions after editing**
>
> If you edit an asset after restoring a previously used version, a new version is created.
>
> For example, let’s say you were on version 3 and you restore version 2. Then you make and save edits to version 2. This creates version 4 of the asset. At that point, you can still restore to version 3 at any time.




![A user selects a version to restore and reviews the differences.](https://images.ctfassets.net/cl3wt5ehhnlv/4V1E2NDdjKLb4DexcRyqa9/f91260a8be9bf144c9c8fc117be77564/Config-modifier-compare-versions__1_.gif)

*Compare config modifier versions*


6. For promoted assets, restoring a version only applies to the current environment. If you restore a version in staging, you may need to re-promote the asset if you want to apply it to production as well. 


![The unpushed changes warning appears under the details. ](https://images.ctfassets.net/cl3wt5ehhnlv/IVs792pdLvjuGq5urRfof/f1242f00dd4fea89ca28dcc94c8e13c3/Config-modifier-unpushed-changes2.png)

*Unpushed changes*




![A warning appears on the table when a config modifier has out of sync versions. ](https://images.ctfassets.net/cl3wt5ehhnlv/5igzqxAFTZbgqrtHzAwf2A/255f5bbb8d7c0b8ae9798a767c87c5b5/Config-modifier-versions-out-of-sync.png)

*Out of sync versions*



> **Platform API endpoints**
>
> This article describes how to manage config modifiers in the <u>**Redox dashboard**</u>. To manage config modifiers via <u>**API**</u>, use these <u>**Redox Platform API**</u> endpoints instead:
>
> - [Create config modifier](https://docs.redoxengine.com/permalink/fe94b993-36c8-5cbd-a880-ae57ff2892ab-create-config-modifier)
> - [Update config modifier](https://docs.redoxengine.com/permalink/abfa3890-d795-51d5-b1a9-986030f4747d-update-config-modifier)
> - [Delete config modifier](https://docs.redoxengine.com/permalink/d46b5225-9c3f-56a9-b7d9-0573567b94f8-delete-config-modifier)
> - [Restore config modifier](https://docs.redoxengine.com/permalink/de847895-6d04-5b27-8e04-7eb92b904698-restore-config-modifier)
> - [Create link](https://docs.redoxengine.com/permalink/680432ad-7920-5288-bb88-a88f1cc36bd7-create-link)
> - [Update link](https://docs.redoxengine.com/permalink/ec494efc-1a57-53f4-a986-03123971c372-update-link)
> - [Delete link](https://docs.redoxengine.com/permalink/3c7403cc-5300-5718-b0f2-c5ec180dcabc-delete-link)
> - [Promote asset](https://docs.redoxengine.com/permalink/00e540fd-52b8-5bcd-8b56-e392e9db575e-promote-asset)

## Technical reference: Linking config modifiers

To run a config modifier, you must link it to the correct:

1. subscription
2. event type(s) within that subscription
3. log stage, or <u>**processing location**</u>

You can link config modifier(s) to the log stages your organization manages ([learn about log stages](https://docs.redoxengine.com/permalink/790exE7anSFdJdupyjnidt/#processing-stages-and-operations)), and so can your connection. 

In log inspector, you’ll see both source-managed and destination-managed tabs for config modifiers. These appear for each relevant processing stage. If you don't manage both sides of the exchange, you won't see tabs for processing locations if your connection hasn’t linked any config modifiers there. If they have, you’ll see the config modifiers they’ve created, but you won’t have permission to create config modifiers in their location.

### Source-managed versus destination-managed

Processing stages have two different parts for link config modifiers: one that’s <u>source-managed</u> and one that’s <u>destination-managed</u>. You can only link config modifiers to the part of the stage that your organization manages. 

For example, if your organization manages the source, you can’t link a config modifier to a destination-managed part of a processing stage.  

### Available stages

Available log stages are determined by the type of data exchange (i.e., async or sync) and whether your organization owns either the source, destination, or both. If you own both the source and destination, you can link to all of the listed stages.

#### Async traffic

- Post-processing, outbound
  - source-request (source-managed)
  - source-request (destination-managed)
  - destination-request (source-managed)
  - destination-request (destination-managed)

![There are four possible locations to link a config modifier to in post-processing.](https://images.ctfassets.net/cl3wt5ehhnlv/1ZiveUXzUpdLJlU7gGQUpE/08cf1bc998c9e261a715880da269983e/Log-stages-config-modifier-locations-post-processing.png)

*Available post-processing stages*

#### Sync traffic

- Post-processing, outbound (1st half of exchange)
  - source-request (source-managed)
  - source-request (destination-managed)
  - destination-request (source-managed)
  - destination-request (destination-managed)

![There are four possible locations to link a config modifier to in post-processing.](https://images.ctfassets.net/cl3wt5ehhnlv/1ZiveUXzUpdLJlU7gGQUpE/08cf1bc998c9e261a715880da269983e/Log-stages-config-modifier-locations-post-processing.png)

*Available post-processing stages*

- Pre-processing, inbound (2nd half of exchange)
  - destination-response (destination-managed)
  - destination-response (source-managed)

![There are two possible locations to link a config modifier to in pre-processing.](https://images.ctfassets.net/cl3wt5ehhnlv/NZd0S1f0pvFZ7xNJtfk4H/69f249a41fe729b07055a28663dbe67e/Log-stages-config-modifier-locations-pre-processing.png)

*Available pre-processing stages*

- Post-processing, inbound (2nd half of exchange)
  - source-response (source-managed)

![There is 1 possible location to link a config modifier to in the second half of post-processing.](https://images.ctfassets.net/cl3wt5ehhnlv/s6qTNAFciwNwjpqrZH0VE/30121a4d2100e3ae131f1ed68ce8dafd/Log-stages-config-modifier-locations-post-processing-2.png)

*Available post-processing, inbound stages*

> **Linking to available stages**
>
> If linking a config modifier in the Redox dashboard, only the available log processing stages appear. Your view might look different from your connection’s. 
>
> If linking a config modifier via API, you’ll get a validation error if you try to link to a stage that isn’t available to you. 

### Before or after Redox processing

The Redox <u>Process</u> stage(s) happen in the middle, both going to and back from a destination. This is when we convert data into a Redox data model or Redox FHIR resource format. 

You can’t link config modifiers to Redox <u>Process</u> stages. That means you have to decide whether to link before or after Redox processing. The location to link depends on your <u>selector</u>: 

- <u>Link before processing</u> if the selector exists in our standard data models or FHIR resources (i.e., your config modifier alters values, like timestamp format, or fields within the Redox format). Changes to values or formats of values are retained during Redox processing since you’re not moving fields around. 


> **Available stages for linking before Redox processing**
>
> <u>For async traffic</u>: 
>
> - source-request (source-managed)
> - source-request (destination-managed)
>
> <u>For sync traffic</u>: 
>
> - destination-response (source-managed)
> - destination-response (destination-managed)


- <u>Link after processing</u> if the selector _doesn’t_ exist in our standard data models or FHIR resources (i.e., your config modifier alters the shape of data or selectors outside of Redox formats). This is a safety precaution so that changes made by your config modifier don’t get unintentionally erased or ignored during Redox processing. Other changes that don’t fit in our standard formats might also be ignored.


> **Available stages for linking after Redox processing**
>
> <u>For async traffic</u>: 
>
> - source-response (source-managed)
> - destination-request (destination-managed)
>
> <u>For sync traffic</u>: 
>
> - destination-response (source-managed)
> - source-response (source-managed)
> - destination-response (destination-managed)
>   - If you need to link at the end of a sync exchange, i.e., source-response (destination-managed), talk to your Account Manager about your use case.




> **Expected data formats**
>
> A caveat to linking a config modifier _after_ Redox processing is that you must use the format that the destination receives data in. If you’re not familiar with non-Redox formats, you might have to do more work to figure out the destination format and how to change it.
>
> However, if you link a config modifier before Redox processing, you can use selectors already in a standard Redox data model or FHIR resource. In other words, we do the homework so you don’t have to.


