Microsoft Dynamics CRM コネクタ - Mule 4

サポートカテゴリ: 選択

Microsoft Dynamics CRM v3.2

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

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

前提条件

この情報を使用するには、Microsoft Dynamics CRM、Mule、Anypoint コネクタ、Anypoint Studio、Mule の概念、Mule フローの要素、グローバル要素に精通している必要があります。

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

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

POM ファイル情報

<dependency>
  <groupId>com.mulesoft.connectors</groupId>
  <artifactId>mule-microsoft-dynamics-crm-connector</artifactId>
  <version>RELEASE</version>
  <classifier>mule-plugin</classifier>
</dependency>

Mule は、RELEASE を現在のバージョンに変換します。バージョンを指定するには、Anypoint Exchange で Microsoft Dynamics CRM コネクタ​を表示し、[Dependency Snippets (連動関係スニペット)]​ をクリックします。

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。

    • 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。

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

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

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

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

        Execute (実行):

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

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

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

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

Studio プロジェクトへのコネクタの追加

Anypoint Studio には、Studio プロジェクトにコネクタを追加する 2 つの方法があります。Studio タスクバーの Exchange ボタンから追加するか、[Mule Palette (Mule パレット)] ビューから追加します。

Exchange を使用してコネクタを追加する

  1. Studio で Mule プロジェクトを作成します。

  2. Studio タスクバーの左上にある Exchange アイコン (X)​ をクリックします。

  3. Exchange で、[Login (ログイン)]​ をクリックし、Anypoint Platform のユーザ名とパスワードを指定します。

  4. Exchange で、「crm」を検索します。

  5. コネクタを選択して [Add to project (プロジェクトに追加)]​ をクリックします。

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

Studio でコネクタに追加する

  1. Studio で Mule プロジェクトを作成します。

  2. [Mule Palette (Mule パレット)] ビューで、[(X) Search in Exchange ((X) Exchange 内を検索)]​ をクリックします。

  3. [Add Modules to Project (モジュールをプロジェクトに追加)]​ で、検索項目に「crm」と入力します。

  4. [Available modules (使用可能なモジュール)]​ で、このコネクタの名前をクリックします。

  5. [Add (追加)]​ をクリックします。

  6. [Finish (完了)]​ をクリックします。

Studio で設定する

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

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

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

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

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

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

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

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

      ログイン情報の設定

ユースケース - Microsoft Dynamics CRM の操作のデモ

このデモには、次のオプションが含まれています。

  • すべての取引先を返す: ​http://localhost:8081/accounts

  • サブ文字列が含まれる名前で取引先を照会する: ​http://localhost:8081/query-accounts?name=li

  • 指定した名前で新規取引先を作成する: ​http://localhost:8081/create-account?name=your-account-name

  • ID で取引先を取得する: ​http://localhost:8081/retrieve-account?accountid={account-guid}

  • 取引先を削除する: ​http://localhost:8081/delete-account?accountid={account-guid}

  • すべての取引先責任者を返す: ​http://localhost:8081/contacts

  • 取引先のすべての取引先責任者を返す: ​http://localhost:8081/contacts-by-account?accountid={account-guid}

  • 取引先責任者を取引先に関連付ける: ​http://localhost:8081/associate?accountid={account-guid}&contactid={contact-guid}

  • 取引先から取引先責任者の関連付けを解除する: ​http://localhost:8081/disassociate?accountid={account-guid}&contactid={contact-guid}

  • 商談を作成する: ​http://localhost:8081/create-opportunity?accountid={account-guid}&contactid={contact-guid}

  • 親取引先で商談を照会する: ​http://localhost:8081/opportunities-by-account?accountid={account-guid}

  • SetState​ 操作を実行して取引先をアクティブ化する: ​http://localhost:8081/activate-account?accountid={account-guid}

  • SetState​ 操作を実行して取引先を非アクティブ化する: ​http://localhost:8081/deactivate-account?accountid={account-guid}

  • 1 回の要求で複数のエンティティを作成する: ​http://localhost:8081/create-multiple

  • 1 回の要求で複数の取引先責任者の [Description (説明)] プロパティを更新する: ​http://localhost:8081/update-multiple

  • 更新された取引先責任者を取得する: ​http://localhost:8081/updated-contacts

  • 1 回の要求で複数の取引先責任者を削除する: ​http://localhost:8081/delete-multiple

