Wiele nowych aplikacji (głównie tzw. first party apps, a więc tych Microsoft’owych) może być teraz instalowanych przez mniej lub bardziej świadomych użytkowników Dynamics 365 (CRM). Większość prosto z nowego interfejsu administracyjnego Power Apps poprzez „Dodaj aplikację”. A później ktoś bardziej świadomy, albo ktoś mający zarządzać środowiskiem, wchodzi w listę rozwiązań i widzi… 37 nowych rozwiązań (solutions) dla jednej nowozainstalowyanej aplikacji (w tym moich ulubionych msdynce_(…)_patch i msdyn_costam_anchor) i dziwi się kto i po co je zainstalował.

I wyobraźmy sobie, że ten ktoś świadomy jednak chce odinstalować daną aplikację. Oczywiście zazwyczaj „Usuń” kliknięte na liście aplikacji w danych środowisku na portalu Power Apps (https://make.powerapps.com) kończy się „jakimś” błędem. Administrator musi więc odinstalować kilkanaście do kilkudziesięciu rozwiązań (solucji), aby pozbyć się aplikacji, którą „citizen developer” ot tak zainstalował sobie na środowisku Dynamics 365 (najczęściej „żeby potestować” :-/ ). Ma wtedy 2 opcje:

power-apps-uninstall-app-01

  • wejść na „normalny” interfejs Dynamics 365 do listy rozwiązań w menu Dostosowań i… zobaczyć to:

Po zgłębieniu tematu można jeszcze dostać się do następującej informacji – wow, nie odinstalujemy nowej aplikacji, bo… dostosowania w niej wprowadzone są xyz-naste w warstwach zainstalowanych rozwiązań. Super! 😦

uninstall-solutions-00

Co więc zrobić, żeby pozbyć się niechcianej aplikacji składającej z kilku(nastu) solucji?

Odpowiedź jest prosta – odinstalować konkretne rozwiązania (solutions) ręcznie w kolejności odwrotnej do ich instalacji.

No dobra, a skąd wziąć dokładną kolejność instalacji rozwiązań?
Tu na szczęście Dynamics 365 (i Power Apps) przychodzi nam z pomocą. Mianowicie, możemy (przez 15 lat nie mogliśmy) zobaczyć dokładną kolejność instalacji rozwiązań, wybierając w menu Ustawienia nowego, albo starego interfejsu „Historia Rozwiązań”:

Wejdziemy wtedy na listę wszystkich operacji, które dokonywane były na rozwiązaniach (i aplikacjach) w Dynamics 365 i Power Apps. Na liście dostępne są wszystkie operacje oraz ich stany i daty, w których były wykonywane:

Odpowiednie profiltrowanie tego widoku i posortowanie malejąco po Dacie rozpoczęcia pozwoli nam dowiedzieć się jak zależą od siebie poszczególne rozwiązania i w jakiej kolejności było instalowane:

Tadam! Mamy dokładną kolejność odinstalowania konkretnego rozwiązania – wystarczy iść od góry, od ostatnio zainstalowanego komponentu. Dzięki temu możemy być pewni, że nie zaskoczy nas żadna zależność i paskudny błąd z 20 warstwami solucji, które zależą od jakiegoś komponentu w rozwiązaniu, które chcemy usunąć.

Co później?

Później nic. Po poprawnym odinstalowaniu wszystkich rozwiązań danej aplikacji (od najpóźniej zainstalowanego) ze środowiska Power Apps (Dynamics 365) zniknie konkretna aplikacja, której chcieliśmy się pozbyć. Dynamics 365 Administration Center w magiczny sposób się o tym dowie i znów będzie pokazywać daną aplikację jako dostępną do „Configure”, albo „Install” (w zależności od aplikacji).

Co NIE pomoże odinstalować aplikacji składającej się z wielu rozwiązań (solucji)?

  • Nic nie da wchodzenie na zakładkę „Applications” na Dynamics 365 Administration Center (https://port.crm4.dynamics.com/G/Applications/Index.aspx) z myślą, że skoro – można stamtąd „udostępnić” konkretną aplikację do instalacji na danym środowisku, to pewnie można ją i „odudostępnić” i magicznie zniknie. Nie zniknie.
  • Nic nie da też wchodzenie do naszego rozwiązania domyślnego (Default Solution), albo dowolnego innego i próba usunięcia Aplikacji opartej o modele (Model-driven application). W ten sposób jedyne, co możemy uzyskać, to błąd zależności, a aplikacja oczywiście nie zniknie: