[[Open棟梁Project>http://opentouryo.osscons.jp/]] - [[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]] -[[戻る>Dynamicsのカスタマイズ]] * 目次 [#g3778851] #contents *概要 [#be1bd860] -マーケティング・モジュール -営業モジュール -サービス・モジュール 分野におけるCRM(顧客関係管理)を中心に構築されている。 その一方で、民間・政府・非営利のあらゆる部門における広範囲な~ 機能を制御可能な多様性からxRMという言葉が使われるようになってきている。 *構成 [#x323f671] カスタマイズは -[[ソリューション コンポーネント>#cb6cf5ad]] -[[外部コンポーネント>#o57e5a1d]] から構成される。 *方法 [#r91122d1] カスタマイズの方法には -Web アプリケーションの --設定 --カスタマイズ ツール -外部アプリケーション -レポート サービス --フィルター ビュー --Webサービス ---SDKによるプラグイン開発 などがある。 -アドオン --[[.NET>.NET開発]] --[[ADO.NET]] --[[WCF]] --[[WF]] --T-SQL -Webコンテンツ --JavaScript --HTML --[[Silverlight]] を除き、コンフィギュレーションのみでコードは書かないので~ 外部アプリケーションを除き、柔軟性の高いスクラッチ開発的は不可能。 -サポートされる Microsoft Dynamics CRM の拡張機能~ https://msdn.microsoft.com/ja-jp/library/gg328350.aspx **ポイント アンド クリック [#x21f60d4] 設計情報の入力I/Fに専用ツール(デザイナ型)を採用し、GUIツールだけで変更可能 ***手法 [#q36ff5e0] GUIツールだけで変更可能な手法 -Web アプリケーション --設定 --カスタマイズ ツール ***対象 [#d99222be] -[[エンティティ>#v7cf2804]] --[[下位コンポーネント>#kae3c146]] ---[[フィールド>#e88ddc32]] ---[[フォーム>#cfef2139]] ---[[ビュー>#y55bd4a1]] ---[[グラフ>#tdb7f377]] **JavaScript [#t32abf6c] ***手法 [#oacaedd6] -JavaScript -Web アプリケーションの設定 ***対象 [#f9955ec3] -フォーム スクリプト イベント ハンドラー~ フォーム イベント ハンドラーが JavaScript Web リソースで定義された関数を呼び出すように構成する。 -コマンドバー (リボン) コマンド~ <CustomRule>(RibbonDiffXml) or <JavaScriptFunction>(RibbonDiffXml)~ 要素を使用し、JavaScript Web リソース内に定義された関数を呼び出すアクションを定義する。 -Web リソースと IFRAME~ HTML Web リソース内で JavaScript Web リソースを使用、親子で対話できる。 **プラグイン [#ybca4a58] -ビジネス ロジックのプラグイン メカニズム。 -Dynamics CRM SDK、Visual Studio、Excel等の開発ツールを併用する必要がある。 -設置型、IFD、およびOnline(分離モード) の Microsoft Dynamics CRM 展開で使用可能。 -アセンブリの %installdir%\server\bin\ フォルダーへの追加は、~ 設置型および IFD サーバー インストール型のみでサポートされている。 -プラグインの開発~ https://msdn.microsoft.com/ja-jp/library/gg328490.aspx ***手法 [#f4a66a75] -Microsoft Dynamics CRM SDK -Web アプリケーションの設定 ***種類 [#u83fe2e1] -同期・非同期 --同期ビジネスロジック・プラグイン~ (イベント実行・パイプライン) ---プレイベント・プラグイン ---プラットフォーム・コア操作プラグイン ---ポストイベント・プラグイン --非同期ビジネスロジック・プラグイン ---ユーザ定義プラグイン ---カスタムワークフロー・プラグイン -イベント実行パイプライン~ https://msdn.microsoft.com/ja-jp/library/gg327941.aspx **XMLを直接編集 [#v6e07d97] エクスポートしたソリューション パッケージのXMLを直接編集 **Webサービスの使用 [#lfd40f04] ***手法 [#g4ba5764] Webサービスを使用した外部アプリケーションの開発 -DiscoveryService(探索サービス) --マルチテナント環境下でユーザが所属する組織を判別 -OrganizationService(組織サービス) --Microsoft Dynamics CRM SDKのメインWebサービス --CRMのデータ、メタデータにアクセスするコードを記述するためのメソッドを含む --最近のアプリケーションの SOAP エンドポイント -Organization Data Service --OData エンドポイント -DeploymentService ***対象 [#r7a90249] Webサービスを使用した -外部アプリケーション -レポート サービス -プラグイン **データ アクセス [#o27ef818] ***手法 [#i9396aba] -Microsoft Dynamics CRM SDKを使用し、~ Web サービス経由でデータ アクセス --エンティティ --QueryExpression --QueryByAttribute --FetchXML --LINQ クエリ -ビュー経由でデータ アクセス --フィルターされたビュー(Filtered views) ***対象 [#i50b5597] データ アクセスする、 -外部アプリケーション -レポート サービス -Webサービス -プラグイン **セキュリティ [#a097d1f6] -ロールベース セキュリティ --特権 --アクセス レベル -オブジェクトベースのセキュリティ --レコードベースのセキュリティ --フィールドベースのセキュリティ -セキュリティ プリンシパル(ユーザーまたはチーム) -認証方法 --ADDS --ADFS --AzureAD *ソリューション [#g27fd4e3] **概要 [#rc6f1531] -[[ソリューション コンポーネント>#cb6cf5ad]]をグループ化したもの。 -特定のビジネス要件一式を満たすために~ システムに対して行うカスタマイズを整備するための手段。 -一連のカスタマイズ([[ソリューション コンポーネント>#cb6cf5ad]])をパッケージ化。 -一部のユーザー or 全てのユーザーに必要となる機能を提供する。 -カスタマイズ --カスタマイズに対応するカスタム ソリューションを新規作成する。 --[[既定のソリューション>#aba80e7a]]を直接編集することもできる。 --推奨:ビジネス要件のまとまり毎にカスタム ソリューションを新規作成する。 **利点 [#xbf01385] -他のコンポーネントに気を取られること無く、~ 必要なコンポーネントのみに取り組むことができる。 -元の要件に複数のソリューションを関連付けることで、変更を記録できる。 -開発環境からのエクスポートと、テスト運用環境へのインポートが可能。 --エクスポートに含まれるのは差分のみ。サイズが小さくて済管理も容易。 --エクスポートは、変更管理レコードの一部として保存できる。 --過去のソリューションを使用して変更をロールバックできる。 **構成 [#ff24d2ea] -ソリューションの概要~ https://msdn.microsoft.com/ja-jp/library/Gg334576.aspx ***システム ソリューション [#gc84622f] -Microsoft Dynamics CRM 内に定義された既定のソリューション コンポーネント -組織作成時に作成され、システムの全コンポーネントを含んでいる。 -既定のアプリケーションの動作を定義している。 -既定のソリューションは、 --エクスポート・インポートが可能だが、 --マネージド ソリューションとしてのエクスポートが不可能。 --全体を[[Dynamics CRM Online]]に展開することが不可能。 -システムが複雑化すると、既定のソリューションを使用した方法では対応が困難になる。~ このため、カスタム ソリューションを使用して、コンポーネントを分割する。 ***マネージド ソリューション [#q56e227d] -主に、ISVがアドオンを顧客に販売するような配布のケースで使用する。 -開発用用途のアンマネージド ソリューションをエクスポート&パッケージ化したもの。 -配布とインストールを目的とする完成したソリューション。 -インポート・エクスポート --システム コンポーネントは変更されない。 --アンマネージド ソリューションの部分はロールバックできる。 --アプリケーションの動作は、マネージド ソリューションの変更の組み合わせになる。 ***アンマネージド ソリューション [#wfd44e9f] -配布を目的としない、展開で使用。 --開発中のソリューション展開 --社内的な変更の展開 -アンマネージド カスタマイズをグループ化したもの。 -インポート・エクスポート --システム コンポーネントを変更する。 --変更の上書き&上書きの動作になる。 --ロールバックできない(コンポーネントは削除されない)。 --インポート順が異なると、結果が異なってくることがある。 ***アンマネージド カスタマイズ [#e67bfc2d] -開発中のアンマネージド カスタマイズの実体は、すべて既定のソリューションに含まれる。 -システム ソリューションはアンマネージド カスタマイズできる。 -マネージド ソリューションはアンマネージド カスタマイズできる。 **新規作成 [#kf9fdc56] ソリューション(カスタム ソリューション)を新規作成する。 -始め、開発のためのアンマネージド ソリューションを作成する。 -開発中のアンマネージド カスタマイズの実体は、すべて既定のソリューションに含まれる。 -アンマネージド ソリューションは、アンマネージド カスタマイズの参照のみ保持する。 -アンマネージド ソリューションを削除すると、~ 既定のソリューションからアンマネージド カスタマイズも削除される。 ***ロール [#rf8e69ab] 以下のロールを持つユーザでCRMの組織にサインイン。 -システム カスタマイザー -システム管理者 ***手順 [#b17bd4a1] -ナビゲーション バーの[Microsoft Dynamics CRM]の[設定]、[ソリューション]、[新規]。 -[新しいソリューション]フォームが表示される。 -必要事項を入力し保存。 --表示名:ソリューションの呼称(変更可能) --名前:英数字のみ(変更不可能) --発行元:マネージド ソリューションで特に重要になる。 ---ソリューション・コンポーネントの発行元を特定可能な接頭辞を定義する。~ ・カスタマイズした組織:カスタマイザー(個人、組織、企業)~ ・ビジネス要件:カスタマイズ(モジュール名) ---接頭辞:8文字以内~ ・新規コンポーネント名の先頭に付与され名称の衝突を抑止する。~ ・接頭辞 = カスタマイズした組織 + ビジネス要件などとする。 ---補足:組織を作成すると、”既定の発行者”という発行元が自動的に作成される。 --構成ページ --バージョン:バージョン番号(数字のみ) ---メジャー.マイナー.ビルド.リビジョン ---推奨:年.月.日.リビジョン --説明:ソリューションの機能の概要(2,000文字) -エクスポート時のファイル名~ "名前"+"バージョン" **複数ソリューションの用例 [#e4505cdb] ***開発 [#j40e4373] 複数のカスタマイザーによるカスタマイズ -利点 --並行作業 --開発、マージ、テスト -欠点 --競合の類の検出の遅延。 ***バージョン [#t28d8a73] 完了した作業に新しい要件が追加された時。 -以下の場合は旧ソリューションに変更を行う。 --バグ修正(リビジョン・アップ) -以下の場合は新ソリューションに、新コンポーネント追加を行う。 --当該ソリューションへの更新が枯れている場合 **エクスポート・インポート [#i9e9548d] ***エクスポート [#se1d5735] -ZIP形式でのエクスポート~ 以下が同梱されている。 --XML --DLL --XAML --画像ファイル -用途 --開発-リリースまで。 ---開発-テスト-運用環境 ---受け入れテスト、トレーニング ***インポート [#q7ab7315] -バージョン番号で管理されている。 --インポート元の方がバージョン番号が大きい場合はインポート不可能。 -コンポーネントを含まないソリューションをインポートしてもコンポーネントは削除されない。 -ダウン・レベリング CRMのマイナーバージョンが違う場合で、旧バージョンのCRMがインポートする場合、~ 旧バージョンでサポートされない機能(コンポーネント/プロパティ)を削除する。 *ソリューション コンポーネント [#cb6cf5ad] カスタマイズ ツールまたは API を使用して作成され、アプリケーション内で完全にホストされる。 **種類 [#sdfb9efd] ***スキーマ [#x91cdfa4] -[[エンティティ>#v7cf2804]] --フィールド --フォーム --ビュー --グラフ -関連付け -接続とつながりロール -グローバル オプション セット ***ユーザインターフェイス [#oabd80a4] -アプリケーション リボン -サイトマップ -フォーム -エンティティ リボン -Webリソース -分析 --ダッシュボード --レポート --グラフ --ビジュアル化 ***プロセス/コード [#ped8aa8f] -プロセス --ダイアログとワークフロー -プラグイン --アセンブリ --処理手順 ***テンプレート [#rba84b8e] -差し込み印刷 -電子メール -契約 -記事 ***セキュリティ [#o70a626f] -セキュリティ ロール -フィード レベルのセキュリティ プロファイル ***データ レコード [#hc07537e] -データ レコード --ユーザ --チーム、部署 --キュー --目標 --情報カテゴリの階層 --製品カタログに関連したもの -データレコードを使用したソリューション コンポーネント --ビュー --レポート --カスタム コード -信頼性を担保する方法。 --データインポートウィザードを使用する。 --インポートフィアルにレコードのGUIDを含める。 ***外部コンポーネント [#o57e5a1d] アプリケーションの外部で動作するソフトウェアは、~ インストーラー プログラムなど、従来の方法で~ アプリケーションをパッケージ化してインストールする。 ***メタデータ [#vda58a4d] コンポーネントの中にはメタデータを形成しているものもある。 -コンポーネント間の連携 -コンポーネントの体裁(見た目) -SQLデータベースへのデータ格納方法 **新規作成 [#b8cf8b40] -ソリューション コンポーネントの追加~ http://www.microsoft.com/ja-jp/dynamics/crm-customer-center/add-a-solution-component.aspx -既定のソリューション コンポーネントの表示または編集~ http://www.microsoft.com/ja-jp/dynamics/crm-customer-center/view-or-edit-default-solution-components.aspx ***ロール [#w2f87354] 同上 ***手順 [#r52487f2] -ナビゲーション バーの[Microsoft Dynamics CRM]の[設定]、[ソリューション]、目的のソリューションをダブル クリック。 -ソリューションエクス プローラーのナビゲーション ウィンドウで[コンポーネント]をクリック。 -[コンポーネントの種類] の一覧で追加する種類をクリックし、コマンド バーで、[新規] または [既存の追加] を選択。 *エンティティ [#v7cf2804] **下位コンポーネント [#kae3c146] また、エンティティを作成すると以下のコンポーネント~ (for メタデータ・体裁)が自動的に作成され、個別の削除は不可能。~ 内部的には、エンティティに対応したDBのテーブルも作成されている。 ***[[フィールド>#n8544fb0]] [#e88ddc32] -エンティティのプロパティ -DBやビューの列に対応 -フォームのInput, Output, Editフィールドに対応するコントロール ***[[フォーム>#vb691813]] [#cfef2139] -エンティティに対応するフォームUI -以下の各種コンポーネントが含まれる。 --フィールド --サブグリッド --レイアウト --イベントハンドラ&スクリプト -格納先:SystemForm ***[[ビュー>#d2b182f1]] [#y55bd4a1] -所謂ビューだが、SQLを使用していない。 -格納先:SavedView ***[[グラフ>#h33d89ea]] [#tdb7f377] -常にビューとペアで使用される。 -データセットから棒、折れ線などの各種グラフを生成して表示。 -一部エンティティには既成のグラフがあり、このカスタマイズも可能。 **エンティティの種類 [#babcc518] ***システム エンティティ [#z22322ac] -システム開始時に事前に定義されるエンティティ(カスタマイズ可能) -関連付けなど、依存関係があるコンポーネントは削除できない。 ***[[カスタム エンティティ>CRM エンティティのカスタマイズ]] [#g138a27f] -カスタマイズで追加したエンティティ。 -関連付けなどの依存関係を削除した後に削除可能。 **依存関係 [#nc08e30d] ***依存関係の例 [#s699405d] -サブコンポーネント -関連付け -接続とつながりロール -利用? --ダッシュボードにグラフを含める等。 ***必須コンポーネント [#s648bd32] -必須コンポーネント リストに表示される。 -しかし、エンティティの削除を妨げない。 -必須コンポーネントが一度でもエクスポートされていれば以降ソリューションへの追加は不要。 -多くの必須コンポーネントはシステム エンティティのため(、警告が表示されても)、ソリューション追加は不要。 **エンティティとDBMSスキーマ [#wb5d458b] -フィルター ビューによりエンティティが提供される。 -DBMS構造を意識する必要はない --旧バージョンではシステムフィールドとカスタムフィールドでテーブルが分割されていた。 --新バージョンではテーブル統合されたがフィルター ビューによりアプリケーションは影響を受けない。 --外部スキーマ(フィルター ビュー)により、概念スキーマ(製品のテーブル設計)変更の影響を受けない。 -必要なデータは外部キーを使用して結合される。 -概念スキーマ(テーブル)にインデックスを付与することはサポートされている。 *データ アクセス [#lca67058] **概要 [#k73ae132] DBテーブルにアクセスする方法 **アクセス方法 [#o10b4c43] ***Microsoft Dynamics CRM SDKを使用 [#bed7f545] -エンティティ -クエリを使用してデータを取得する~ https://msdn.microsoft.com/ja-jp/library/gg334607.aspx --QueryExpression --QueryByAttribute --FetchXML --LINQ クエリ ***フィルターされたビュー(Filtered views) [#f0a183ae] SQLでの直接アクセスはサポートされない。 -直接アクセスはフィルターされたビュー(Filtered views)のみサポート。 -更新は不可能、参照系(更新は不可)の外部アプリケーションの開発で利用可能。 **制限事項(Dynamics CRM Onlineで) [#lf63e3ee] ***利用できない [#d1bff232] SQLとして実行されるため、~ -フィルターされたビュー(Filtered views) ***利用できる [#m0567c50] Web サービス経由でクエリが実行されるため。 -エンティティ -QueryExpression -QueryByAttribute -FetchXML -LINQ クエリ **エンティティ [#hc5f6da7] -Create メソッド -Retrieve メソッド -Update メソッド -Delete メソッド -RetrieveMultipleMethod メソッド -Execute メソッド ***事前バインディング [#o54c745d] -ヘルパー プロキシ クラス ***遅延バインディング [#db7bb6be] -Entityクラス --ハッシュテーブル -EntityCollectionクラス --Entities --EntityName --ExtensionData --Item --MoreRecords --PagingCookie --TotalRecordCount --TotalRecordCountLimitExceeded **Fetch、QueryExpression、QueryByAttribute [#b63e6439] オブジェクトやXMLの階層構造でSQLを表現する。 -サンプル: Fetch と QueryExpression の間でクエリを変換する~ https://msdn.microsoft.com/ja-jp/library/hh547457.aspx ***QueryExpression [#h041bf5e] -QueryExpression でクエリを作成する~ https://msdn.microsoft.com/ja-jp/library/gg328300.aspx -サンプル: QueryExpression クラスを使用した複数取得~ https://msdn.microsoft.com/ja-jp/library/gg328149.aspx ***QueryByExpression [#eb6323a4] -サンプル: QueryByAttribute クラスを使用した複数取得~ https://msdn.microsoft.com/ja-jp/library/gg334708.aspx ***FetchXML [#cf8619e5] -FetchXML を使用したクエリの構築~ https://msdn.microsoft.com/ja-jp/library/gg328332.aspx --Dynamics CRM でサポートされるクエリ言語。 --T-SQL の機能に似た内容をサポート。 --Dynamics CRM のセキュリティに準じた結果セットを取得できる。 --ユーザービューやシステムビューの保存や、高度な検索の実行で利用される。 --高度な検索で利用したクエリを FetchXML として取得できる。 **[[LINQ]] [#v3640c04] -[[LINQ]] to CRM~ Microsoft Dynamics CRM Online 2015 更新プログラム クエリ プロバイダー -[[LINQ]] (.NET 統合言語クエリ) を使用してクエリを作成する~ https://msdn.microsoft.com/ja-jp/library/gg328028.aspx **フィルターされたビュー(Filtered views) [#k550a733] -Microsoft Dynamics CRM データベース(SQL Server)を直接クエリできる。 -設置型のみでサポートされるため、オンライン環境へ移行することができない。 **参考 [#c343dfcd] -Japan Dynamics CRM Team Blog - Site Home - MSDN Blogs~ --Dynamics CRM 2011 カスタムレポート ---その 1 - フィルター化されたビュー vs. FetchXML~ http://blogs.msdn.com/b/crmjapan/archive/2013/01/07/dynamics-crm-2011-custom-reporting-in-microsoft-dynamics-crm-fetch-vs-filtered-views.aspx ---その 2 - FetchXML を利用したカスタム活動レポート~ http://blogs.msdn.com/b/crmjapan/archive/2013/07/02/dynamic-activity-reporting-using-fetchxml.aspx *[[CRM セキュリティモデルの作成]] [#td5e52c1] *[[CRM エンティティのカスタマイズ]] [#w034200d] *[[CRM フィールドのカスタマイズ]] [#n8544fb0] *[[CRM 関連付けの管理]] [#hf9ff03d] *[[CRM フォームのカスタマイズ]] [#vb691813] *[[CRM 業務ルールの構成]] [#jea0bdd5] *[[CRM ビューのカスタマイズ]] [#d2b182f1] *[[CRM グラフのカスタマイズ]] [#h33d89ea] *[[CRM ダッシュボードのカスタマイズ]] [#h33d89ea] *[[CRM 追加のセキュリティ オプション]] [#i7bacd93] *[[CRM 業務プロセス フロー]] [#d91d3743]