Share via


TFS と Project Server の間のフィールド マッピングのカスタマイズ

エンタープライズ プロジェクト計画とチーム プロジェクト間でデータを同期するには、Visual Studio Team Foundation Server (TFS) の作業項目フィールドを Microsoft Project Server のフィールドに関連付ける必要があります。 フィールド マップをカスタマイズすることで、フィールドを追加し、フィールドの同期方法を指定できます。 Project の組み込みおよびユーザー設定の両方のフィールドをマップできます。 たとえば、スケジュールに関連しないデータ (コスト センター、チーム名、ヘルス ステータスなど) を格納するフィールドをマッピングに追加すると、これらの種類のデータを共有できます。

Project Server と同期するチーム プロジェクトをホストするチーム プロジェクト コレクションごとに、1 セットのフィールド マップを保持します。 Project Web Access または Project Web App (PWA) のインスタンスにマップしたチーム プロジェクト コレクションごとにフィールド マップを定義する必要があります。 既定のマッピングをアップロードすることも、マッピング ファイルをカスタマイズしてそれをアップロードすることもできます。 既定のマッピングをアップロードする方法については、このトピックで後述する「マッピングをアップロードする」を参照してください。

注意

TFS と Project Server の統合用のマッピングは、Microsoft Project のマッピング ファイルとは異なります。詳細については、「Microsoft Project のフィールド マッピング ファイルのカスタマイズ」を参照してください。

次の図に示すように、5 つの手順でマッピングをカスタマイズします。

Team Foundation Server と Project Server の間のフィールド マップのカスタマイズ

PS-TFS フィールド マップのカスタマイズのためのワークフロー

注意

マッピング ファイルは、必要に応じて何度でも更新できます。[Project Server] タブに表示されるフィールドは、データ同期に含まれる作業項目の種類ごとに更新されます。[Project Server] タブの定義は手動で変更しないでください。詳細については、このトピックで後述する「[Project Server] タブをカスタマイズする」を参照してください。

このトピックの内容

  • 既定のマッピング

  • マップする追加フィールドを決定する

  • マッピングをファイルにダウンロードする

  • マッピングを更新する

  • マッピングをアップロードする

  • (省略可能) [Project Server] タブをカスタマイズする

注意

デモ ビデオについては、Microsoft Web サイトの次のページを参照してください: Team Foundation サーバーとプロジェクト サーバーの統合のためにフィールド マッピングを管理する

要件

このトピックの手順を実行するには、[Project Server の統合の管理] アクセス許可が [許可] に設定されている必要があります。 また、Team Foundation Server のサービス アカウントに [Project Server の統合の管理] アクセス許可が付与されている必要があります。 詳細については、「TFS と Project Server を統合するためのアクセス許可の割り当て」を参照してください。

既定のマッピング

マッピングによって、ユーザーが Team Foundation または Project Server の情報を更新したときに同期されるフィールドが決まります。 次の同期の種類ごとに独自のマッピング セットがあります。

  • 発行同期の場合、Project Server のデータによって Team Foundation のデータが更新されます。 Team Foundation のフィールドを更新する Project Server のフィールドを指定するには、targetToTfs 要素を使用します。

  • ステータス同期の場合、Team Foundation のデータは Project Server のステータス キューのデータに送信されます。 Project Server のステータス キュー フィールドを更新するフィールドを指定するには、tfsToTarget 要素を使用します。

これらの 2 種類の同期の詳細については、「TFS と Project Server の統合における同期プロセスの概要」を参照してください。

次の表に、Team Foundation と Project Server の間でマップされる既定のフィールド セットを示します。 この表には、TFS に用意されている既定のプロセス テンプレートに基づいて、どの種類の作業項目がフィールドを使用するかも示されています。 Agile Software Development または CMMI (能力成熟度モデル統合) Process Improvement に基づいたプロセス テンプレートを使用して作成されたチーム プロジェクトをマップする場合、これらのマッピングは変更しないでください。 スクラム プロセス テンプレートから作成されたチーム プロジェクトへのマップを行う場合、このトピックで後述する「スクラム プロセス テンプレートから作成されたチーム プロジェクトにマップするときに必要な変更」の説明に従って変更を加える必要があります。

