CRM 2011–pierwsze spojrzenie na możliwości Silverlight

W poście poświęconych usługom nowego CRM wspomniałem o dwóch usługach dostępnych pod adresami:

  1. IOrganizationService - http://<servername>/<organizationname>/XRMServices/2011/Organization.svc
  2. IDiscoveryService  - http://<servername>/<organizationname>/XRMServices/2011/Discover.svc

Jest tam jeszcze jedna, o której nie pisałem, a mianowicie http://<servername>/<organizationname>/XRMServices/2011/OrganizationData.svc

Właśnie z tej usługi korzystać należy, jeśli chcemy stworzyć coś fajnego, łącząc CRM z Silverlight czy też Ajax.

Co to jest za usługa ?

Jest to usługa oparta o protokół OData, zbudowana z wykorzystaniem WCF Data Service. Zasada działania tej usługi jest taka, że tworząc żądanie HTTP dostajemy w odpowiedzi dane w postaci feed’u. Po stronie klienta rezultat będzie przekonwertowany na obiekty :) Usługa, którą udostępnia CRM jest zbudowana w oparciu o architekturę REST (Representational State Transfer), które umożliwia dostęp do zasobów poprzez przypisane im unikalne URI. Architektura ta umożliwia wykonywanie operacji synchronicznych oraz asynchronicznych, a dzięki tej drugiej cesze może być w pełni wykorzystana przez Ajax bądź też Silverlight – osobiście bardziej mnie interesuje Silverlight ;)

Usługa jest alternatywą dla usług WCF, jednakże trzeba mieć na uwadze kilka ograniczeń, które ona posiada:

  1. Przy jej pomocy można tylko wykonywać operacje CRUD (Create, Retrieve, Update, Delete) – brak wsparcia dla wiadomości, które wymagają wykorzystania wyłączenie metody Execute w przypadku korzystania ze standardowych usług WCF
  2. Uwierzytelnienie jest możliwe tylko w kontekście aplikacji, chociaż możliwe jest podanie nazwy użytkownika oraz hasła. Jednakże jeśli będziemy komponent Silverlight umieszczać na formatce CRM, to informacje o użytkowniku będą brane z elementu, w którym nasz komponent jest osadzony.
  3. Nie jest zaimplementowany pełny protokół OData – niektóre zapytania nie są możliwe do zrealizowania – więcej informacji w SDK

Jak sprawdzić jak to działa ?

np. wejdz na strone:  http://<servername>/<organizationname>/XRMServices/2011/OrganizationData.svc/AccountSet a w rezultacie otrzymasz listę 50 kont, które masz zdefiniowane w systemie w postaci np. takiej:

image

A jeśli interesuje Cię konkretne konto możesz się do niego dobrać przy pomocy adresu:

http://<servername>/<organizationname>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')

W ten sposób “dobierać” się możemy do obiektów standardowych w CRM jak również do obiektów niestandardowych. Ważne jest aby w URI podawać informacje o obiekcie dokładnie, tzn. nawet wielkość liter ma znaczenie.

Sama usługa opisywana jest przez metadane, które dostępne są pod adresem tym samym co końcówka, ale ze specjalnym dodatkiem:

image

Jak wykorzystać te metadane ? O tym w kolejnym odcinku :)

CRM 2011 – stwórzmy sobie konto …

Pierwsze spojrzenie na usługi już za nami – trzeba zacząć z nich korzystać. Na pierwszy ogień idzie nowość w CRM2011 czyli Organization.svc, która to dostępna jest pod adresem:

Aby móc z niej skorzystać zapewne sobie pomyślisz “ok – to jest WCF więc po prostu dodam sobie referencję do usługi w VS i będzie ok” – tak – będzie ok, ale nie do końca. Wygeneruje się poprawna namiastka w VS, ale będzie ona bardzo dziwnie wyglądać. Obiekty nie będą dziedziczyć po odpowiednich klasach, trzeba będzie korzystać z pliku konfiguracyjnego, aby poprawnie definiować ABC WCF wymaganego przez usługi – można tak pracować, ale nie trzeba …. na szczęście – jest o wiele więcej ciekawszych rzeczy niż walka z plikiem konfiguracyjnym.

