CRM 2011 i jego dostosowywanie

Wydawać się by mogło, że nowa wersja CRM usprawni edycję takich dostosowań jak znana z CRM 4.0 mapa witryny (sitemap) czy też ISV.config. Ten pierwszy plik w nowej wersji CRM nie został zmieniony natomiast ISV.config zastąpiony został plikiem xml definiującym elementy wstążki. Wstążka to zupełnie nowa rzecz, która wykracza daleko poza możliwości starego ISV.config. Nowe możliwości niosą za sobą rozbudowaną strukturę, bardziej skompilowanie definicje pliku xml czy też rozbicie wstążki na poszczególne encje – kto miał do czynienia z dodaniem przycisku do wstążki ten wie o czym mowa ;)

Niestety Microsoft nie zaprezentował narzędzia, które pozwoli na łatwą edycję zarówno mapy witryny jak też wstążki. Na szczęście społeczność Dynamics CRM nie śpi i na codeplex znaleźć można dwa fajne narzędzia:

  1. http://sitemapeditor.codeplex.com/

    SiteMapEditor

  2. http://ribboneditor.codeplex.com/

    RibbonEditor

 

Pamiętać jednak należy, że są to narzędzia, które mogą działać niestabilnie i trzeba wiedzieć co kryje się pod maską CRMa aby, jeśli będzie to konieczne, naprawić to co zostanie zepsute :)

CRM 2011–Ukrywanie widoków systemowych

Kto miał za zadanie ukryć widoki systemowe w CRM 4.0 ten wie jakie to było problematyczne :) Co się zmieniło w nowym CRM ? Podobnie jak np. klienta może być aktywny lub nieaktywny tak samo widoki. Z poziomu dostosowań możemy oznaczyć widok jako aktywny/nieaktywny:

image

Po dezaktywacji widok będzie widoczny w liście widoków nieaktywnych:

image

Po wyłączeniu kilku widoków i opublikowaniu zmian w efekcie dostajemy przykładową listę widoków:

image

Efekt osiągnięty w prosty sposób co w CRM 4 zajmowało czas na napisanie pluginu, który przestawał działać kiedy ktoś przypadkiem zmienił nazwę widoku :)

CRM 2011–pierwszy egzamin MB2-866

Na stronie Microsoft Learning znaleźć można już informacje o egzaminie związanym z Dynamics CRM 2011: MB2-866: Microsoft Dynamics CRM 2011 Customization and Configuration. Szczegółowe informacje znaleźć można na stronie ML: http://www.microsoft.com/learning/en/us/exam.aspx?ID=MB2-866

CRM 2011–Kolejki w CRM

Kto korzystał z kolejek w CRM 4.0 ten wie jak wiele ograniczeń ten mechanizm tam posiada. Przykładowo dostępu do kolejek nie dało się ograniczyć, tzn. jeśli organizacja była podzielona na wiele jednostek organizacyjnych to nie było możliwości ukrycia kolejek pomiędzy tymi jednostkami. W CRM 4.0 kolejki są “Organization-owned” (mówimy oczywiście o kolejkach publicznych a nie kolejkach private oraz WIP, które tworzone są dla każdego użytkownika bez udziału i możliwości ingerencji użytkownika) co znaczy, że nie jest ona przypisana do konkretnej osoby, tylko do jednostki biznesowej. W nowym CRM kolejka jest “User-owned” co powoduje, że właściciel widoczny w CRM 4.0 na formatce kolejki w CRM 2011 jest faktycznie jego właścicielem:

image

Ma to swoje przełożenie również na uprawnienia:

image

image

W definicji roli możemy określić zakres widoczności kolejek: możemy widzieć tylko swoje kolejki jak również kolejki swojego zespołu. Trzeba tutaj wspomnieć, że domyślnie kolejki tworzone są dla nowego użytkownika, dla nowego zespołu.