マッピングと同期プロセスの詳細については、「TFS と Project Server の統合における XML 要素リファレンスのフィールド マッピング」を参照してください。

Team Foundation のフィールド

Project Server のフィールド

ステータス キューのフィールド

アジャイルの作業項目の種類

CMMI の作業項目の種類

スクラムの作業項目の種類

タイトル

タスク名

タイトル

すべて

すべて

すべて

担当者

リソース

リソース

すべて

すべて

すべて

実績作業

Task Actual Work (タスクの実績作業時間)

Resource Actual Work (リソースの実績作業時間)

タスク

タスク

なし

残存作業

Task Remaining Work (タスクの残存作業時間)

Resource Remaining Work (リソースの残存作業時間)

タスク

タスク

タスク

最初の見積もり

基準作業

  

タスク

バグ、変更要求、懸案事項、要件、およびタスク

なし

開始日

Task Start (タスクの開始日)

Resource Start (リソースの開始日)

タスクとユーザー ストーリー

タスクと要件

なし

完了日

Task Finish (タスクの終了日)

Resource Finish (リソースの終了日)

タスクとユーザー ストーリー

タスクと要件

なし

スクラム プロセス テンプレートから作成されたチーム プロジェクトにマップするときに必要な変更

Microsoft Visual Studio Scrum プロセス テンプレートから作成されたチーム プロジェクトからのデータ フローを有効にするには、2 つの変更が必要です。 まず、"タスク" 作業項目の種類に "実績作業" フィールドおよび "最初の見積もり" フィールドを追加する必要があります。また、チーム メンバーが状態を完了または削除済みに設定するときに "残存作業" フィールドが空であることを要求する要素は、削除する必要があります。

スクラムのタスクの種類の定義を更新するには

  1. Visual Studio またはチーム エクスプローラーがインストールされている環境でコマンド プロンプト ウィンドウを開き、次のように入力します。

    cd %programfiles(x86)%\Microsoft Visual Studio 12.0\Common7\IDE
    

    32 ビット版の Windows で、%programfiles(x86)% を %programfiles% に置き換えます。

  2. タスクの型定義をエクスポートするには、次のコマンドを入力します。そのとき、ここに示されている引数を自分のデータに置き換えます。CollectionURL ではチーム プロジェクト コレクションの URL を指定し、ProjectName ではコレクション内で定義されたチーム プロジェクトの名前を指定し、「DirectoryPath\FileName.xml」ではエクスポートするファイルの名前と場所を指定します。 次に、Enter キーを押します。

    witadmin exportwitd /collection: /p:"ProjectName" /n:"Task" /f:"DirectoryPath\FileName.xml"
    
  3. テキスト エディターまたは Visual Studio で、エクスポートしたファイルを開きます。

  4. FIELDS 定義のセクションで、残存作業の要素の前に次のコード スニペットを追加します。

    <FIELD name="Completed Work" refname="Microsoft.VSTS.Scheduling.CompletedWork" type="Double" reportable="measure" formula="sum">
       <HELPTEXT>The number of units of work that have been spent on this task</HELPTEXT>
    </FIELD>
    <FIELD name="Original Estimate" refname="Microsoft.VSTS.Scheduling.OriginalEstimate" type="Double" reportable="measure" formula="sum">
       <HELPTEXT>Initial value for Remaining Work - set once, when work begins. </HELPTEXT>
    </FIELD>
    
  5. <WORKFLOW> セクションで、<STATE value="Done"> と <STATE value="Removed"> の両方の定義から次のコード スニペットを削除します。

    <FIELD refname="Microsoft.VSTS.Scheduling.RemainingWork">
       <EMPTY />
    </FIELD>
    
  6. <FORM> セクションに次の Control 要素を追加します。

    <Control FieldName="Microsoft.VSTS.Scheduling.OriginalEstimate" Type="FieldControl" Label="Original Estimate:" LabelPosition="Left" />
    <Control FieldName="Microsoft.VSTS.Scheduling.CompletedWork" Type="FieldControl" Label="Completed:" LabelPosition="Left" />
    
  7. ファイルを保存して閉じます。

  8. 示されている引数を実際のデータに置き換えて、ファイルをインポートします。

    witadmin importwitd /collection: /p:"ProjectName" /f:"DirectoryPath\FileName.xml"
    
  9. チーム プロジェクトまたは作業項目のページを最新の情報に更新して、変更を確認します。

