---
title: "Set up Microsoft Azure"
slug: "set-up-microsoft-azure"
abstract: "Overview of how to set up Microsoft Azure by registering the CDN, deploying the connector, and updating the entity mappings."
---
# Set up Microsoft Azure

The following section details the steps required to deploy resources to Azure using Windows PowerShell 7 and the Azure CLI. To view supported platforms, see [Azure Command-Line Interface (CLI) - Overview](https://docs.microsoft.com/en-us/cli/azure/).

When you deploy the connector to your Azure resource group, the following resources are created:

- App Service plan
- Application Insights
- Function app
- Logic apps
- CDN profile with endpoints
- Storage accounts

> [!note]
> You can [modify the translation mapping file](https://doc.sitecore.com/ch/en/users/content-hub/update-the-translation-mapping.html "Update the translation mapping") to support a custom key value map.

## Register Microsoft.Cdn in the Azure subscription

Microsoft.Cdn needs to be a registered application in the Azure subscription where the resources are going to be provisioned and deployed.

To register Microsoft.Cdn in the Azure Subscription:

1. Log into the Azure Portal.
2. Open the Azure subscription.
3. In the left pane, click **Resource providers**.
4. In the search bar on the right, search for and select *Microsoft.Cdn* and then click **Register**.

> [!note]
> If you do not have the required permissions, contact Microsoft Support.

## Deploy the connector to Azure

To deploy the connector to Azure:

1. If you have not done so already, [download and extract](https://dev.sitecore.net/Downloads/Sitecore_Connect_for_Microsoft_Dynamics_365_Commerce.aspx) *Sitecore Connect for Microsoft Dynamics 365 Commerce*.
2. Navigate to the *configs* folder and open the *azure.productsyn.stage.config.json* file.
3. Update the placeholders with your Azure tenant, resource group, and resource details.
4. Open the the **azure.imageproxy.stage.config.json file** found in the same *configs* folder and then update the placeholders with your Azure tenant, resource group, Content Hub base URL, GraphQL endpoint URL, GraphQL token, and so on.

    > [!important]
    > The *stageName* property is used to generate the required connector resources. This property is currently limited to four alphanumeric characters. Resource names can be further configured in **/templates/logic.apps.productsync.arm.json’ and ‘/templates/productsync.stage.arm.json’, ‘/templates/imageproxy.stage.arm.json**.

5. Save your changes.
6. Run PowerShell 7.
7. In PowerShell, change directories to the extracted zip location and run **.\\deploy.ps1**. The Azure resource group is updated as shown in the following example.

    ![Updated Azure resource group](https://doc.sitecore.com/api/markdown-image/ch/en/users/content-hub/images/updated_azure_resource_group.png)

> [!note]
> The CDN endpoint (*func-imageproxy-endpoint-int-001*) contains the CDN endpoint URL, which serves as the URL mapping endpoint.

## Update the entity mapping definitions

Before the connector can begin synchronizing products from Dataverse, you must update the entity mapping configuration files that are provided with the connector. These mapping files contain the following sample data. You must replace the values prepended *cr15a_* with your dual-write table map values.

The following table describes the attributes in the product entity map configuration file that you must update to map with the incoming sync request.

| **Attribute** | **Description** |
| --- | --- |
| *dataSource* | This property is used to retrieve the OData entity from Dataverse. Update this property with your Dataverse entity naming conventions. |
| *operations* | There are three types of operations supported on each entity map: create, update, and delete. |
| *entity.sourceIdentifier* | The *dataSource* property that represents the internal Id of the entity in Dataverse. |
| *entity.targetIdentifier* | The target Content Hub entity identifier. This is the internal id of the entity in Sitecore Content Hub™. |
| *entity.targetType* | The target Content Hub entity definition name. |
| *entity.localization* | This property contains localization mapping settings for Content Hub entities. |
| *entity.localization.source* | The source property for localization on the OData entity *dataSource* from Dataverse. |
| *entity.localization.mapping* | A key value map of source D365 language codes mapped with target Content Hub language codes. |
| *entity.properties* | The *entity.properties* array provides the ability to map the source attribute in Dataverse to the target attribute on the Content Hub entity. |
| *entity.properties.source* | The source property on the OData entity *dataSource* from Dataverse. |
| *entity.properties.target* | The target entity member in Content Hub that stores the source data. |
| *entity.properties.localized* | Boolean setting that informs the mapping function that the property has localized values. |
| *entity.properties.isRequired* | Boolean setting that informs the mapping function that the property is required in order to sync with Content Hub. |
| *entity.properties.readOnly* | Boolean setting that informs the mapping function that the attribute should be read-only by default in Content Hub. |
| *entity.properties.sourceTemplate* | A key value map of D365/Dataverse values mapped with Content Hub values. |
| *entity.properties.strategy* | Required when using *sourceTemplate*. Supported types are *AddKeyValue* and *RemoveByKey* |
| *relations* | List of mapped relationship members defined for a Content Hub entity definition. Content Hub taxonomy and entity relationships are managed here. |
| *relations.relationType* | The target Content Hub entity relation member. The Content Hub relationship type is used for linking existing Content Hub entities. |
| *relations.relationRole* | The role of the entity created or updated in Content Hub. |
| *relations.sourceIdentifier* | The source identifier attribute on the OData entity *dataSource* from Dataverse. |
| *relations.sourceIdentifierTemplate* | The template used to map the *sourceIdentifier* with the target entity in Content Hub. |
| *relations.sourceIdentifierDefault* | The default value set in Content Hub when there is no provided sourceIdentifier. |
| *relations.targetType* | The target Content Hub entity definition. |
| *relations.targetIdentifier* | The target Content Hub entity identifier attribute. |
| *relations.mapping* | A key value map of D365/Dataverse values mapped with Content Hub values. |

> [!note]
> Back up the mapping files prior to making any updates.

To update the entity mapping definitions:

1. Log into your [Microsoft Azure portal page](https://portal.azure.com/#home).
2. Locate the **Resource Group** created during the installation of the connector.
3. Open the storage account with the *stmapconfig* prefix and click **Containers** in the left panel.
4. Click the **mappings** container. The **mappings** container contains the available mapping JSON files:
    - *product-mapping-config.json*
    - *productmaster-mapping-config.json*
    - *productvariant-mapping-config.json*
    - *producttranslations-mapping-config.json*
    - *color-mapping-config.json*
    - *size-mapping-config.json*
    - *style-mapping-config.json*

    > [!important]
    > Do not update these mapping files while the connector is enabled. Disable the connector’s logic app resources before making any changes to configuration files.

5. Click the *product-mapping-config.json* file.
6. In the right pane, click **Download** to download the file.
7. Open the file to review and edit the current mapping configuration.
8. Save your changes to the *product-mapping-config.json* file.
9. On the mappings overview page, click **Upload**.
10. In the right pane, click **Select a file** and select your updated *product-mapping-config.json* file.
11. Click the check box next to **Overwrite if files already exist**.
12. Click **Upload**. Your updated mapping file should now be uploaded to the mappings container.
13. Repeat steps 5-12 for the remaining mapping configuration files that need updates.