SharePointリストの移行

SharePointリストテンプレートを使えば リストを保存して、サイト内にも別サイトにも 展開できます。しかし、リストにワークフローが付加されている場合は リストの保存/展開はできますが 展開後にワークフローが正しく動作しません。原因は、ワークフローの情報(イベントレシーバー、ワークフロー関連付けなど)が リストテンプレートに含まれいるため、展開後のリストで 「ワークフローがないのに ワークフローの情報はある」という状態になるためです。

この状態で さらにワークフローを付加すると 1ワークフローが動作したときに 複数のイベントレシーバーが動作してしまい、おかしなことになります。この問題を回避するためには リストテンプレートを保存する前に、リストに関連付けられたワークフローを削除します。例えば 検証用のサイトと実運用のサイトがあった場合、以下の手順になります。
1) 検証用のサイト: リスト/ワークフローを作成
2) 検証用のサイト: 動作テスト
3) 検証用のサイト: ワークフローを削除
4) 検証用のサイト: リストテンプレートを保存
5) 実運用のサイト: リストテンプレートを登録
6) 実運用のサイト: リスト/ワークフローを作成
7) 実運用のサイト: 動作テスト
※ワークフローの種類(SharePoint標準/SharePoint Designer/Nintex Workflowなど)により、ワークフローの移行方法は異なります。ここでは「リストの移行」のお話しに限定しています。

上記の手順では、せっかく検証用のサイトで動作テストまでしたのに、検証用のサイトにはワークフローがない状態になります。また、検証用のサイトと実運用のサイトとでリスト/ワークフローの設定が異なります。
※検証用のサイトで再度、ワークフローを作成すれば 設定は合わせられます。

SharePointリストテンプレートからワークフローを削除

「SharePointフィールド名(内部名)」の記事でも説明しましたが、SharePointリストテンプレート内の manifest.xml にリストの情報が入っています。manifest.xml内のワークフロー情報を削除すれば...展開後にワークフローが 悪さ しなくなります。全体の流れは 以下の通りです。
・リストテンプレートを保存
・リストテンプレートから manifest.xml を展開
・manifest.xml からワークフロー情報を削除
・manifest.xml から リストテンプレートを作成
・リストテンプレートを展開

※リストテンプレートの保存、展開は SharePoint標準機能なので 説明は省きます。

リストテンプレートから manifest.xml を展開

以下の手順で manifest.xmlを展開します。
手順 1) リストテンプレートの拡張子を stp から cabに変更
手順 2) エクスプローラ,EXPANDコマンドなどで cabファイルから、「manifest.xml」を展開

SharePoint リストテンプレートから ワークフローを削除する方法

ここで リストテンプレート(cabファイル)内に manifest.xml 以外のファイル(例: 50000000.000)があれば それらのファイルも展開しておいてください。

manifest.xml からワークフロー情報を削除

次に、manifest.xmlからワークフロー情報を削除します。
手順 3) manifest.xmlを XMLエディタ、メモ帳などで開く
手順 4) ListTemplate/UserLists/List/MetaDataタグ配下のReceiversタグを削除
手順 5) ListTemplateタグ配下のWorkflowAssociationsタグを削除
手順 6) manifest.xmlを保存

manifest.xml から リストテンプレートを作成

最後に、編集したmanifest.xmlからリストテンプレート(stpファイル)を作成します。
手順 7) MAKECAB.EXE で manifest.xml からリストテンプレートを作成

MAKECABコマンドは Windows標準のCABファイルを作成するコマンドです。コマンドプロンプトで実行します。
「手順 2)」で リストテンプレートに manifest.xml だけの場合と、リストテンプレートにmanifest.xml以外にもファイルがある場合で CABファイルの作成方法(MAKECAB.EXEのパラメータ指定)が異なります。

[manifest.xml だけの場合]

手順 7A-1) 編集したmanifest.xmlと リストテンプレートファイル名を指定します。

手順 7A-2) カレントディレクトリに リストテンプレートができます。

[manifest.xml以外にもファイルがある場合]

手順 7B-1) 「手順 2)」で展開した manifest.xml以外のファイルと、編集したmanifest.xmlを フォルダ(例: D:¥Work)に 格納

手順 7B-2) フォルダ内に ファイル一覧のテキストファイル(例: filelist)を テキストエディタで作成

手順 7B-3) コマンドプロンプトを起動で MAKECAB.EXEを実行

手順 7B-3) カレントディレクトリ作成された 「disk1」フォルダ内の「1.cab」を リストテンプレート(例: DocLib.stp)にリネーム

以上で、ワークフロー情報を削除した リストテンプレートができました。後は、このリストテンプレートを SharePoint サイトの設定で リストテンプレートギャラリーに登録し、リストを作成してください。

※通常のCABファイルであれば +Lhacaなどのフリーソフトで作成できますが、SharePointのリストテンプレートの場合、+Lhacaなどのフリーソフトで作成したCABでは(何故かはわかりませんが)リスト展開時にエラーとなります...。


2018年の記事

2017年の記事


風水吉凶方位 風水吉凶方位 |  奇門遁甲 奇門遁甲 |  金運神社 金運神社 |  仏像 仏像 |  論語 論語 |  般若心経 般若心経 |  二十四節気 二十四節気 |  菜根譚 菜根譚 |  SharePoint活用 SharePoint |  OneNote活用 OneNote |  ICT活用 ICT