詳細については、「作業項目の種類のエクスポートおよびインポート [リダイレクト]」、「作業項目フィールドの定義」、および「作業項目フォームのデザインとカスタマイズ [リダイレクト]」を参照してください。

マップする追加フィールドを決定する

既定のフィールド以外に、同期する各フィールドについて次の情報を決定します。

  • Team Foundation のフィールドの参照名。 Team Foundation で作成する必要があるフィールドと Project Server のフィールドを同期する場合は、最初に同期対象の作業項目の種類ごとにフィールドを作成します。 詳細については、「Visual Studio ALM の作業項目フィールド参照」および「作業項目フィールドの定義」を参照してください。

  • Team Foundation のフィールドを更新する Project Server のフィールドの名前。 使用可能なフィールドの一覧については、「TFS と Project Server の統合での Project Server フィールドのマッピングの制限事項」を参照してください。

  • Project Server で更新されるフィールドの名前、および Team Foundation Server 内のミラー フィールドを更新する Project Server のフィールド名が更新されます。

  • フィールドを作業項目フォームに表示するかどうか。 作業項目フォームに表示するフィールドについては、displayTfsField 属性の値を true に設定します。 作業項目フォームについては、displayTfsMirror 属性の値を true に設定します。

  • Team Foundation のフィールドの値で Project Server のフィールドの値を上書きできるようにしてデータの競合を解決するか、または両方の値を保持するか。 この決定によって、onConflict 属性の値が決まります。 onConflict=”PsWins” が設定されている場合、Project Server のフィールドの値が Team Foundation のフィールドの値を上書きします。 詳細については、「FIELD 要素と属性」を参照してください。

  • Project Server の選択リストまたはカスタム ルックアップ テーブルをサポートするうえで定義する必要があるその他の値。

マップ可能なデータに対する制限事項

マップするフィールドを決定したら、次の制限事項を確認してください。

  • Project Server から Team Foundation Server には、タスクレベルの情報である pjTask で始まるフィールドのみを送信できます。

  • Team Foundation Server から Project Server のステータス キューには、リソースレベルの情報である pjResource で始まるフィールドのみを送信できます。

  • "タイトル" フィールドは、Team Foundation Server とステータス キューの両方に送信できる唯一のフィールドです。

  • "担当者"、"実績作業"、および "残存作業" の各フィールドのロールアップ値は自動的に計算されます。 追加のフィールドをマップして、それらのロールアップ値を計算させることはできません。 詳細については、「チーム プロジェクトにマップされているエンタープライズ プロジェクトにおけるリソース ロールアップの操作」を参照してください。

  • マップする各フィールドのデータ型または単位が、標準およびユーザー設定のエンタープライズ フィールドの条件に従っていることを確認する必要があります。 詳細については、「TFS と Project Server の統合での Project Server フィールドのマッピングの制限事項」の「データ型とフィールド マップの条件」を参照してください。

  • Team Foundation の選択リストに関連付けられているフィールドはマップできます。 ただし、選択リストに一致させるために Project Server 内に参照テーブルを作成する必要があります。 選択リストと参照テーブルは自動的には同期されません。

詳細については、「TFS と Project Server の統合での Project Server フィールドのマッピングの制限事項」を参照してください。

例: チーム名をマップしてプロジェクトに表示する

次の例では、Team Foundation のカスタム文字列フィールド MyCompany.MyOrg.DevTeamName が、Project Server のエンタープライズ ユーザー設定テキスト フィールド My Company Team Name にマップされます。 この例は、タスクに関連付けられているチームの名前をプロジェクト Professional に表示するために使用できます。

<field tfsName="MyCompany.MyOrg.DevTeamName" tfsMirrorName="Mirror.MyCompany.MyOrg.DevTeamName" displayTfsField="false" displayTfsMirror="false" onConflict="DoNothing">
   <tfsToTarget>
   <target provider="ProjectServerStatusQueue" name=" My Company Team Name" />
   </tfsToTarget>
   <targetToTfs>
      <target provider="ProjectServerPublished" name=" My Company Team Name" />
   </targetToTfs>
