Microsoft Dynamics CRM コネクタ

Select

Microsoft Dynamics CRM コネクタを使用して、Mule アプリケーションは Microsoft Dynamics CRM の SOAP 組織サービスとやりとりすることができます。

このユーザガイドを一読して、このコネクタを使用する基本的なフローのセットアップおよび定義方法を理解してください。機能の追加、互換性、制限、API バージョンの更新については、Microsoft Dynamics CRM Connector Release Notesを参照してください。

前提条件

このドキュメントは、読者が Microsoft Dynamics CRM、Mule、Anypoint コネクタ、Anypoint Studio、Mule の概念、Mule フローの要素、グローバル要素に精通していることを前提としています。

対象リソースへの接続をテストするには、ログイン情報が必要です。

ハードウェアとソフトウェアの要件および互換性に関する情報は、「コネクタリリースノート」を参照してください。

Maven でこのコネクタを使用するには、Anypoint Exchange の [Dependency Snippets (連動関係スニペット)] で pom.xml の連動関係情報を確認してください。

このコネクタの新機能

このコネクタは、Mule 4 で初めてリリースされます。

Design Center での接続方法

  1. Design Center で、HTTP リスナやスケジューラなどのトリガをクリックします。

  2. グローバル要素 (省略可能) を作成するには、[Reusable Configurations (再利用可能な設定)] をクリックし、次のオプションを設定します。

    • Username (ユーザ名): Dynamics CRM のユーザ名を入力します。

    • Password (パスワード) - 対応するパスワードを入力します。

    • Organization Service URL (組織サービスの URL): 対応する組織サービスの URL を入力します。

    • Authentication retries (認証の再試行): 認証を再試行する回数を入力します。

    • Disable cn check (CN チェックを無効化): SSL 証明書をスキップするかどうかを選択します。

      Design Center のグローバル要素の [General (一般)] タブ
  3. プラス記号を選択して、コンポーネントを追加します。

  4. コンポーネントとしてコネクタを選択します。

  5. 次の項目を設定します。

    Create:

    • Logical Name (論理名) - エンティティの論理名。

    • Attributes (属性) - Map<String, Object> としてのレコードの属性。

      Design Center での Create (作成) の設定

      Query:

    • Logical Name (論理名) - エンティティの論理名。

    • Id (ID)* - 更新するレコードの ID。

    • Attributes (属性) - Map<String, Object> としての更新する属性。

      Design Center での Update (更新) の設定

      Delete:

    • Logical Name (論理名) - エンティティの論理名。

    • Id (ID) - 削除するレコードの ID。

      Design Center での Delete (削除) の設定

      Retrieve:

      • Logical Name (論理名) - エンティティの論理名。

      • Id (ID) - 取得するレコードの ID。

      • Attributes (属性) - Map<String, Object> としての指定エンティティの属性。

        Design Center での Retrieve (取得) の設定

        Retrieve Multiple By Query (クエリで複数を取得):

    • Query (クエリ) - DataSense クエリ言語の場合は、DSQL クエリ。ネイティブクエリ言語の場合は、Fetch XML クエリ。

    • Items Per Page (1 ページあたりの項目数) - ページごとに返される項目の数。

    • Single Page Number (単一ページ番号) - 0 より大きい場合、その特定のページのみを返します。

      Design Center での Retrieve Multiple (複数を取得) の設定

      Associate (関連付け):

    • Logical Name (論理名) - エンティティの論理名。

    • Id (ID)* - 関連レコードに関連付けられるレコードの ID。

    • Relationship Entity Role Is Referenced (リレーションエンティティロールが参照される):

      • false - 関連付けるレコードを主エンティティレコードが参照している場合。

      • true: 関連付けるレコードによって主エンティティレコードが参照されている場合。

        Design Center での Associate (関連付け) の設定

        Execute (実行):

    • Request Name (要求名) - 実行する要求の論理名。

    • Request Parameters (要求パラメータ) - [非推奨] このパラメータは設定から削除される予定です。コネクタをコールする前に、#[payload] を正しく設定してください。

    • Request Id (要求 ID) - 実行する要求の ID。

      Design Center での Execute (実行) の設定

