ソリューションの更新プログラムを簡易化する修正プログラムの作成

公開日: 2017年1月

対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

エンティティをソリューションに追加して、そのソリューションをエクスポートする場合、そのエンティティおよびすべての関連資産は当該ソリューションにエクスポートされます。 これらの資産には、属性、フォーム、ビュー、関連付け、ビジュアル化、およびエンティティと共にパッケージ化される他のすべての資産が含まれます。 すべてのオブジェクトをエクスポートすることは、展開先のオブジェクトを誤って変更したり、意図しない依存関係を引き継ぐ場合があることを意味します。 

これに対処するために、エンティティ全体とその資産すべてを公開するのではなく、エンティティのサブコンポーネントを含むソリューション パッチを作成および公開することができます。  元のソリューションおよび 1 つ以上の関連修正プログラムは、ソリューションの更新バージョンに後日ロールアップ (統合) される場合があり、これにより対象Microsoft Dynamics 365組織の元のソリューションは置換可能です。

修正プログラム

マネージドまたはアンマネージド ソリューションに修正プログラムを適用し、エンティティとその関連の資産エンティティに対する変更のみ含めることができます。 修正プログラムには、当該コンポーネントが既に組織への展開に存在しているので、依存するカスタマイズ不可のシステム コンポーネントまたは関連付けが含まれていません。 開発サイクルのいずれかの時点で、すべての修正プログラムを新しいソリューションバージョンにロールアップして、修正プログラムが作成された元のソリューションを置換することができます。

修正プログラムは、Dynamics 365 データベースに Solution エンティティ レコードとして保存されます。 null 以外の ParentSolutionId 属性は、ソリューションが修正プログラムであることを示します。 修正プログラムは、組織サービスまたは Web API により作成および管理可能で、このことは、製品インストール スクリプトなどの自動化の開発に便利です。 ただし、Dynamics 365 Webアプリケーションでは、修正プログラムを対話的に作成および管理可能な各種のWebフォームを提供します。

  • 修正プログラムは、CloneAsPatchRequest または CloneAsPatch Action を使用して上位のソリューションからのみ作成可能です。

  • 修正プログラムの上位を修正プログラムにすることはできません。

  • 修正プログラムは、上位のソリューションを一つのみ持つことができます。

  • 修正プログラムは、上位のソリューションで (ソリューション レベルで) 依存関係を作成します。

  • 上位のソリューションがある場合には、修正プログラムのみをインストールすることができます。

  • ParentSolutionIdとして識別される、上位のソリューションの一意の名前/メジャーおよびマイナー バージョン番号が対象組織にインストールされた上位のソリューションと一致しない限り、修正プログラムをインストールすることはできません。

  • 修正プログラムのバージョンは同じメジャーおよびマイナー番号がある必要がありますが、上位のソリューションのバージョン番号より高いビルドおよびリリース番号が必要です。 表示名は異なる場合があります。

  • ソリューションに修正プログラムがある場合、後続の修正プログラムには、一覧が、当該ソリューションのいずれかの既存の修正プログラム値より数値的に高いバージョン番号が必要です。

  • 修正プログラムは、付加的更新プログラムなどのソリューションと同じ操作をサポートしますが、削除はサポートしません。 修正プログラムを使用してソリューションからコンポーネントを削除することはできません。 ソリューションからコンポーネントを削除するには、アップグレードを実行します。

  • マネージドとしてエクスポートされた修正プログラムはマネージド上位のソリューションの最上位にインポートされる必要があります。 ルールは、修正プログラム (マネージドまたはアンマネージド)がその親に一致する必要があることです。

  • 運用目的でアンマネージド修正プログラムを使用しないでください。

  • 修正プログラムはバージョン8.0またはそれ以降の Dynamics 365 の組織のみでサポートされています。

このリリースの SolutionPackager および PackageDeployer ツールはソリューションの修正プログラムをサポートします。 パッチに関連付けるいずれかのコマンド ライン オプションのツールのオンライン ヘルプを参照してください。

修正プログラムの作成

CloneAsPatchRequestメッセージまたはCloneAsPatch Actionを使用して、またはWebアプリケーションを使用して、組織のアンマネージド ソリューションから修正プログラムを作成します。 修正プログラムを作成すると、元のソリューションがロックされるので、上位のソリューションとしてソリューションを識別する、依存修正プログラムが組織に存在する限り、変更またはエクスポートすることはできません。 修正プログラムのバージョン管理はソリューションのバージョン管理と同様で、次の形式で指定されます: major.minor.build.release。 修正プログラムを作成すると、既存のメジャーまたはマイナーのバージョンのソリューションを変更することはできません。

修正プログラムのインポートとエクスポート

修正プログラムをエクスポートまたはインポートするには、組織サービスまたは Web API、あるいは パッケージ展開機能ツールを使用することができます。 関連の組織サービスメッセージ要求は ImportSolutionRequestおよびExportSolutionRequestです。 Web APIの関連した操作は ImportSolution ActionおよびExportSolution Actionです。

修正の例

次の表には、修正の例の詳細がリスト表示されています。 この例では、ソリューションおよび修正プログラムが番号順でインポートされ、追加され、これは、全般のソリューションのインポートと一致していることに注意してください。