</field>

どちらのフィールドも作業項目フォームには表示されません。 また、値が一致しない場合、各フィールドには独自の値が保持されます。

ページのトップへ

例: プロジェクトに区分パスおよびイテレーション パスを表示する

Team Foundation で "区分" (System.AreaPath) および "イテレーション" (System.IterationPath) フィールドをマップすると、プロジェクト計画内に表示できます。 これらのツリー パス フィールドは頻繁に変更されるため、これらのフィールドは Project のテキスト フィールドとしてマップする必要があります。 これらのフィールドを使用するプロジェクト マネージャーは、完全な区分パスまたはイテレーション パスを手動で入力する必要があります。

重要

Team Foundation Server の現在の実装および Project Server の統合は、2 台のサーバー製品の間にマップされているフィールド用に定義されている許可値リスト、選択リスト、グローバル リスト、ツリー パス リストの自動同期をサポートしていません。最良の結果を得るには、Team Foundation 内のエントリに一致するエントリをプロジェクト計画に手動で入力する必要があります。有効なエントリが指定されていない場合、計画が発行されるときに検証のためのダイアログ ボックスが表示されます。

"区分" フィールドと "イテレーション" フィールドをプロジェクト計画に追加するには、次の操作を実行します。

  1. 2 つのユーザー設定エンタープライズ フィールドを Project Server に追加し、"区分" フィールドと "イテレーション" フィールドというラベルを付けます。

    詳細については、Microsoft Web サイトの次のページを参照してください: 参照テーブルとエンタープライズ ユーザー設定フィールドを作成する

  2. フィールド マップを、チーム プロジェクトが定義されているチーム プロジェクト コレクションからエクスポートします。

    詳細については、このトピックで後述する「マッピングをファイルにダウンロードする」を参照してください。

  3. 次のコードをファイルに追加します。

    <field tfsName="System.AreaPath" tfsMirrorName="Mirror.System.AreaPath" displayTfsField="true" displayTfsMirror="true">
            <tfsToTarget>
              <target provider="ProjectServerStatusQueue" name="Area (TFS)" />
            </tfsToTarget>
            <targetToTfs>
              <target provider="ProjectServerPublished" name="Area (TFS)" />
            </targetToTfs>
          </field>
          <field tfsName="System.IterationPath" tfsMirrorName="Mirror.System.IterationPath" displayTfsField="true" displayTfsMirror="true">
            <tfsToTarget>
              <target provider="ProjectServerStatusQueue" name="Iteration (TFS)" />
            </tfsToTarget>
            <targetToTfs>
              <target provider="ProjectServerPublished" name="Iteration (TFS)" />
            </targetToTfs>
          </field>
    
  4. 更新済みのフィールド マップ ファイルを、このトピックで後述する「マッピングをアップロードする」の説明に従ってインポートします。

  5. プロジェクト計画を Project Server と同期します。

  6. "区分 (TFS)" と "イテレーション (TFS)" という 2 つの新しいフィールド用の 2 つの新しい列をプロジェクト計画に追加します。

Team Foundation の "区分" フィールドおよび "イテレーション" フィールドは、プロジェクト計画内のこれらのフィールドと同期されます。 また、Team Foundation で定義されている値を指定する場合、これらのフィールドを Project で更新し、変更内容を Team Foundation に発行できます。

ページのトップへ

マッピングをファイルにダウンロードする

注意

チーム プロジェクト コレクションにマッピングがアップロードされている場合に限り、そのコレクションからマッピングをダウンロードできます。既定のマッピングをファイルにダウンロードする場合は、このトピックで後述する「既定のマッピングをアップロードするには」の説明に従って、事前に既定のマッピングをアップロードしておく必要があります。別の方法として、既定のマッピングの内容をコピーすることもできます。詳細については、「TFS と Project Server の統合における XML 要素リファレンスのフィールド マッピング」を参照してください。