ユースケースの Studio ビジュアルフロー

ms dynamics crm demo 01
ms dynamics crm demo 02
ms dynamics crm demo 03
ms dynamics crm demo 04
ms dynamics crm demo 05

ユースケースの XML フロー

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

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
    xmlns:microsoft-dynamics-crm="http://www.mulesoft.org/schema/mule/microsoft-dynamics-crm"
    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/core
    http://www.mulesoft.org/schema/mule/core/current/mule.xsd
    http://www.mulesoft.org/schema/mule/http
    http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
    http://www.mulesoft.org/schema/mule/microsoft-dynamics-crm
    http://www.mulesoft.org/schema/mule/microsoft-dynamics-crm/current/mule-microsoft-dynamics-crm.xsd
    http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
    <configuration-properties file="mule-app.properties"/>

    <http:listener-config
        name="HTTP_Listener_config"
        doc:name="HTTP Listener config" >
        <http:listener-connection
        host="localhost"
        port="8081" />
    </http:listener-config>
    <microsoft-dynamics-crm:dynamics-crm-config
        name="Microsoft_Dynamics_CRM_Dynamics_CRM"
        doc:name="Microsoft Dynamics CRM Dynamics CRM" >
        <microsoft-dynamics-crm:online-connection
            username="${username}"
            password="${password}"
            organizationServiceUrl="${organizationServiceUrl}"
            authenticationRetries="${authenticationRetries}" />
    </microsoft-dynamics-crm:dynamics-crm-config>
    <flow name="crm-all-accounts"  >
        <http:listener
            doc:name="Listener"
            config-ref="HTTP_Listener_config"
            path="/accounts"/>
        <microsoft-dynamics-crm:retrieve-multiple-by-query
            doc:name="Retrieve multiple by query"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM">
            <microsoft-dynamics-crm:query ><![CDATA[dsql:SELECT accountid,name,statecode,statuscode FROM account]]></microsoft-dynamics-crm:query>
        </microsoft-dynamics-crm:retrieve-multiple-by-query>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
            </ee:message>
        </ee:transform>
    </flow>
    <flow name="crm-query-account-by-name"  >
        <http:listener
            doc:name="Listener"
            config-ref="HTTP_Listener_config"
            path="/query-accounts"/>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
    "query" : "dsql:SELECT accountid,name,statecode,statuscode FROM account WHERE name LIKE '%" ++ attributes.queryParams.name ++ "%'"
}]]></ee:set-payload>
            </ee:message>
        </ee:transform>
        <microsoft-dynamics-crm:retrieve-multiple-by-query
            doc:name="Retrieve multiple by query"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM">
            <microsoft-dynamics-crm:query ><![CDATA[#[payload.query]]]></microsoft-dynamics-crm:query>
        </microsoft-dynamics-crm:retrieve-multiple-by-query>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
            </ee:message>
        </ee:transform>
    </flow>
    <flow name="crm-create-account" >
        <http:listener
            doc:name="Listener"
            config-ref="HTTP_Listener_config"
            path="/create-account"/>
        <ee:transform doc:name="Transform Message"  >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
    "name": attributes.queryParams.name
}]]></ee:set-payload>
            </ee:message>
        </ee:transform>
        <microsoft-dynamics-crm:create
            logicalName="account"
            doc:name="Create"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM"/>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
            </ee:message>
        </ee:transform>
    </flow>
    <flow name="crm-delete-account"
        config-ref="HTTP_Listener_config"
        path="/delete-account"/>
        <microsoft-dynamics-crm:delete
            logicalName="account"
            id="#[attributes.queryParams.accountid]"
            doc:name="Delete"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM" />
    </flow>
    <flow name="crm-retrieve-account" >
        <http:listener
            doc:name="Listener"
            config-ref="HTTP_Listener_config"
            path="/retrieve-account"/>
        <microsoft-dynamics-crm:retrieve
            logicalName="account"
            id="#[attributes.queryParams.accountid]"
            doc:name="Retrieve"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM" />
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
            </ee:message>
        </ee:transform>
    </flow>
    <flow name="crm-all-contacts" >
        <http:listener
            doc:name="Listener"
            config-ref="HTTP_Listener_config"
            path="/contacts"/>
        <microsoft-dynamics-crm:retrieve-multiple-by-query
            doc:name="Retrieve multiple by query"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM">
            <microsoft-dynamics-crm:query ><![CDATA[dsql:SELECT accountid,contactid,firstname,lastname FROM contact]]></microsoft-dynamics-crm:query>
        </microsoft-dynamics-crm:retrieve-multiple-by-query>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
            </ee:message>
        </ee:transform>
    </flow>
    <flow name="crm-get-associated-contacts" >
        <http:listener doc:name="Listener"
            config-ref="HTTP_Listener_config"
            path="/contacts-by-account"/>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
    "query" : "dsql:SELECT contactid, accountidname, parentcustomerid_referenceto_account FROM contact WHERE parentcustomerid_referenceto_account = '" ++ attributes.queryParams.accountid ++ "'"
}]]></ee:set-payload>
            </ee:message>
        </ee:transform>
            doc:name="Retrieve multiple by query"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM">
            <microsoft-dynamics-crm:query ><![CDATA[#[payload.query]]]></microsoft-dynamics-crm:query>
        </microsoft-dynamics-crm:retrieve-multiple-by-query>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
            </ee:message>
        </ee:transform>
    </flow>
    <flow name="crm-associate-contact-to-account" >
        <http:listener
            doc:name="Listener"
            config-ref="HTTP_Listener_config"
            path="/associate"/>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
[
    attributes.queryParams.contactid
]]]></ee:set-payload>
            </ee:message>
        </ee:transform>
        <microsoft-dynamics-crm:associate
            logicalName="account"
            relatedEntitiesIds="#[payload]"
            doc:name="Associate"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM"
            relationshipSchemaName="contact_customer_accounts"
            id="#[attributes.queryParams.accountid]"
            relationshipEntityRoleIsReferenced="true"/>
    </flow>
    <flow name="crm-disassociate-contact-to-account" >
        <http:listener doc:name="Listener"
            config-ref="HTTP_Listener_config"
            path="/disassociate"/>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
