Girijesh Dixit

Jul 16, 20212 min

Implementation - Cases Sync in Dynamics 365 Environments

Explanation of how to sync two dynamics 365 environments cases via the Power Automate.

Step1- Create a App User

Create a App user and assign Administrator role on source environment.

Step 2- Create a Child Power Automate - Source Env.

  • Add a Add Dataverse connector “When a row is added, modified or deleted” and set the trigger point on Case entity

  • Add and save a HTTP request connector in Master Power Automate, The HTTP request URL will used in Child Automate to invoke

  • Add HTTP action connectors in Child Power Automate to invoke Master Power Automate and pass the created incidentId {GUID} as a parameter

HTTP request.{

"inputs": {

"method": "POST",

"uri": "https://prod-02.centralindia.logic.azure.com:443/workflows/62f97cd457fd4903a7cb384d8e6a5a34/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=wklmTQr7De3yjPaKxcfMEj1sySa3BikrAT_8nLMDWLQ",

"headers": {

"CaseId": "@triggerOutputs()?['body/incidentid']"

}

}

}

Child Power Automate

Step 3- Create a Master Power Automate - Target Env.

  • Add a HTTP request connector "When a HTTP request in received".

  • Receive the passed incidentId{GUID} from Child Power Automate from header

    {

    "inputs": "@triggerOutputs()['headers']?['CaseId']"

    }

  • A HTTP action, to get an access token to retrieve data from the source environment (https://orgc***d8cf.crm8.dynamics.com/)

Method POST

URI https://login.microsoftonline.com/***************/oauth2/token

Headers Application/x-www-form-urlencoded

Body grant_type=client_credentials&

client_id=*********************************

client_secret*******************************

resource=https://orgc******d8cf.crm8.dynamics.com/

  • A data operation “compose” to get access_token after HTTP action

{ "inputs": "@outputs('HTTP').body.access_token" }

  • Add another HTTP Action to make a query and retrieved Case details from the source environment

Method GET

URI https://orgc****d8cf.crm8.dynamics.com/api/data/v9.1/incidents

Headers Content-Type – application/json

Authorization "@{outputs('Compose')}"

Filter "incidentid eq '@{outputs('CaseId')}'"

  • Initialize the output of HTTP2 Action and store it in a variable

    {

    "inputs": {

    "variables": [

    {

    "name": "HttpBody",

    "type": "object",

    "value": "@body('HTTP_2')"

    }

    ]

    }

    }

  • Extract the case details from the above JSON object and store them in a variable

    {

    "inputs": {

    "variables": [

    {

    "name": "CaseDetails",

    "type": "array",

    "value": "@variables('HttpBody').value"

    }

    ]

    }

    }

  • Parse the Case attributes values from case details.

  • Check if the case id already exists in the target environment

    {

    "inputs": {

    "host": {

    "connectionName": "shared_commondataserviceforapps",

    "operationId": "ListRecords",

    "apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"

    },

    "parameters": {

    "entityName": "incidents",

    "$filter": "incidentid eq '@{outputs('CaseId')}'"

    },

    "authentication": "@parameters('$authentication')"

    }

    }

  • Based on the condition the Add/update trigger will execute.

Master Power Automate

Demo

Part -1 Business Case

Kindly write me on Girijeshdixit@hotmail.com for any query regarding this demo.

Happy learning..

    1550
    0