マッピングをファイルにダウンロードするには

  1. TfsAdmin コマンド ライン ツールを実行するには、Visual Studio またはチーム エクスプローラーがインストールされている環境でコマンド プロンプト ウィンドウを開き、次のように入力します。

    cd %programfiles%\Microsoft Visual Studio 11.0\Common7\IDE
    

    64 ビット版の Windows で、%programfiles% を %programfiles(x86)%. に置き換えます。

  2. 次のコマンドを入力し、Enter キーを押します。

    TfsAdmin ProjectServer /DownloadFieldMappings /collection:tpcUrl /filePath:MappingFile
    

    tpcUrl をチーム プロジェクト コレクションの URL (Uniform Resource Locator) で置き換え、MappingFile をカスタマイズするファイルのパスと名前で置き換えます。

  3. 次のようなメッセージが表示されるまで待機します。

    MappingFile をチーム プロジェクト コレクション tpcUrl にダウンロードします。

    フィールド マッピング ファイル MappingFile をチーム プロジェクト コレクション tpcUrl に正常にダウンロードできました。

マッピングを更新する

マッピング ファイルに追加するフィールドごとに、field 要素およびそのサブ要素と属性を指定します。 詳細については、「TFS と Project Server の統合における XML 要素リファレンスのフィールド マッピング」を参照してください。

マッピングをアップロードする

マッピングをアップロードするには、UploadFieldMappings コマンドを使用します。 既定のマッピングをアップロードするには、/usedefaultfieldmapping オプションを使用します。 それ以外の場合は、マッピング要素を含むファイルを指定する必要があります。

既定のマッピングをアップロードするには

  1. コマンド プロンプトで次のコマンドを入力し、Enter キーを押します。

    TfsAdmin ProjectServer /UploadFieldMappings /collection:tpcUrl /usedefaultfieldmappings
    

    tpcUrl をチーム プロジェクト コレクションの URL に置き換えます。

  2. 次のようなメッセージが表示されるまで待機します。

    既定のフィールド マッピングを CollectionUri にアップロードしています。

    フィールド マッピングがコレクション CollectionUri に正常にアップロードされました。

ファイルからマッピングをアップロードするには

  1. コマンド プロンプトで次のコマンドを入力し、Enter キーを押します。

    TfsAdmin ProjectServer /UploadFieldMappings /collection:tpcUrl /filePath:MappingFile /force
    

    tpcUrl をチーム プロジェクト コレクションの URL で置き換え、MappingFile をカスタム マッピング ファイルのパスと名前で置き換えます。 既存のマッピングを更新する場合は、/force を指定します。

  2. 次のようなメッセージが表示されるまで待機します。

    MappingFile をチーム プロジェクト コレクション tpcUrl にアップロードしています。

    フィールド マッピング ファイル MappingFile をチーム プロジェクト コレクション tpcUrl に正常にアップロードできました。

[Project Server] タブをカスタマイズする

エンタープライズ プロジェクト計画をチーム プロジェクトに関連付けると、次の図に示すように、[Project Server] タブが作業項目フォームに追加されます。 このタブは、データ同期に含めるよう指定した作業項目の種類に対してのみ追加されます。 このタブは、フォームに表示するフィールドについて、displayTfsField 属性または displayTfsMirror 属性を true に設定してカスタマイズできます。

[Project Server] タブ

[Project Server] タブの既定のフィールド

重要

チーム プロジェクト コレクションについて定義されているフィールド マッピングによって、[Project Server] タブに表示されるフィールドが決定します。チーム プロジェクトの作業項目の種類に追加されたタブを更新するには、コレクションのフィールド マップを変更します。フィールドを [Project Server] タブに追加するか、フィールドの場所をフォームで変更して、作業項目フォームを手動でカスタマイズした場合、このタブは、今後フィールド マッピングを変更したときに自動的に更新されない場合があります。このような場合は、タブを手動で変更できます。詳細については、「作業項目の種類の定義に追加される XML 要素」を参照してください。

[Project Server] タブに表示される既定の各フィールドの詳細については、「データの同期をサポートするために TFS に追加された Project Server フィールド」を参照してください。

参照

処理手順

TFS と Project Server の統合の構成

概念

同期する作業項目の種類の指定

Team Foundation Server と Project Server の統合の管理