[
    attributes.queryParams.contactid
]]]></ee:set-payload>
            </ee:message>
        </ee:transform>
        <microsoft-dynamics-crm:disassociate
            doc:name="Disassociate"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM"
            logicalName="account"
            id="#[attributes.queryParams.accountid]"
            relationshipEntityRoleIsReferenced="true"
            relationshipSchemaName="contact_customer_accounts"
            relatedEntitiesIds="#[payload]"/>
    </flow>
    <flow name="crm-get-opportunities" >
        <http:listener doc:name="Listener"
            config-ref="HTTP_Listener_config"
            path="/opportunities-by-account"/>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
    "query" : "dsql:SELECT accountid_referenceto_account,accountidname,customerid_referenceto_contact,name,parentaccountid_referenceto_account FROM opportunity WHERE parentaccountid_referenceto_account = '" ++ attributes.queryParams.accountid ++ "'"
}]]></ee:set-payload>
            </ee:message>
        </ee:transform>
        <microsoft-dynamics-crm:retrieve-multiple-by-query
            doc:name="Retrieve multiple by query"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM">
            <microsoft-dynamics-crm:query ><![CDATA[#[payload.query]]]></microsoft-dynamics-crm:query>
        </microsoft-dynamics-crm:retrieve-multiple-by-query>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
            </ee:message>
        </ee:transform>
    </flow>
    <flow name="crm-create-opportunity" >
        <http:listener
            doc:name="Listener"
            config-ref="HTTP_Listener_config"
            path="/create-opportunity"/>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
    "parentaccountid_referenceto_account": attributes.queryParams.accountid,
    "contactid_referenceto_contact": attributes.queryParams.contactid,
    "name": "unique opportunity",
    "timeline": 2
}]]></ee:set-payload>
            </ee:message>
        </ee:transform>
        <microsoft-dynamics-crm:create
            logicalName="opportunity"
            doc:name="Create"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM"/>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
            </ee:message>
        </ee:transform>
    </flow>
    <flow name="crm-execute-activate-account" >
        <http:listener
            doc:name="Listener"
            config-ref="HTTP_Listener_config"
            path="/activate-account"/>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
    "entityMoniker": {
        "id": {
            "value": attributes.queryParams.accountid,
        },
        "logicalName": "account"
    },
    "state": {
        "value": 0
    },
    "status": {
        "value": 1
    }
}]]></ee:set-payload>
            </ee:message>
        </ee:transform>
        <microsoft-dynamics-crm:execute
            requestName="SetState" doc:name="Execute"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM"/>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
            </ee:message>
        </ee:transform>
    </flow>
    <flow name="crm-execute-deactivate-account" >
        <http:listener
            doc:name="Listener"
            config-ref="HTTP_Listener_config"
            path="/deactivate-account"/>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
    "entityMoniker": {
        "id": {
            "value": attributes.queryParams.accountid,
        },
        "logicalName": "account"
    },
    "state": {
        "value": 1
    },
    "status": {
        "value": 2
    }
}]]></ee:set-payload>
            </ee:message>
        </ee:transform>
        <microsoft-dynamics-crm:execute
            doc:name="Execute"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM"
            requestName="SetState"/>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
            </ee:message>
        </ee:transform>
    </flow>
    <flow name="crm-create-multiple-contacts" >
        <http:listener
            doc:name="Listener"
            config-ref="HTTP_Listener_config"
            path="/create-multiple"/>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