Studio にコネクタをインストールする方法

  1. Anypoint Studio で、Studio タスクバーの Exchange アイコンをクリックします。

  2. Anypoint Exchange で [Login (ログイン)] をクリックします。

  3. このコネクタを検索して [Install (インストール)] をクリックします。

  4. 画面の指示に従ってこのコネクタをインストールします。

Studio の更新がある場合、右下隅にメッセージが表示されます。メッセージをクリックすると、更新をインストールできます。

Studio で設定する

  1. コネクタをドラッグして Studio キャンバスにドロップします。

  2. コネクタのグローバル要素を作成するには、次の項目を設定します。

    Online Authentication (Default) (オンライン認証 (デフォルト)):

    • Username (ユーザ名): Dynamics CRM のユーザ名を入力します。

    • Password (パスワード) - 対応するパスワードを入力します。

    • Organization Service URL (組織サービスの URL): 対応する組織サービスの URL を入力します。

    • Authentication retries (認証の再試行): 認証を再試行する回数を入力します。

    • Disable cn check (CN チェックを無効化): SSL 証明書をスキップするかどうかを選択します。

      ログイン情報の設定

ユースケース: 作成、更新、取得、削除

このデモプロジェクトを構築して実行するには次が必要です。

  • Anypoint Studio 7 とバージョン 4.1 以降の Mule Runtime

  • Microsoft Dynamics 365 コネクタ v1.0.0 以降

  • Dynamics 365 (CRM 8.2)

ユースケースの Studio 7 フロー

Studio 7 のフローダイアグラム
Studio 7 のフローダイアグラム
Studio 7 のフローダイアグラム
Studio 7 のフローダイアグラム

