3

最近、マネージドソリューションとアンマネージドソリューションについて多くのことを学んでおり、本番環境でマネージドソリューションを使用することで多くのメリットが確実に得られます。

推奨されるパターンは、アンマネージドソリューションを使用し、アンマネージドバージョンとマネージドバージョンの両方のソリューションをエクスポートし、最後にマネージドソリューションを本番環境に(場合によっては最初にテストのためにステージング環境に)展開する開発環境にすることです。

これはすべて非常に素晴らしく、きれいですが、落とし穴がないわけではありません。私は最近、次のシナリオを経験しました。

1.1。

上記のパターンを使用して、アカウントエンティティのマネージドソリューションを作成および展開し、顧客にインストールしました。このソリューションには、特に、レガシーシステムと統合するためのフォームやその他のものが含まれていました。

スケッチ:

管理セクション


フィールドAフィールドB

フィールドCフィールドD

2.2。

私の知らないうちに、顧客は先に進み、「カスタマイズ」メニューを使用してアカウントフォームをカスタマイズしました。彼がしたことは、新しいフォームセクションを作成し、マネージドソリューションに含まれるカスタムフィールドの一部を元のセクションから新しいセクションに移動することでした。

スケッチ:

管理されていないセクション


フィールドAフィールドB

管理セクション


フィールドCフィールドD

3.3。

これは管理されていない変更であるため、管理された変更よりも優先され、他の変更を行った後、フォームのレイアウトに大混乱をもたらします(他のいくつかのフィールドを削除し、フォーム上のいくつかのフィールドの順序を変更します)

解決の試み:

もちろん、ソリューションを再インストールしようとしましたが、エンティティの管理されていないカスタマイズを上書きすることを約束する「カスタマイズの上書き」オプションも使用しましたが、何も変更されません。

また、(カスタマイズメニューを使用して)管理されていないカスタマイズとして移動された新しいセクションとフィールドを削除してから、管理されたソリューションを再インストールしてみました。これにより、管理されていない変更が何らかの形で「元に戻され」、diffメカニズムがそれを検出することを期待しています。問題のフィールドは管理対象ソリューションにのみ存在し、これにより元の場所に表示されます。しかし、結局のところ、私は石にさらに多くの変更を加えているように見えます。今回は、フォームからフィールドを完全に削除するようにシステムに指示しました。

フォームに管理されていない変更を加えると、管理されたフォームがねじ込まれてしまうというのは、本当にこのようなことでしょうか。

管理対象フォームを強制的に優先させる方法はありませんか?

もちろん、フォームに管理されていないカスタマイズをいくつか行って、フィールドを元の場所に戻すこともできますが、それは、次に管理されたフォームのフィールドの順序を変更したいときまで問題を延期します-管理されていない変更は前回はまだ優先されます。

私の唯一の選択肢は、最初からやり直すか、アカウントエンティティの管理されていないレジームに切り替えることだと思われます。

学んだ教訓:

これが見た目と同じくらい悪い場合は、管理対象プロパティを使用して、管理対象ソリューションのフォームのカスタマイズを禁止する必要があります。これがカスタムエンティティの場合はそうしますが、アカウントエンティティのようなエンティティには少し厳しいと思いました。学んだもう1つの教訓は、おそらく顧客にsysadmin/customizer権限を決して与えないことです...

これに関する他のいくつかの考えや経験が大好きです。

4

1 に答える 1

6

私はここでパーティーに遅れていることを知っていますが、その価値とこの投稿に出くわした人のために、2セントを追加します。@TManが述べたのとほぼ同じセットアップがありますが、Dev、QA、およびDevが管理されていない本番サイトがあり、カスタマイズのソースとQAおよび本番の両方が管理されている点が異なります。最終的な結果を得るためにすべてがどのように組み合わされるかを理解するために、ソリューションとカスタマイズの階層化プロセスで望んでいたよりもはるかに多くの時間を費やしました。また、サードパーティのマネージドソリューションも追加しました。そのすべての最終結果を見て、サードパーティのソリューションプロバイダーを除いて、マネージドソリューションは絶対に進むべき道ではないという結論に達しましたが、ターゲットシステムIMHOはすべてアンマネージド変更でカスタマイズする必要があります。私が見つけた大きな問題の1つは、サードパーティのマネージドソリューションを開発環境に導入したときに、QAと本番環境にデプロイするマネージドソリューションとして独自のカスタマイズをエクスポートすると、そのソリューションのコンポーネントに依存するようになることでした。これの興味深い点は、QAまたは本番管理サイトに移動すると、Devサイトの階層化と依存関係が逆の順序で反転することです。これは、独自のカスタマイズが非管理から管理に移行し、管理されたカスタマイズがインストール順に適用されるためです。システムの日付。ここでさらに詳しく説明しないと、要約すると、これらの依存関係は、これらの管理対象環境の1つに導入されるとなくなることはなく、データの損失が必要でない限り、独自のカスタマイズをアンインストールすることはできません。また、依存関係が原因でデータが失われても問題がない場合でも、ソリューションをアンインストールできない場合があります。私たちの環境はすべてCRMOnlineであるため、不要なものを取り除くためにデータベースを直接いじくり回すオプションはありません。ここで重要なのは、ほとんどの場合、マネージドソリューションを導入すると、それは永久に永続的に存在し、そこにあるものに加えて追加のアンマネージド変更を適用することしかできないため、未使用または不要なものをクリーンアップする方法がないことを理解することです。コンポーネント。私は自分自身の調査とテストに多くの時間を費やし、またマイクロソフトとの電話にも多くの時間を費やしました。欲しい。ここで重要なのは、ほとんどの場合、マネージドソリューションを導入すると、それは永久に永続的に存在し、そこにあるものに加えて追加のアンマネージド変更を適用することしかできないため、未使用または不要なものをクリーンアップする方法がないことを理解することです。コンポーネント。私は自分自身の調査とテストに多くの時間を費やし、またマイクロソフトとの電話にも多くの時間を費やしました。欲しい。ここで重要なのは、ほとんどの場合、マネージドソリューションを導入すると、それは永久に永続的に存在し、そこにあるものに加えて追加のアンマネージド変更を適用することしかできないため、未使用または不要なものをクリーンアップする方法がないことを理解することです。コンポーネント。私は自分自身の調査とテストに多くの時間を費やし、またマイクロソフトとの電話にも多くの時間を費やしました。

結論: Dev to QAや本番環境などのマルチサイトセットアップのマネージドソリューションは非常に悪い方法です。柔軟性が失われ、状況によってはレンガの壁にぶつかる可能性があります。すべてを管理せずに維持し、システムを適切にカスタマイズするために期待される柔軟性を備えた方がはるかに優れています。

于 2015-05-13T18:52:55.307 に答える