カスタム ビジネス ロジックをバイパスする

カスタム ビジネス ロジックを適用せずにデータ操作を実行できるようにしたい場合があります。 たとえば、ビジネスのデータ整合性ロジックに準拠していることがわかっている多くのレコードをインポートする場合などです。 この操作をできるだけ早く実行するため、各要求のカスタム ロジックの処理に余分な時間がかかることは避ける必要があります。

1 つのオプションは、ビジネス ロジックを含むカスタム プラグインを検索して無効にすることです。 ただし、これは、それらのプラグインが無効になっている間、すべてのユーザーに対してロジックが無効になることを意味します。 また、適切なプラグインのみを無効にし、完了したら忘れずに再度有効にする必要もあります。

ここで説明するオプションを使用すると、このオプションを使用するように構成されたアプリケーションによって送信される特定の要求に対して、カスタム同期プラグインを無効にすることができます。

このような状況で、通常適用されるカスタム ビジネス ロジックを無効にするオプションがあります。 2 つの要件があります。

  • BypassCustomPluginExecution オプションを使用して要求を送信する必要があります。
  • 要求を送信するユーザーは、prvBypassCustomPlugins 特権を持っている必要があります。 既定では、システム管理者のセキュリティ ロールを持つユーザーのみにこの特権が割り当てられます。

注意

prvBypassCustomPlugins は、現時点では UI で割り当てることはできません。 API を使用して セキュリティ ロールに特権を追加できます。 詳細情報: 別のロールへの prvBypassCustomPlugins 特権の追加

これにより、何が行われるのでしょうか?

このソリューションは、組織に適用されているカスタムの同期ビジネス ロジックを対象としています。 カスタム ビジネス ロジックをバイパスする要求を送信すると、次を除くすべての同期プラグインとリアルタイム ワークフローが無効になります。

  • コア Microsoft Dataverse システムの一部であるプラグイン、または Microsoft が発行元であるソリューションの一部であるプラグイン。
  • Microsoft が発行者であるソリューションに含まれるワークフロー。

システム プラグインは、特定のエンティティのコア動作を定義します。 これらのプラグインがないと、データの不整合が発生し、簡単に修正できない場合があります。

Microsoft Dynamics 365 Customer Service や Dynamics 365 Sales Solutions などの Dataverse を使用する Microsoft が提供するソリューションには、このオプションではバイパスできない重要なビジネス ロジックも含まれています。

重要

独自のビジネス ロジックを含む他の独立系ソフトウェア ベンダー (ISV) からソリューションを購入してインストールしたことがあるかもしれません。 これらのソリューションによって適用される同期ロジックはバイパスされます。 このオプションを使用する前に、これらの ISV に確認して、ソリューションが使用するデータでこのオプションを使用した場合にどのような影響があるかを理解する必要があります。

BypassCustomPluginExecution オプションを使用するには?

このオプションは、Web API または組織サービスのいずれかで使用できます。

Web API を使用してこのオプションを適用するには、要求のヘッダーとして MSCRM.BypassCustomPluginExecution : true を渡します。

要求の例

次の Web API 要求は、カスタム ビジネス ロジックを適用せずに新しい取引先企業レコードを作成します。

POST https://yourorg.api.crm.dynamics.com/api/data/v9.1/accounts HTTP/1.1
MSCRM.BypassCustomPluginExecution: true
Authorization: Bearer [REDACTED]
Content-Type: application/json
Accept: */*

{
  "name":"Test Account"
}

別のロールへの prvBypassCustomPlugins 特権の追加

prvBypassCustomPlugins 特権は、さまざまなセキュリティロールに設定される UI では使用できないため、この特権を別のセキュリティ ロールに付与する必要がある場合は、API を使用する必要があります。 たとえば、システム カスタマイザー セキュリティ ロール を使用して、この特権をユーザーに付与することができます。

prvBypassCustomPlugins 特権には、すべての組織の ID 148a9eaf-d0c4-4196-9852-c3a38e35f6a1 があります。

AddPrivilegesRole Action を使用して prvBypassCustomPlugins 特権をセキュリティ ロールに関連付けます。

要求

POST [Organization URI]/api/data/v9.1/roles(<id of role>)/Microsoft.Dynamics.CRM.AddPrivilegesRole HTTP/1.1
Content-Type: application/json   
Accept: application/json   
OData-MaxVersion: 4.0   
OData-Version: 4.0 

{
  "Privileges": [
    {
      "PrivilegeId": "148a9eaf-d0c4-4196-9852-c3a38e35f6a1",
      "Depth": "3"
    }
  ]
}

RolePrivilege を設定してください。Depth プロパティを PrivilegeDepth に。Global (3) これはグローバル特権であるため。

応答

HTTP/1.1 204 No Content  
OData-Version: 4.0  

よくあるご質問 (FAQ)

これは、Microsoft プラグインによるデータ操作のためにプラグインをバイパスしますか?

いいえ。 Microsoft ソリューションの同期プラグインまたはリアルタイム ワークフローが他のレコードに対して操作を実行する場合、それらの操作のロジックはバイパスされません。 特定の操作に適用される同期プラグインまたはリアルタイム ワークフローのみがバイパスされます。

プラグイン内で実行するデータ操作にこのオプションを使用できますか?

はい。ただし、プラグインが prvByPassPlugins 特権を持つユーザーのコンテキストで実行されている場合に限ります。 組織サービスの場合、OrganizationRequest クラスから派生したクラスのオプションの BypassCustomPluginExecution パラメーターを設定します。 プラグインで CrmServiceClient を使用することはできません。

非同期プラグイン ステップ、非同期ワークフロー、およびフローについてはどうしますか?

非同期ロジックはバイパスされません。 非同期ロジックは、レコードの処理コストに大きく影響しないため、このパラメーターによってバイパスされることはありません。

関連項目

Web API: HTTP 要求の作成とエラーの処理
要求のオプション パラメーターを渡す