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

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

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

修正プログラム

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

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

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

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

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

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

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

  • ParentSolutionId で識別される親ソリューションの一意の名前とメジャー/マイナーバージョン番号が、ターゲット組織にインストールされている親ソリューションのものと一致しない限り、パッチをインストールすることはできません。

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

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

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

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

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

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

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

修正プログラムの作成

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

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

パッチのエクスポートとインポートには、SDK for .NET または Web API、Web アプリケーション、Package Deployer ツールを使用できます。 該当する SDK for .NET リクエスト クラスは ImportSolutionRequestExportSolutionRequest です。 Web API に関連するアクションは ImportSolution アクションExportSolution アクションです。

修正の例

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

修正プログラムの名前 内容
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 つ以上の修正プログラムを持つマネージド ソリューションまたはアンマネージド ソリューションごとに異なります。

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

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

ソリューションの更新

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

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

関連項目

セグメント化されたソリューションの使用