フローのテスト方法

  1. Anypoint Exchange から、または [File (ファイル)] メニューの [Import…​ (インポート…​)] を使用して、ワークスペースにデモプロジェクトをインポートします。

  2. /src/main/resources/mule-artifact.properties で、OAuth2 ユーザ名パスワード設定の OAuth2 ログイン情報を指定します。

  3. 次を設定します。

    • config-oauth-user-pass.username - セッションの初期化に使用するユーザ名。

    • config-oauth-user-pass.password - ユーザの認証に使用するパスワード。

    • config-oauth-user-pass.resource - Web API のアプリケーション ID の URI (保護されたリソース)。CRM バージョンを指定しない、ルート URI であることが必要です (例: https://<your-org>.crm2.dynamics.com/)。

    • config-oauth-user-pass.clientId - Azure AD にアプリケーションを登録したときに割り当てられたアプリケーション ID。この ID は Azure Portal で確認できます。[Active Directory] をクリックして、ディレクトリをクリックし、アプリケーションを選択してから [Configure (設定)] をクリックします。

    • config-oauth-user-pass.clientSecret - アプリケーション登録ポータルでアプリケーションに作成したアプリケーションシークレット。client_secrets は信頼のおける方法でデバイスに保存できないため、ネイティブアプリケーションで使用しないでください。この情報は Web アプリケーションと Web API で必要です (client_secret をサーバ側で安全に保存できます)。

    • config-oauth-user-pass.tokenRequestEndpoint - アクセストークンを取得するためにコールされるトークンエンドポイント。(例: https://login.windows.net/<tenant-id>/oauth2/token この場合の 'tenant-id' は Azure AD ID です。)

  4. DataSense 情報を提供するために複数の要求を実行するので、[DataSense Connection Timeout (DataSense 接続タイムアウト)] は 200 秒より長く指定する必要があります。

  5. Studio でプロジェクトを実行します。

  6. ブラウザで localhost:8081 と入力し、デモの選択メニューにアクセスします。

  7. 必要に応じて、[Connection Timeout (接続タイムアウト)] と [Read Timeout (読み取りタイムアウト)] を設定できます。 [Connection Timeout (接続タイムアウト)] は、サーバに初めて接続するときのタイムアウトです。 [Read Timeout (読み取りタイムアウト)] は、サーバからのデータの読み取りを待機するときのタイムアウトです。

デモフローについて

  1. CREATE_EMPTY_CONTACT_DEMO: このフローは、後で他のフローで必要になる空の取引先責任者エンティティを作成します。

    [GET] HTTP コネクタは次の URL をリスンします。http://localhost:8081/createContact

  2. CREATE_EMPTY_OPPORTUNITY_DEMO: このフローは、後で他のフローで必要になる空の商談エンティティを作成します。

    [GET] HTTP コネクタは次の URL をリスンします。http://localhost:8081/createOpportunity

  3. CREATE_ACCOUNT_DEMO: このフローは、指定された属性を使用して取引先を作成し、さらに取引先を取引先責任者に関連付けます。

    [POST] HTTP コネクタは次の URL をリスンします。http://localhost:8081/createAccount

    要求の例:

    {"AccountName":"Test Account Name","CreditOnHold":true,
    "CreditLimit":1000,
    "ContactID":"<CONTACT_ID"}
  4. CREATE_MULTIPLE_ENTITIES_DEMO: このフローは、1 つのバッチ要求で同じ種別のエンティティを複数作成します。

    [POST] HTTP コネクタは次の URL をリスンします。http://localhost:8081/createMultipleAccounts

    要求の例:

    [{"AccountName":"Account Name 1",
    "CreditOnHold":true,"CreditLimit":1500},
    {"AccountName":"Account Name 2",
    "CreditOnHold":false,"CreditLimit":2000}]
  5. CREATE_MULTIPLE_ENTITIES_DEMO: このフローは、1 つのバッチ要求で同じ種別のエンティティを複数作成します。

    [POST] HTTP コネクタは次の URL をリスンします。http://localhost:8081/createMultipleAccounts

    要求の例:

    [{"AccountName":"Account Name 1",
    "CreditOnHold":true,"CreditLimit":1500},
    {"AccountName":"Account Name 2",
    "CreditOnHold":false,"CreditLimit":2000}]
  6. UPDATE_ENTITY_DEMO: このフローは、指定された属性を使用して取引先を更新します。

    [POST] HTTP コネクタは次の URL をリスンします。http://localhost:8081/updateAccount

    要求の例:

    {"EntityId":"<ENTITY_ID>",
    "AccountName":"Updated Name","CreditLimit":1500}
  7. UPDATE_MULTIPLE_ENTITIES_DEMO: このフローは、1 つのバッチ要求で同じ種別の複数のエンティティを更新します。

    [POST] HTTP コネクタは次の URL をリスンします。http://localhost:8081/updateMultipleAccounts

    要求の例:

    [{"EntityId":"<ENTITY_ID>",
    "AccountName":"Updated Name 1"},
    {"EntityId":"<ENTITY_ID>",
    "AccountName":"Updated Name 2"}]
  8. DELETE_ENTITY_DEMO: このフローは、指定された種別のエンティティを削除します。

    [POST] HTTP コネクタは次の URL をリスンします。http://localhost:8081/deleteAccount

    要求の例:

    {"EntityId":"<ENTITY_ID>"}
  9. RETRIEVE_ENTITY_DEMO: このフローは、指定された種別のエンティティを取得します。

    [POST] HTTP コネクタは次の URL をリスンします。http://localhost:8081/retrieveAccount

    要求の例:

    {"EntityId":"<ENTITY_ID>"}
  10. RETRIEVE_ENTITIES_BY_URL_DEMO: このフローは、URL 要求に基づいて複数のエンティティを取得します。

    [GET] HTTP コネクタは次の URL をリスンします。http://localhost:8081/retrieveAccountsByURL

  11. RETRIEVE_ENTITIES_BY_QUERY_DEMO: このフローは、Datasense クエリ言語に基づいて複数のエンティティを取得します。

    [GET] HTTP コネクタは次の URL をリスンします。http://localhost:8081/retrieveAccountsByQuery

  12. DISASSOCIATE_ENTITIES_DEMO: このフローは、エンティティの関連付けを解除します。要求を実行するエンティティの ID と関連付けを解除するキーを指定します。

    [POST] HTTP コネクタは次の URL をリスンします。http://localhost:8081/disassociateEntities

    要求の例:

    {"EntityId":"<ENTITY_ID>",
    "EntityLinkKeys":["primarycontactid"]}
  13. DO_ACTION_DEMO: このフローは、WinOpportunity アクションをコールします。

    [POST] HTTP コネクタは次の URL をリスンします。http://localhost:8081/doAction

    要求の例:

    {"Subject":"Won Opportunity","Status":3,
    "OpportunityId":"<OPPORTUNITY_ID>"}

http://localhost:8081 の選択メニューからフローをテストできます。また、curl のようなツールや、URL のコール時にボディの POST を実行できる他のツール (Chrome/Mozilla Firefox の拡張機能) を使用して JSON の POST を実行できます。

ユースケース: XML

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:dynamics="http://www.mulesoft.org/schema/mule/dynamics"
	xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
	xmlns:http="http://www.mulesoft.org/schema/mule/http"
	xmlns="http://www.mulesoft.org/schema/mule/core"
	xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/http
http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ee/core
http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/dynamics
http://www.mulesoft.org/schema/mule/dynamics/current/mule-dynamics.xsd">

	<configuration-properties file="mule-artifact.properties" />
	<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config">
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<dynamics:dynamics-config name="Dynamics_365_config" doc:name="Dynamics 365 Dynamics 365">
		<dynamics:oauth-user-pass-connection
            username="${config-oauth-user-pass.username}"
            password="${config-oauth-user-pass.password}"
			resource="${config-oauth-user-pass.resource}" clientId="${config-oauth-user-pass.clientId}"
			clientSecret="${config-oauth-user-pass.clientSecret}"
            tokenRequestEndpoint="${config-oauth-user-pass.tokenRequestEndpoint}" />
	</dynamics:dynamics-config>
	<flow name="PARSE_DEMO_TEMPLATE">
        <http:listener config-ref="HTTP_Listener_config" doc:name="HTTP" path="/"/>
        <parse-template location="form.html" doc:name="Parse Template"/>
    </flow>
    <flow name="CREATE_EMPTY_CONTACT_DEMO">
        <http:listener config-ref="HTTP_Listener_config" path="/createContact" doc:name="HTTP"/>
        <logger message="Requested 'Create Contact Operation'" level="INFO" doc:name="Logger"/>
		<dynamics:create config-ref="Dynamics_365_config" logicalName="contact"
            doc:name="Microsoft Dynamics 365">
			<dynamics:attributes ><![CDATA[#[{}]]]></dynamics:attributes>
		</dynamics:create>

        <logger message="#['Received Response from &quot;Create Contact Operation&quot;:' ++ payload]"
         level="INFO" doc:name="Logger"/>
    </flow>
    <flow name="CREATE_EMPTY_OPPORTUNITY_DEMO">
        <http:listener config-ref="HTTP_Listener_config" path="/createOpportunity" doc:name="HTTP"/>
        <logger message="Requested 'Create Opportunity Operation'" level="INFO" doc:name="Logger"/>
		<dynamics:create config-ref="Dynamics_365_config" logicalName="opportunity"
            doc:name="Microsoft Dynamics 365">
			<dynamics:attributes ><![CDATA[#[{}]]]></dynamics:attributes>
		</dynamics:create>
        <logger message="#['Received Response from &quot;Create Opportunity Operation&quot;: ' ++ payload]"
         level="INFO" doc:name="Logger"/>
    </flow>
    <flow name="CREATE_ACCOUNT_DEMO">
        <http:listener config-ref="HTTP_Listener_config" path="/createAccount" doc:name="HTTP"/>
        <logger message="Requested 'Create Account Operation'" level="INFO" doc:name="Logger"/>
        <ee:transform doc:name="Transform Message">
            <ee:message>
            	<ee:set-payload>
            <![CDATA[%dw 2.0
output application/java
---
{
	name: payload.AccountName,
	creditonhold: payload.CreditOnHold,
	creditlimit: payload.CreditLimit,
	"primarycontactid@odata.bind": "/contacts(" ++ payload.ContactID ++ ")"
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
        <dynamics:create config-ref="Dynamics_365_config" logicalName="account"
            doc:name="Microsoft Dynamics 365">
            <dynamics:attributes>#[payload]</dynamics:attributes>
        </dynamics:create>
        <logger message="#['Received Response from &quot;Create Account Operation&quot; : ' ++ payload]"
         level="INFO" doc:name="Logger"/>
    </flow>
    <flow name="CREATE_MULTIPLE_ENTITIES_DEMO">
        <http:listener config-ref="HTTP_Listener_config" path="/createMultipleAccounts" doc:name="HTTP"/>
        <logger message="Requested 'Create Multiple Accounts Operation'" level="INFO" doc:name="Logger"/>
        <ee:transform doc:name="Transform Message">
            <ee:message>
            	<ee:set-payload><![CDATA[%dw 2.0
input payload application/json
output application/java
---
payload map {
      name: $.AccountName,
      creditlimit : $.CreditLimit,
      creditonhold : $.CreditOnHold
}]]></ee:set-payload>
			</ee:message>
        </ee:transform>
        <dynamics:create-multiple config-ref="Dynamics_365_config" logicalName="account"
            doc:name="Microsoft Dynamics 365">
            <dynamics:entities-attributes>#[payload]</dynamics:entities-attributes>
        </dynamics:create-multiple>
        <logger message="Received Response from 'Create Multiple Entities Operation'" level="INFO"
            doc:name="Logger"/>
        <ee:transform doc:name="Response to JSON">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
			</ee:message>
		</ee:transform>
    </flow>
    <flow name="UPDATE_ENTITY_DEMO">
        <http:listener config-ref="HTTP_Listener_config" path="/updateAccount" doc:name="HTTP"/>
        <logger message="Requested 'Update Entity Operation'" level="INFO" doc:name="Logger"/>
        <ee:transform doc:name="Transform Message">
            <ee:message>
            	<ee:set-payload><![CDATA[%dw 2.0
output application/java
---
{
	entityId: payload.EntityId,
	attributes: {
		creditlimit: payload.CreditLimit,
		name: payload.AccountName
	}
}]]></ee:set-payload>
			</ee:message>
        </ee:transform>
        <dynamics:update config-ref="Dynamics_365_config" logicalName="account"
            doc:name="Microsoft Dynamics 365">
            <dynamics:attributes>#[payload]</dynamics:attributes>
        </dynamics:update>
        <logger message="'Update Entity Operation' has ended with success" level="INFO" doc:name="Logger"/>
        <ee:transform doc:name="Response to JSON">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
			</ee:message>
		</ee:transform>
    </flow>
    <flow name="UPDATE_MULTIPLE_ENTITIES_DEMO">
        <http:listener config-ref="HTTP_Listener_config" path="/updateMultipleAccounts" doc:name="HTTP"/>
        <logger message="Requested 'Update Multiple Entities Operation'" level="INFO" doc:name="Logger"/>
        <ee:transform doc:name="Transform Message">
            <ee:message>
            	<ee:set-payload><![CDATA[%dw 2.0
input payload application/json
output application/java
---
payload map {
	entityId: $.EntityId,
	attributes: {
		name: $.AccountName
	}
}]]></ee:set-payload>
			</ee:message>
        </ee:transform>
        <dynamics:update-multiple config-ref="Dynamics_365_config" logicalName="account"
            doc:name="Microsoft Dynamics 365">
            <dynamics:entities-attributes>#[payload]</dynamics:entities-attributes>
        </dynamics:update-multiple>
        <logger message="Received Response from 'Update Multiple Entities Operation'"
            level="INFO" doc:name="Logger"/>
        <ee:transform doc:name="Response to JSON">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
			</ee:message>
		</ee:transform>
    </flow>
    <flow name="DELETE_ENTITY_DEMO">
        <http:listener config-ref="HTTP_Listener_config" path="/deleteAccount" doc:name="HTTP"/>
        <logger message="Requested 'Delete Entitiy Operation'" level="INFO" doc:name="Logger"/>
        <dynamics:delete config-ref="Dynamics_365_config" logicalName="account"
            doc:name="Microsoft Dynamics 365">
			<dynamics:id>#[payload.EntityId]</dynamics:id>
		</dynamics:delete>
        <logger message="'Delete Entity Operation' has ended with success" level="INFO" doc:name="Logger"/>
    </flow>
    <flow name="RETRIEVE_ENTITY_DEMO">
        <http:listener config-ref="HTTP_Listener_config" path="/retrieveAccount" doc:name="HTTP"/>
        <logger message="Requested 'Retrieve Entitiy Operation'" level="INFO" doc:name="Logger"/>
        <dynamics:retrieve config-ref="Dynamics_365_config" logicalName="account"
            doc:name="Microsoft Dynamics 365">
			<dynamics:id>#[payload.EntityId]</dynamics:id>
		</dynamics:retrieve>
        <logger message="Received Response from 'Retrieve Entitiy Operation'"
            level="INFO" doc:name="Logger"/>
        <ee:transform doc:name="Response to JSON">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
			</ee:message>
		</ee:transform>
    </flow>
    <flow name="RETRIEVE_ENTITIES_BY_URL_DEMO">
        <http:listener config-ref="HTTP_Listener_config" path="/retrieveAccountsByURL" doc:name="HTTP"/>
        <logger message="Requested 'Retrieve Multiple Operation'" level="INFO" doc:name="Logger"/>
        <dynamics:retrieve-multiple config-ref="Dynamics_365_config" doc:name="Microsoft Dynamics 365">
        	<dynamics:data-query-url>${config-oauth-user-pass.resource}/api/data/v8.2/accounts?$select=name,accountnumber&amp;$top=3</dynamics:data-query-url>
        </dynamics:retrieve-multiple>

        <logger message="Received Response from 'Retrieve Multiple Operation'" level="INFO"
            doc:name="Logger"/>
        <ee:transform doc:name="Response to JSON">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
			</ee:message>
		</ee:transform>
    </flow>
    <flow name="RETRIEVE_ENTITIES_BY_QUERY_DEMO">
        <http:listener config-ref="HTTP_Listener_config" path="/retrieveAccountsByQuery" doc:name="HTTP"/>
        <logger message="Requested 'Retrieve Multiple By Query Operation'" level="INFO" doc:name="Logger"/>
        <dynamics:retrieve-multiple-by-query config-ref="Dynamics_365_config"
            doc:name="Microsoft Dynamics 365">
        	<dynamics:query>dsql:SELECT accountid,accountnumber,name FROM accounts LIMIT 2</dynamics:query>
        </dynamics:retrieve-multiple-by-query>

        <logger message="Received Response from 'Retrieve Multiple By Query Operation'"
            level="INFO" doc:name="Logger"/>
		<ee:transform doc:name="Response to JSON">
			<ee:message>
				<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
			</ee:message>
		</ee:transform>
    </flow>
    <flow name="DISASSOCIATE_ENTITIES_DEMO">
        <http:listener config-ref="HTTP_Listener_config" path="/disassociateEntities" doc:name="HTTP"/>
        <logger level="INFO" doc:name="Logger" message="Requested 'Dissasociate Entities Operation'"/>
        <ee:transform doc:name="Transform Message">
            <ee:message>
            	<ee:set-payload><![CDATA[%dw 2.0
output application/java
---
{
	entityId: payload.EntityId,
	attributes: payload.EntityLinkKeys
}]]></ee:set-payload>
			</ee:message>
        </ee:transform>
        <dynamics:disassociate config-ref="Dynamics_365_config" logicalName="account"
            doc:name="Microsoft Dynamics 365">
            <dynamics:attributes>#[payload]</dynamics:attributes>
        </dynamics:disassociate>
        <logger level="INFO" doc:name="Logger"
            message="Finished 'Dissasociate Entities Operation' with success"/>
    </flow>
    <flow name="DO_ACTION_DEMO">
        <http:listener config-ref="HTTP_Listener_config" path="/doAction" doc:name="HTTP"/>
        <logger message="Requested 'Do Action Operation'" level="INFO" doc:name="Logger"/>

		<ee:transform doc:name="Transform Message">
            <ee:message>
            	<ee:set-payload><![CDATA[%dw 2.0
output application/java
---
{
	OpportunityClose: {
		subject: payload.Subject,
		"opportunityid@odata.bind": "/opportunities(" ++ payload.OpportunityId ++ ")"
	},
	Status: payload.Status
}]]></ee:set-payload>
			</ee:message>
        </ee:transform>
        <dynamics:do-action config-ref="Dynamics_365_config" actionName="WinOpportunity"
            doc:name="Microsoft Dynamics 365"/>
        <logger message="Finished 'Do Action Operation'" level="INFO" doc:name="Logger"/>
    </flow>
</mule>

Was this article helpful?

💙 Thanks for your feedback!