Spróbujmy następującego podejścia:

  1. Pobierzmy SDK dla CRM 2011 Beta ze strony: Microsoft Dynamics CRM 2011 Software Development Kit (SDK)  (* tutaj uwaga – ostatnio pobierałem SDK, które NIE DZIAŁAŁO poprawnie – szczególnie narzędzia opisane niżej)
  2. Rozpakujmy SDK do dowolnej lokalizacji
  3. Sprawdźmy zawartość katalogu sdk\bin i zwróćmy uwagę na dwa elementy:
    1. microsoft.xml.sdk.dll – jeśli w VS przed dodaniem referencji do usługi dodamy referencję do tej DLL to klasy namiastki będą dziedziczyć po Entity – nowa klasa bazowa dla klas takich jak Account (w CRM 4 było to DynamicEntity czy też BusinessEntity)
    2. CrmSvcUtil.exe – nazwa tego narzędzia wskazuje, że mamy do czynienia z czymś co ma coś wspólnego z SvcUtil znanym z WCF. Tak, to prawda – jest to narzędzie specjalne zrobiona dla CRM, które wygeneruje nam ładną namiastkę z metadanych CRM. Dzięki temu co jest wynikiem działania tego narzędzia (plik *.cs) możemy dołączyć do elementów projektu namiastkę CRM (Add Existing Item w VS).

Mając namiastkę usługi CRM oraz referencję do biblioteki microsoft.xml.sdk.dll możemy napisać nasz pierwszy kod:Nowy obraz (8) Co robi ten kod ? Tworzy nam instancję usługi, która chce połączyć się do organizacji przekazywanej w URL – element <organization>. Nie musimy tutaj tworzyć wcześniej znany token, w którym wskazywaliśmy, gdzie chcemy nawiązać połączenie. Autentykacja użytkownika następuje na podstawie jego aktualnego konta – stąd ustawienie ClientCredential na DefaultNetworkCredentials – można tutaj wskazać przy pomocy loginu oraz hasła inne konto, którym chcemy się zalogować.

Co jest jeszcze ważne – ten kod nie pozwoli nam korzystać z klas takich jak Account – wszystko z powodu tzw. wczesnego wiązania co jest związane z procesem serializacji oraz deserializacji wiadomości przesyłanych do/z usługi CRM. Aby móc w pełni korzystać z dobrodziejstw CRM musimy wpisać następujący kod:

_client.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());

Dzięki temu możemy dalej korzystać z kodu, który będzie działać:

Account _test = new Account { Name = "test" };
_client.Create(_test);

Klasa: OrganizationServiceProxy jest dostępna w DLL: microsoft.xml.sdk.dll – jest o wiele fajniejsza niż klasa, która byśmy dostali ze zwykłej namiastki w VS :)

Jest jeszcze jedna ważna sprawa. Usługi pozwalają na to, że będziemy mogli korzystać z CRM nie tylko z serwera, gdzie jest on zainstalowany. Jednakże jest tutaj mały problem. Aby korzystać z usług CRM (tych nowych) należy mieć na maszynie klienckiej zainstalowany Windows Identity Foundation, który dostępny jest dla Windows Vista, 7, Server 2008. Inne maszyny nie są wspierane.

Windows Identity Foundation jest dostępny pod adresem: http://msdn.microsoft.com/en-us/evalcenter/dd440951.aspx

CRM 2011 – wstęp do raportowania

Pierwsza próba uruchomienia własnego raportu może doprowadzić do powstania następującego błędu:

image

Powodem tego błędu jest brak zainstalowania komponentu srsdataconnector, którego instalator dostępny jest w tym samym miejscu skąd instalowaliśmy CRM 2011;

Nowy obraz (7)