修正プログラムの名前

内容

SolutionAバージョン 1.0 (アンマネージド)

6つのフィールドと entityA を含んでいます。

SolutionAバージョン 1.0.1.0 (アンマネージド)

6 つのフィールド (3 つの更新) とentityA を含み、10 のフィールドとともに entityB が追加されます。

SolutionAバージョン 1.0.2.0 (アンマネージド)

10 のフィールドとentityCを含んでいます。

インポート プロセスは、次のとおりです。

  1. デベロッパーまたはカスタマイザーは最初にベース ソリューション (SolutionA 1.0) を組織にインポートします。 その結果、組織には6つのフィールドと entityAがあります。

  2. 次に、SolutionA 修正プログラム 1.0.1.0 がインポートされます。 組織には、6 つのフィールド (3 つが更新されています) と entityA に加えて、10 のフィールドと entityB が含まれるようになりました。

  3. 最後に、SolutionA 修正プログラム 1.0.2.0 がインポートされます。 組織には、6 つのフィールド (3 つの更新) と entityA、10 のフィールドと entityBに加えて、10 のフィールドとentityCが含まれるようになりました。

別の修正の例

次の表に詳細がリスト表示されている、別の修正の例を見てみましょう。

修正プログラムの名前

内容

SolutionA、バージョン 1.0 (アンマネージド、ベース ソリューション)

取引先企業番号フィールドの長さが20から30文字に調整されたAccount エンティティが含まれています。

SolutionBバージョン 2.0 (アンマネージド、異なるベンダー)

取引先企業番号フィールドの長さが 50 文字に調整されたAccount エンティティが含まれています。

SolutionAバージョン 1.0.1.0 (アンマネージド、修正プログラム)

取引先企業番号フィールドの長さが 35 文字に調整されたAccount エンティティに対する更新プログラムが含まれています。

インポート プロセスは、次のとおりです。

  1. デベロッパーまたはカスタマイザーは最初にベース ソリューション (SolutionA 1.0) を組織にインポートします。 結果は 30文字の取引先企業番号フィールドを含むAccountエンティティです。

  2. SolutionBがインポートされました。 組織には50文字の取引先企業番号フィールドを含むAccountエンティティが含まれるようになりました。

  3. SolutionA 修正プログラム 1.0.1.0 がインポートされます。 組織はさらにSolutionBによって適用されるように、50 文字の取引先企業番号フィールドを持つAccount エンティティを含んでいます。

  4. SolutionBがアンインストールされます。 組織はSolutionA 1.0.1.0 修正プログラムによって適用されるように、35 文字の取引先企業番号フィールドを持つAccount エンティティを含むようになりました。

修正プログラムの削除

DeleteRequest を使用して修正プログラムまたはベース(親)ソリューションを削除することができ、あるいは、Web API の場合には HTTP DELETE メソッドを使用できます。 削除プロセスは、組織に存在する 1 つ以上の修正プログラムを持つマネージド ソリューションまたはアンマネージド ソリューションごとに異なります。

アンマネージド ソリューションの場合、ベースソリューションをアンインストール前に、それらが作成された反対のバージョン順序で、ベース ソリューションに対するすべての修正プログラムをアンインストールする必要があります。

マネージド ソリューションでは、単にベースソリューションをアンインストールするだけです。Dynamics 365 システムでは、ベース ソリューションをアンインストールする前に、反対のバージョン順序で修正プログラムを自動的にアンインストールします。 単一の修正プログラムだけをアンインストールすることもできます。

ソリューションの更新

ソリューションの更新には、そのソリューションに対するすべての修正プログラムをソリューションの新しいバージョンにロールアップ(結合)することが含まれます。 その後、ソリューションはアンロックされるようになり、もう一度、変更(アンマネージド ソリューションのみ)またはエクスポートすることができます。 マネージド ソリューションの場合、新たに更新されたソリューションから修正プログラムを作成する場合の除き、ソリューションに対する変更が許可されません。 アンマネージド ソリューションに修正プログラムをロールアップするには、CloneAsSolutionRequest または CloneAsSolution Actionを使用します。 ソリューションの複製によって新しいバージョンのアンマネージド ソリューションが作成され、より高いmajor.minorバージョン番号、同じ一意の名前、および表示名を含む、すべての修正プログラムが組み込まれます。

マネージド ソリューションの場合、少し異なる方法で処理されます。 最初にすべての修正プログラムが組み込まれた、アンマネージド ソリューション (A) が複製され、それから、管理ソリューション (B) としてエクスポートされます。 (A) ソリューションのマネージド バージョンとその修正プログラムを含む対象組織では、管理ソリューション (B) をインポートしてから、DeleteAndPromoteRequest または DeleteAndPromote Action を実行して、管理ソリューション (A) とその修正プログラムをより高いバージョン番号を持つアップグレードされた管理ソリューション (B) と置き換えます。

関連項目

TechNet: セグメント化したソリューションと修正プログラムを使用してソリューションの更新を簡易化
ソリューション開発の計画
ソリューションを使用した拡張機能のパッケージ化および配布
ソリューション (Solution) エンティティのメッセージおよびメソッド
管理ソリューションの保守
AppSource でのアプリの登録

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権