Kolejna super sprawa związana z kolejkami to fakt, iż możemy do nich “wrzucić” różnego typu obiektu. Wystarczy w części poświęconej dostosowaniom obiektu wskazać, że chcemy aby ten obiekt mógł być umieszczany w kolejce:

image

Dodatkową opcją jest możliwość automatycznego umieszczenia elementu w kolejce właściciela jeśli obiekt jest dla niego tworzony lub też właściciel obiektu się zmienia.

Po ustawieniu tej opcji pojawią się we wstążce dodatkowe przyciski pozwalające na wysłanie obiektu do kolejki oraz podejrzenie tego obiektu w kolejce. Na liście obiektów mamy do dyspozycji jeden przycisk do dodania obiektu do kolejki:

image

Z kolei na formatce mamy do dyspozycji dwa przyciski. Jeden do dodania elementu, drugi do wyświetlenia obiektu w kolejce.

image

Będąc przy podglądaniu obiektu w kolejce widzimy kolejną nowość w CRM 2011. Został udostępniony nowy obiekt “Queue Item”, który przechowuje referencje do obiektu, kolejki oraz osoby, aktualnie odpowiedzialnej za ten element – co najważniejsze jest to obiekt dostosowywalny co pozwala np. na zbudowanie procesów sprawdzające SLA rozwiązywania spraw, co w wielu wdrożeniach CRM 4.0 było wymaganiem bardzo ciężkim do zrealizowania, a który w nowym CRM jest już łatwiejsze:

image

Proces wysłania obiektu do kolejki polega na stworzeniu nowego obiektu Queue Item (Element Kolejki), nie ma czegoś takiego co było w CRM 4.0, że obiekt jest “przypisywany do kolejki” co tak naprawdę skutkowało udostępnieniem obiektu dla wskazanej kolejki. Jeśli chcemy zautomatyzować dodawanie obiektu do kolejki (np,. w przepływie pracy) to musimy stworzyć nowy obiekt element kolejki. Jak mamy ten obiekt to możemy pisać pluginy, które wspierają nam procesowanie spraw na podstawie SLA lub też przepływy, które będą notyfikować osoby/zespoły, że w ich kolejce powstało nowe zgłoszenie.

Chcąc zaprezentować elementy w kolejkach korzystamy z kolejek dostępnych w Obszarze Roboczym:

image

Możemy z tego poziomu wybrać sobie kolejkę, którą chcemy przeglądać (lub prezentujemy elementy ze wszystkich kolejek). Możemy również wybrać widok, który prezentuje elementy czekające na przypisanie oraz elementy przypisane:

image

We wstążce zobaczymy następujące elementy:

  1. Routing – przycisk ten służy do przesłania wybranego elementu z kolejki do innej kolejki. Można przy tej okazji zmienić osobę, która aktualnie pracuje nad elementem.
  2. Pracuj nad – powoduje ustawienie pola Pracownik na formatce elementu kolejki. Można wskazać użytkownika lub też zespół.
  3. Zwolnij – powoduje wyczyszczenie pola Pracownik na formatce elementu kolejki. Element trafia do widoku “Elementy dostępne do opracowania”.
  4. Usuń – powoduje usunięcie elementu kolejki. Sam obiekt, który został wysłany do kolejki nie jest usuwany.
  5. Szczegóły elementu kolejki – powoduje wyświetlenie formatki elementu kolejki.

Pozostaje już tylko wykorzystać tę wiedzę w prawdziwym wdrożeniu :)

CRM 2011–Dashboard “Restrict cross-frame scripting”

W CRM 2011 wbudowana została nowa funkcjonalność, pozwalająca na tworzenie tzw. dashboard’ów dla użytkowników końcowych. Wszystko to ma na celu udostępnienie użytkownikom jak najbogatszego pakietu, który może być przez nich samych dostosowywany. Mając tę funkcjonalność dostępną “z pudełka” każdy może ustawić sobie jako panel startowy dowolny raport/wykres/listę – w zależności od upodobań.