W moim przypadku sama instalacji nie wystarczyła :( – musiałem z poziomu Panelu Sterowania dokonać naprawy instalacji. Dopiero wtedy raporty zaczęły się poprawnie uruchamiać.

CRM 2011 – język bazowy

Kolejna fajna rzecz związana z nowym produktem z rodziny Dynamics. Ta nowa rzecz związana jest z językiem bazowym organizacji.

W CRM 4 w czasie instalacji serwera wybierany był język bazowy. Ustawienie to wpływało na pierwszą organizację, która tworzona jest w czasie instalacji serwera jak również wyznaczało język bazowy dla wszystkich kolejnych organizacji, które byśmy u siebie stworzyli.

Nowa organizacja

Co się zmieniło w nowej wersji ? Pojawiła się opcja wyboru języka bazowego dla nowej organizacji (jak widać to na rysunku obok). Dzięki temu możemy mieć wiele organizacji na jednym serwerze z różnymi wersjami języka bazowego.

 

CRM 2011 – wygoda pracy z systemem

Od dawna dało się słyszeć głosy, że CRM 2011 został opracowany razem z użytkownikami tego systemu, tzn. zostały wprowadzone faktycznie wymagane od tego systemu funkcjonalności. I to zarówno z punktu widzenia użytkownika biznesowe jak również z punktu widzenia osoby wdrażającej ten system.

Niektóre funkcjonalności związane były z wygodą pracy z tym system. Przykładowa nowość wprowadzona w CRM2011 polega na tym, iż będąc na liście obiektów, np. Accounts możemy z tego poziomu, np. dostosować widok, który aktualnie widzimy, obiekt, który prezentujemy, formatkę obiektu, itd – sami zobaczcie jak to wygląda:

Nowy obraz (3) Wyświetlam sobie obiekty typu Account (pozwoliłem sobie dokonać spolszczenia na potrzeby wdrożenia póki polskiej wersji jeszcze nie ma dostępne :) ) a wstążka w zakładce Customize prezentuje mi możliwości modyfikacji obiektu.

CRM 2011 – pierwsze spojrzenie pod maskę, czyli usługi

CRM 4.0 przyzwyczaił nas do tego, że posiadamy 3 usługi sieciowe:

  1. CrmService
  2. MetadataService
  3. DiscoveryService

W CRM 2011 oprócz znanych dobrze usług posiadamy usługi nowe, oparte na technologii WCF:

  1. IDiscoveryService – usługa te pełni tę samą rolę co DiscoveryService w CRM 4.0. Kiedy mamy instalacje CRM przygotowaną pod wiele organizacji usługa nam ta pomoże nam w znalezieniu informacji z nimi związanych, np. można pobrać listę organizacji do której użytkownik ma dostęp
  2. IOrganizationService  - usługa ta jest niejako scaleniem CrmService oraz MetadataService. Przy pomocy jednej usługi możemy wykonywać operacje biznesowe w CRM, np. zakładanie kont jak również pobierać metadane, czyli informacji opisujące zdefiniowane w CRM.

Dostęp do tych nowych usług jest możliwy z wykorzystaniem następujących adresów:

  1. IOrganizationService - http://<servername>/<organizationname>/XRMServices/2011/Organization.svc
  2. IDiscoveryService  - http://<servername>/<organizationname>/XRMServices/2011/Discover.svc

Warto zwrócić uwagę, że w nazwach katalogów wykorzystywane są nazwy XRM :) co wskazuje, że mamy już do czynienia z systemem, który wyrasta ponad zarządzanie relacjami z klientem, a przy pomocy którego można zbudować narzędzie wspierające zarządzanie dowolnymi relacjami – o koncepcji XRM opowiada filmik z prawej strony

CRM 2011

Już jest :) – wersja beta produktu, który naszym zdaniem spowoduje rewolucję :) Dla tych, którzy dopiero teraz słyszą o nowej wersji produktu mała informacja – produkt ten można pobrać po zarejestrowaniu się na stronie: http://offers.crmchoice.com/CRM2011Beta-Landing.

Pierwsze wrażenia z nowego CRM ? Przede wszystkim wygląd – podobnie jak poprzednia wersja – kolorystycznie oraz interfejsowo odpowiada pakietowi Office a dokładnie programowi Outlook. CRM 4 nawiązywał do Outlook 2007, nowa wersja do Outlook 2010. Wszędzie obecna jest wstążka, która stała się elementem, który opanowuje kolejne produkty MS.

Główne okno aplikacji wygląda następująco:

Nowy obraz (2)

Jako, iż zajmuję się CRM również z technicznego punktu widzenia postaram się opisać jakie zmiany zostały wprowadzone w jego wnętrzu, np. własność możliwa do ustawienia dla zespołu, integracja z Sharepoint, procesy, usługi CRM 2011, itd. Co warte wspomnienia na samym wstępie to fakt, iż produkt ten został całkowicie napisany w oparciu o .NET 4. Zatem przepływy, pluginy będziemy już tworzyć z wykorzystaniem najnowszych technik :) – jak dla mnie bomba :)

Wymagania odnośnie sprzętu oraz aplikacji wymaganych przez CRM 2011 opisał Kuba w tym poście: http://crmblog.pl/2010/09/10/dynamics-crm-2011-wymagania-sprzetowe-i-programowe/