[Dynamics365]オプションセット選択肢をメタデータから作成

今回はDynamicsのメタデータを使用した設定変更。
シンプルなものでカスタマイズをしてみます。

スポンサーリンク

オプションセット選択肢作成の煩わしさを解消

例えば、住所の入力で都道府県を入力するケースがあるとしましょう。
都道府県は手入力によるデータの揺らぎ防止のため、カスタムのオプションセットから入力させるケースも少なくないと思います。
その場合、都道府県のオプションセットを作成するときに、47都道府県を選択肢に登録する必要があります。

都道府県のオプションセットはソリューションのオプションセットから、作成することができます。
都道府県のオプションセット定義

都道府県は47個あるので、47回選択肢を追加する作業をしないといかず面倒です
1つ1つ手入力していくと、抜け漏れは入力間違いなど、人為的ミスにも繋がるのので、選択肢の追加を機械的に行いたいところです。

メタデータから選択肢を追加

上記選択肢を一個一個登録する手間を解消するため、機械的に一括で作成する方法があります。
それが、カスタマイズ用のメタデータを編集する方法です。
以下の方法については、Dynamicsのコアな部分をいじることになるため、必ずバックアップを取得し、なおかつ動作については自己責任でお願いします

メタデータとは?

カスタマイズで設定した内容をXMLファイル化したものがメタデータとなります。
設定変更するたびに、Dynamicsのシステム側でメタデータが自動反映され、ユーザ側からはXMLファイルの編集を意識することなく、UIベースで変更することが可能になります。

メタデータを取得する

メタデータはソリューションのエクスポートから取得可能です。

まずはソリューションをエスクポートします。
ソリューションのエクスポート

エクスポートする際は、必ずアンマネージドを選択してください。
ソリューションはアンマネージドでエクスポート

Zipファイルでエクスポートされますので、解凍します。
何個かファイルかフォルダがありますが、カスタマイズした内容は「customizations.xml」に記載されています
こちらを開きます。
エクスポートされたソリューションのメタデータ

customizations.xmlはいろいろな内容が記載されていますが、今回はオプションセット選択肢の一括追加が目的なので、optionsetsタグの部分を参照します。
先ほど定義した都道府県の名前「new_todofuken」で検索かけると早いです。

すると、このようなXML文が記載されているかと思います。

customizations.xml

<optionsets>
    <optionset Name="new_todofuken" localizedName="都道府県">
      <OptionSetType>picklist</OptionSetType>
      <IsGlobal>1</IsGlobal>
      <IntroducedVersion>0.0.0.1</IntroducedVersion>
      <IsCustomizable>1</IsCustomizable>
      <ExternalTypeName></ExternalTypeName>
      <displaynames>
        <displayname description="都道府県" languagecode="1041" />
      </displaynames>
      <Descriptions>
        <Description description="" languagecode="1041" />
      </Descriptions>
      <options>
        <option value="100000000" ExternalValue="" Color="#0000ff">
          <labels>
            <label description="北海道" languagecode="1041" />
          </labels>
          <Descriptions>
            <Description description="" languagecode="1041" />
          </Descriptions>
        </option>
      </options>
    </optionset>
</optionsets>

先ほど定義したオプションセットがこのように定義されています。
optionタグの中に定義した選択肢が記載されています。

もうお分かりですね。
ここに記載されているoptionタグを増やすことで、選択肢を追加することができます。

北海道で記載されている内容(黄色マーカー部分)をベースとして、赤字の部分を他の都道府県に置き換えれてあげればOKです。
optionタグのvalue属性には一意の数値が入りますので重複しなければOKです。
こちらは、1ずつ増やしておきましょう。

optionタグの作りかたとして、まずExcelで都道府県とValue値の対応表を作成します。
Excelから都道府県データを作成

都道府県は、ググれば一覧が出てきて容易にコピーできますし、B列のValue値はオートフィル機能で採番してしまえばOKです。

次に、北海道のoptionタグの内容(黄色マーカーのXML文)を別列に貼り付け。
Optionタグを数式から算出

再度、XMLファイルに貼り付ける時にダブルクォーテーションが残ってしまうので、改行は全て除いて貼り付けます。
そして、文字列と値(XMLの赤字部分)の部分をA列とB列から参照するようにします。

あとは、その数式を47都道府県分コピーすれば、都道府県名と値が変わったoptionタグが数式によって表示されます。

最後にその数式の値を、customizations.xmlをoptionsタグ直下に貼り付けます。
算出したOptionタグをメタデータに貼り付け

字下げなどの整形はしなくてもOKです。
この状態でcustomizations.xmlを保存して、再度Zipファイルで固めます。

Zipで固めたら、ソリューションのインポートをしてカスタマイズした内容を取り込みます。
ソリューションのインポート

ソリューションインポート中
インポートが完了すると、この通り、選択肢が増えています。
ソリューションインポート後のオプションセット

メタデータの書き方が分かれば他のことでも対応可能

今回はオプションセットの選択肢を例にとりましたが、customizations.xmlのメタデータの書き方が分かっていれば、様々なカスタマイズをXMLのテキスト上で設定することができます。
ただし、冒頭でもお伝えしたように、Dynamicsのコアとなる内容のため、下手に編集すると、ソリューションが壊れかねません。

必ず実施前はバックアップをとって、あくまで自己責任の範囲内でお願いします。

Dynamics
スポンサーリンク
エスパーラボ

コメント