Xrm.Utility.openEntityForm

Update Rollup 8 dla Dynamics CRM 2011 przyniósł meeeega fajną funkcjonalność JScript. Do tej pory aby, korzystając z JS, otworzyć formularz obiektu trzeba było zbudować odpowiedni URL a następnie wykorzystać metodę window.open(….).

Obecnie jest dostępna fajniejsza metoda polegająca na wywołaniu funkcji: Xrm.Utility.openEntityForm. Funkcja ta ma następujące możliwości:

  • Jeśli wykonany zostanie następujący kod: Xrm.Utility.openEntityForm(“account”); zostanie zaprezentowany formularz tworzenia rekordu encji account
  • Jeśli wykonany zostanie następujący kod: Xrm.Utility.openEntityForm(“account”, “<identyfikator klienta>”); zostanie zaprezentowany formularz wskazanego rekordu encji account.

Funkcja ta działa zarówno dla encji systemowych jak również dla encji niestandardowych. Wygląd formularza jest identyczny gdybyśmy otworzyli rekord z listy rekordów lub kliknęli przycisk Nowy w celu utworzenia nowego rekordu (nie jest prezentowane menu przeglądarki, nie jest wyświetlany komunikat o tym, że chcemy zamknąć okno przeglądarki kiedy chcemy zamknąć formularz, itd – same zalety :) ). Wystarczy tylko zainstalować UR8.

Publikowanie (niedużego) rozwiązania i … timeout :/

Kiedy serwery są obciążone dojść może do sytuacji kiedy próba publikacji lub importu rozwiązania w Dynamics CRM zakończy się niepowodzeniem. Dokładne sprawdzenie w logach CRM (/Program Files/Microsoft Dynamics CRM/Trace) uświadomi nas, że mamy do czynienia z timeout’em. Na szczęście CRM pozwala na modyfikację niektórych parametrów związanym z czasem wykonania operacji. Niestety niektóre z opisanych poniżej modyfikacji jest niewspieranych, ale niestety bez nich nie uda się problemu rozwiązać.

Pierwsze miejsce (wspierane) gdzie należy ustawić parametry to rejestr. W kluczu HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM ustawić należy następujące klucze

  • OLEDBTimeout – określa wartość dla pojedynczego zapytania SQL. Wartość wyrażona w sekundach. Domyślnie 30 sekund
  • ExtendedTimeout – określa wartość dla ASP.NET. Wartość wyrażona w milisekundach. Domyślnie 1 000 000 milisekund
  • NormalTimeout – określa wartość dla SOAP. Wartość wyrażona w milisekundach. Domyślnie 300 000 milisekund

Jeśli to nie pomoże należy zmodyfikować plik web.config (niewspierane) znajdujący się w katalogu CRMWeb (u mnie: /Program Files/Microsoft Dynamics CRM/CRMWeb)

Zmienić należy wartość domyślną (300) parametru executionTimeout na inną – ja ustawiłem 3600 – sekund. Parametr ten określa po jakim czasie żądanie ASP.NET zostanie “zabite”.

Jeśli i to nie pomoże pozostaje nam ostatni parametr (niewspierane), który modyfikuje się w bazie MSCRM_CONFIG w tabeli DeploymentProperties. W tabeli tej szukamy rekordu, który w kolumnie ColumnName ma wartość SqlCommandTimeout

Wartość domyślna tego parametru to 30. Wartość wyrażona jest w sekundach.

CRM 2011–przenoszenie Plugin’ów

Jedną z wielkich zalet Dynamics CRM jest możliwość tworzenia pluginów. Nie jest to nowością w CRM 2011, ale w nowej wersji platformy mamy nowe możliwości “zabawy” z nimi.

Zabawa związana jest z przenoszeniem pluginów pomiędzy organizacjami. Plugin może być częścią rozwiązania w Dynamics CRM:

image

  1. Plugin-in Assemblies
  2. Sdk Message Processing Steps

Do solucji można dodać to, co wcześniej zarejestruje się przy pomocy Plugin Registration Tool (PRT). Niby oczywiste, ale nie zawsze jest oczywiste co się dzieje z krokiem (stepem) kiedy jest on uruchamiany w konktekście konkretnego użytkownika (inny niż Calling User) ? W momencie importu rozwiązania do organizacji szukany jest użytkownik o takiej samej pełnej nazwie (!!! a nie nazwie logowania do domeny). Jeśli nie zostanie znaleziony krok jest konfigurowany tak, aby uruchamiał się w kontekście Calling User. Informacja o tym jest logowana w czasie importu rozwiązania – dlatego warto weryfikować go za każdym razem kiedy wykonujemy import pluginów – gdyż wszelki błąd w konfiguracji objawi się zapewne dopiero kiedy “zwykli” użytkownicy zabiorą się za pracę w CRM.

Jeśli rejestrujemy Plugin, który będzie znajdować się w katalogu /assembly to przed zaimportowaniem rozwiązania musimy skopiować biblioteki do tego katalogu. Proces importu tego wymaga.