[
    {
      "fullname":"Contact1",
      "address1_city":"DemoCity",
      "description":"Demo contact 1"
    },
    {
      "fullname":"Contact2",
      "address1_city":"DemoCity",
      "description":"Demo contact 2"
    },
    {
      "fullname":"Contact3",
      "address1_city":"DemoCity",
      "description":"Demo contact 3"
    }
]]]></ee:set-payload>
            </ee:message>
        </ee:transform>
        <microsoft-dynamics-crm:create-multiple
            logicalName="contact"
            doc:name="Create multiple"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM"/>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
            </ee:message>
        </ee:transform>
    </flow>
    <flow name="crm-delete-multiple" >
        <http:listener
            doc:name="Listener"
            config-ref="HTTP_Listener_config"
            path="/delete-multiple"/>
        <microsoft-dynamics-crm:retrieve-multiple-by-query
            doc:name="Retrieve multiple by query"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM">
            <microsoft-dynamics-crm:query ><![CDATA[dsql:SELECT contactid FROM contact WHERE address1_city = 'DemoCity']]></microsoft-dynamics-crm:query>
        </microsoft-dynamics-crm:retrieve-multiple-by-query>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
payload.*contactid
]]></ee:set-payload>
            </ee:message>
        </ee:transform>
        <microsoft-dynamics-crm:delete-multiple
            logicalName="contact"
            ids="#[payload]"
            doc:name="Delete multiple"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM"/>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
            </ee:message>
        </ee:transform>
    </flow>
    <flow name="crm-update-multiple-contacts" >
        <http:listener
            doc:name="Listener"
            config-ref="HTTP_Listener_config"
            path="/update-multiple"/>
        <microsoft-dynamics-crm:retrieve-multiple-by-query
            doc:name="Retrieve multiple by query"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM">
            <microsoft-dynamics-crm:query ><![CDATA[dsql:SELECT contactid,description FROM contact WHERE address1_city = 'DemoCity']]></microsoft-dynamics-crm:query>
        </microsoft-dynamics-crm:retrieve-multiple-by-query>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
updates: payload map (item, index) -> {
      "contactid" : item.contactid,
      "description" : "Updated Description"
}]]></ee:set-payload>
            </ee:message>
        </ee:transform>
        <microsoft-dynamics-crm:update-multiple
            logicalName="contact"
            doc:name="Update multiple"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM">
            <microsoft-dynamics-crm:list-of-attributes ><![CDATA[#[payload.updates]]]></microsoft-dynamics-crm:list-of-attributes>
        </microsoft-dynamics-crm:update-multiple>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
            </ee:message>
        </ee:transform>
    </flow>
    <flow name="crm-retrieve-update-contacts" >
        <http:listener
            doc:name="Listener"
            config-ref="HTTP_Listener_config"
            path="/updated-contacts"/>
        <microsoft-dynamics-crm:retrieve-multiple-by-query
            doc:name="Retrieve multiple by query"
            config-ref="Microsoft_Dynamics_CRM_Dynamics_CRM">
            <microsoft-dynamics-crm:query ><![CDATA[dsql:SELECT contactid,description FROM contact WHERE address1_city = 'DemoCity']]></microsoft-dynamics-crm:query>
        </microsoft-dynamics-crm:retrieve-multiple-by-query>
        <ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
            </ee:message>
        </ee:transform>
    </flow>
</mule>

Was this article helpful?

💙 Thanks for your feedback!