Dashboard

W takiej tablicy można umieścić wykres, element iframe, listę czy też dowolny Web Resource. Jako element iframe można umieścić odnośnik do raportu, który zbudowany jest w organizacji i już od dawna wykorzystywany. Jednakże tutaj powstaje problem. Element iframe może mieć włączone zabezpieczenie związane z cross-site scripting. Użytkownik biznesowy nie może tej opcji wyłączyć:

image

Jest to dobre podejście, gdyż jeśli każdy użytkownik by miał możliwość dodawania linków na tablicy do dowolnego źródła w Internecie to by miało to wpływ na bezpieczeństwo systemu CRM – po co ryzykować pomyślał Microsoft i tę opcję wyłączył. Jednak co z przypadkiem, który opisałem wyżej – co kiedy chcemy w CRM pokazać raport, który organizacja od dawna wykorzystuje i jest do niego przyzwyczajona tak bardzo, że brak jego w CRM to poważna strata ?

Na szczęście tablice tworzone przez Administratora z poziomu Solution pozwala na wyłączenie opcji cross-site scripting:

cross-site scripting

Wierzymy, że administrator jest świadomy tego co robi :)

CRM 2011–wysyłanie widomości email–zatwierdzanie adresów email

Jeśli spojrzymy sobie na dwa aspekty nowego CRM: Ustawienia systemowe oraz formatkę użytkownika to zobaczymy tam dwie nowe rzeczy, których nie było w CRM 4.0:

E-mailApprove/Reject E-mail

Obie rzeczy dotyczą wysyłki wiadomości email z wykorzystaniem Email routera. W ustawieniach systemowych można wymóc, aby CRM e-mail router procesował tylko te wiadomości email, których nadawcy mają zatwierdzony przez administratora adres. Drugi zrzut ekranu pokazuje dwa przyciski na formatce użytkownika “Approve E-mail” oraz “Reject E-mail”. Przy ich pomocy administrator może zatwierdzić lub też odrzucić adres email przy pomocy, którego będzie odbywać się wysyłka wiadomości email.

Jeśli użytkownikowi ustawimy opcję dostępu do poczty email jako E-mail Router to jeśli jego adres mailowy nie zostanie zatwierdzony zostanie zaprezentowany na jego formatce następujący komunikat:

Informacja

CRM 2011–Pluginy i namiastka z CrmSvcUtil

Korzystamy sobie z usługi sieciowej CRM 2011, budujemy własną strukturę obiektów, generujemy z tego namiastkę, wrzucamy wszystko do pluginu i …. patrzymy na błąd:
Unable to cast object of type 'Microsoft.Xrm.Sdk.Entity' to type 'Netwise.Crm.Sdk.Account'.
I co teraz ? Czy wszystko muszę przerobić na Entity i bawić się indekserami ? To tylko jedno podejście. Inne podejście, które może nas uchronić od tego pierwszego to wykorzystanie generycznej metody ToEntity<>. Zamiast kodu:
return (Account)service.Retrieve(Account.EntityLogicalName, accountId, new ColumnSet(Attributes.accountnumber));
Napiszemy kod:
return service.Retrieve(Account.EntityLogicalName, accountId, new ColumnSet(Attributes.accountnumber)).ToEntity<Account>();
Wtedy nasza początkowa praca nie pójdzie na marne i nie będziemy oglądać wyjątku.
Z kolei jak chcemy tworzyć obiekty przy pomocy IOrganizationService w pluginie nie musimy korzystać z Entity tylko możemy korzystać z wygenerowanych klas. Przykładowo tworząc nowego klienta zamiast pisać kod:
service.Create(_account);
Musimy zrobić:
service.Create(_account.ToEntity<Entity>());
W przypadku pierwszego kodu otrzymamy podobny błąd o rzutowaniu Account na Entity. Drugi kod zadziała bez problemu Uśmiech