Solution Packager vs Dynamics CRM 2015

#ITArcheology 😉

Jakiś czas temu firma, dla której obecnie pracuję, przejęła wsparcie systemu stworzonego w oparciu o platformę Dynamics CRM 2015 (build: 7.0.0.3543). Pierwszym celem, który sobie postawiliśmy w ramach jego utrzymania, było stworzenie procesów ciągłej integracji. Elementem wspomnianych prac było uruchomienie mechanizmu przechowującego zdekomponowane solucję CRM w repozytorium kodu oraz ponowne ich tworzenie w przypadku konieczności instalacji lub aktualizacji aplikacji na środowisku docelowym.

Do ww. operacji zdecydowaliśmy się wykorzystać (zgodnie z zasadami sztuki 😊) narzędzie Solution Packager dostępne w ramach pakietu Microsoft.CrmSdk.CoreTools. Niestety o ile rozpakowywanie solucji przebiegało pomyślnie, to próba jego ponownego „złożenia” w całość kończyła się następującym błędem:

Following objects, required by the solution, are not present. /n/r  Type=’Workflow’, Id (or schema name)='{1b2f38c2-2562-e711-80fb-005056a3154d}’. Type=’Workflow’, Id (or schema name)='{8b12a2c7-088c-49aa-93b3-b618e2b26ea4}’. Please do a dependency check on your solution prior to exporting, add the missing objects to your solution and re-export/n/r Error occurred during execution of plugin ‚RootComponentValidation’: RootComponent validation failed.

Co wykazało przeprowadzone śledztwo? Problem związany był z 2 regułami biznesowymi, które zostały dodane na środowisku źródłowym. Niestety mechanizm eksportu rozwiązania dla wspomnianej powyżej wersji systemu nie umieszcza identyfikatorów reguł biznesowych w sekcji „<RootComponents>” pliku solution.xml. Z kolei Solution Packager wymaga tych wpisów do prawidłowego, ponownego spakowania solucji. W wyniku tego pojawia się przytoczony powyżej wyjątek.

W omawianym przypadku problem został rozwiązany za pomocą ręcznej edycji pliku Solution.xml i dodania następujących wpisów w sekcji „<RootComponents>”:

<RootComponent type="29" id="{8B12A2C7-088C-49AA-93B3-B618E2B26EA4}" behavior="0" />

<RootComponent type="29" id="{1B2F38C2-2562-E711-80FB-005056A3154D}" behavior="0" />

Niestety, błąd powrócił przy dodaniu kolejnej reguły biznesowej. Ponieważ każdorazowa ręczna aktualizacja pliku solution.xml nie wchodzi w tym przypadku w grę (ponieważ automatyzacja ma upraszczać, a nie utrudniać życie developerów) temat przechowywania rozpakowywanych solucji w repozytorium kodu został odłożony na półkę do czasu aktualizacji systemu do nowszej wersji. Na testowanych przeze mnie systemach Dynamics 365 8.x oraz 9.x nie zaobserwowałem opisywanego problemu.

Wygląda na to, że Solution Packager po prostu nie radzi sobie z obsługą plików solucji, które zostały wyeksportowane z systemu CRM 2015.

Sorry Winnetou…

Total Views: 196 ,
Be the first to comment

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *