Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMicrosoft Dynamics CRM 用 Anypoint Connector を使用して、Mule アプリケーションは Microsoft Dynamics CRM の SOAP 組織サービスとやりとりすることができます。
互換性と解決された問題に関する情報は、リリースノートを参照してください。
このコネクタを使用するには、以下に精通している必要があります。
Microsoft Dynamics CRM API
Anypoint Connector
Mule Runtime Engine (Mule)
Mule フローの要素とグローバル要素
Anypoint Studio (Studio) を使用した Mule アプリケーションの作成方法
アプリケーションを作成する前に、対象リソースへの接続をテストするには、Microsoft Dynamics CRM の SOAP 組織サービスのログイン情報が必要です。
Microsoft CRM インスタンスで作成された Web サービスヘッダーの作成日または期限切れ日は、Web サービスの基本セキュリティプロファイル検証 (http://www.ws-i.org/Profiles/BasicSecurityProfile-1.0.html
) で規定された制約に準拠する必要があります。その概要を次に示します。
作成日または期限切れ日には、小数点以下が 3 桁 (ミリ秒) を超える秒値を含めることはできません。
秒値を含む作成日または期限切れ日では、60 未満の秒値を指定する必要があります。
作成日または期限切れ日に ValueType 属性を含めることはできません。
作成日または期限切れ日には、XML スキーマ種別 (dateTime) で指定された UTC 形式の時間値を含める必要があります。
<dependency>
<groupId>com.mulesoft.connectors</groupId>
<artifactId>mule-microsoft-dynamics-crm-connector</artifactId>
<version>x.x.x</version>
<classifier>mule-plugin</classifier>
</dependency>
x.x.x
を使用しているコネクタに対応するバージョンに置き換えます。
最新の pom.xml
ファイル情報を取得する手順は、次のとおりです。
Anypoint Exchange に移動します。
Exchange で、[Login (ログイン)] をクリックし、Anypoint Platform のユーザー名とパスワードを指定します。
Exchange で、「<connector-name>
」を検索します。
コネクタを選択します。
画面の右上付近にある [Dependency Snippets (連動関係スニペット)] をクリックします。
Anypoint Studio には、Studio プロジェクトにコネクタを追加する 2 つの方法があります。Studio タスクバーの Exchange ボタンから追加するか、[Mule Palette (Mule パレット)] ビューから追加します。
Studio で Mule プロジェクトを作成します。
[Mule Palette (Mule パレット)] ビューで、[(X) Search in Exchange ((X) Exchange 内を検索)] をクリックします。
[Add Modules to Project (モジュールをプロジェクトに追加)] で、検索項目に「crm
」と入力します。
[Available modules (使用可能なモジュール)] で、このコネクタの名前をクリックします。
[Add (追加)] をクリックします。
[Finish (完了)] をクリックします。
コネクタを Studio キャンバスにドラッグします。
コネクタのグローバル要素を作成するには、次の項目を設定します。
Online Authentication (Default) (オンライン認証 (デフォルト)):
Username (ユーザー名): Dynamics CRM のユーザー名を入力します。
Password (パスワード): 対応するパスワードを入力します。
Organization Service URL (組織サービスの URL): 対応する組織サービスの URL を入力します。
Authentication retries (認証の再試行): 認証を再試行する回数を入力します。
Disable cn check (CN チェックを無効化): SSL 証明書をスキップするかどうかを選択します。
このデモには、次のオプションが含まれています。
すべての取引先を返す: 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
<?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>