Piotrek's profileXRM.NETPhotosBlogLists Tools Help

Blog


    August 27

    The end is the beginning is the end...

    Wszystko dobre co się dobrze kończy - chciałoby się napisać w tym momencie...
    Po roku publikowania w tym miejscu - mam nadzieję - przydatnych informacji, poświęconych głownie platformie Dynamics CRM/xRM, postanowiłem zawiesić działanie blogu.
    Decyzja ta podyktowana była kilkoma względami - z mojej strony przede wszystkim chęcią rozpoczęcia czegoś nowego, a także faktem istnienia w sieci dziesiątek regularnie aktualizowanych stron, poświęconych systemowi MS CRM, na których bez problemu możemy odnaleźć rozwiązania wielu problemów. 

    W najbliższych tygodniach w sieci pojawi się mój kolejny projekt - poświęcony nieco innej technologii. Oczywiście wspomnę o nim także w tym miejscu :P.

    A póki co, dziękuję wszystkim za lekturę i cenne uwagi.
    Do zobaczenia :)

    August 12

    I am XRM :)

    Pod koniec lipca udało mi się odwiedzić amerykańskie Seattle i uczestniczyć w odbywającej się tam konferencji TechReady 9 ( http://en.wikipedia.org/wiki/Techready ). Niestety - jako że jest to konferencja wewnętrzna firmy Microsoft - większość wygłaszanych tam prelekcji oraz prezentowanych materiałów oznaczona była klauzulą "ściśle tajne". To, o czym mogę napisać w kontekście naszego ulubionego systemu CRM :) - jest fakt jego coraz silniejszego promowania przez korporację - jako platformy do tworzenia aplikacji typu LOB (Line-Of-Business).

    Czyli generalnie mówiąc XRM pełną gębą :). 

    O tym, co możemy zbudować na bazie platformy Dynamics CRM, dowiedziecie się tutaj:

    http://www.youtube.com/watch?v=Yru5CkANOKA

    Lekko żartobliwie :)...

    July 10

    Mobile Express for Microsoft Dynamics CRM 4.0

    Microsoft w końcu udostępnił dodatek, umożliwiający dostęp do danych umieszczonych w systemie Dynamics CRM 4.0 za pomocą urządzenia  przenośnego. Do tej pory klienci, którzy chcieli korzystać z mobilnego dostępu do aplikacji za pomocą urządzeń przenośnych, musieli korzystać z rozwiazań firm partnerskich.
     
    Technicznie Mobile Express for Dynamics CRM to niestety (stety?) w dalszym ciagu jedynie zestaw dodatkowych stron pozwalających na dostęp do aplikacji za pomocą przglądarki na mobilnym urządzeniu. Jako taki nie stanowi więc konkurecji dla w  pełni funkcjonlanych klientów CRM firm takich jak CWR ( http://www.cwrmobility.com/ )  czy TenDigits ( http://www.tendigits.com/ ). Zaletą omawianego rozwiązania jest natomiast fakt, że jest ono udostępniane za darmo. 
     
    Pakiety instalacyjne dodatku Mobile Express for Microsoft Dynamics CRM 4.0 znajdziecie pod następującym adresem:
    http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=f592ec6c-f412-4fd5-9a80-cd3bcbd26d8b
    June 26

    Instalacja klienta Outlook - "The path is not of a legal form"

    Powyższa informacja pojawia się czasem w przypadku instalacji klienta dla aplikacji Outlook na komputerze, na którym zainstalowany został serwer aplikacji CRM. Błąd ten uniemożliwia niestety przejście procesu instalacji systemu. Problemu możemy się jednak pozbyć w następujący sposób:
     
    1. Uruchamiamy edytor rejestru systemu Windows

    2. Przechodzimy do: "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products"

    3. Odnajdujemy klucz dla serwera Microsoft Dynamics CRM
     


    4. W "InstallProperties" uzupełniamy wartość klucza "InstallLocation" o wartość "C:\Program Files\Microsoft Dynamics CRM".
     
    W czasie kolejnego uruchomienia instalatora aplikacji wymieniony powyżej błąd się już nie pojawi.
    June 24

    Microsoft Dynamics CRM 4.0 Visio 2007 Stencils and Templates

    Bardzo często - w czasie prac nad rozmaitą dokumentacją projektową - pojawia się konieczność dołączenia do niej przykładowych ekranów aplikacji. Na etapie analizy cierpliwe "rzeźbienie" formatek w systemie, a następnie robienie zrzutów ekranowych może być uciążliwe i generalnie mijać się z celem.
     
    Osobom tworzącym omawianą dokumentacje oraz wykorzystującą do tego narzędzie Microfost Visio (http://office.microsoft.com/pl-pl/visio/default.aspx) znacząco powinny ułatwić pracę gotowe komponenty, stworzone przez firmę Magnetism.
     
    Przykładowe komponenty możemy obejrzeć na poniższej stronie:
     
    Koszt licencji dla pojedynczego użytkownika wynosi 150 dolarów.
    June 22

    Header builder for Dynamics CRM 4.0

    Taka oto ciekawostka... Na blogu "Dynamics CRM Tools" opublikowane zostało narzędzie służace do modyfikacji loga systemu Dynamics CRM. Jest ono dość proste w użyciu, a jego interfejs przedstawia się następująco:

    Niestety, opisywana aplikacja dość często wywraca się w czasie, wydawałoby się, banalnie prostych czynności. Nie pozwala również na automatyczne umieszczenie wynikowego pliku na serwerze aplikacji CRM. Gdyby jednak ktoś musiał w ekspresowym tempie podmienić logo systemu (np. na potrzebę prezentancji systemu dla klienta) i akturat nie posiadał pod ręką jakiegokolwiek edytora graficznego - opisywane narzędzie może pomóc mu osiągnąć porządany efekt.

    Więcej informacji na ten temat oraz link do ściągnięcia programu znajdziecie pod adresem:
    http://mscrmtools.blogspot.com/2009/06/new-tool-header-builder.html

    June 18

    Nowa domena :)

    Od dzisiaj mój, z przykrością przyznaję, że zaniedbany ostatnio blog, dostępny jest pod adresem http://xrm.net.pl/ .
     
    A na początek, który - mam nadzieję - rozpocznie okres regularnych aktualizacji - link do strony polskiej grupy Dynamics xRM Polish User Group.
     
     
    Na powyższej stronie możemy odnaleźć informacje na temat terminów spotkań miłośników platformy Microsoft Dynamics CRM.
    Jako, że miałem przyjemność uczestniczyć we wszystkich dotychczasowych spotkaniach grupy - mogę z czystym sumieniem zarekomendować udział w nich - dzięki nim zawsze możemy dowiedzieć się czegoś nowego, a także poznać wielu interesujacych ludzi, zajmujących się naszą ulubioną platformą aplikacyjną :)
     
    April 09

    Błedy publikacji Workflow - TargetInvocationException

    Polska wersja systemu Dynamics CRM 4.0 zaskakiwała mnie już nie raz. Niestety, najczęściej "dziwnymi" tłumaczeniami angielskich terminów, będącymi przedmiotem żartów, zarówno wśród specjalistów jak i użytkowników systemu. Ostatnio jednak udało mi się natrafić na kolejny problem, związany z przenoszeniem stworzonych przeze mnie lokalnie przepływów pracy (po polsku "workflowów" :)) na docelowe środowisko.

    Do przenoszenia komponentów wykorzystywałem oczywiście standardowy mechanizm importu/eksportu customizacji. Żeby było ciekawiej, omawiany workflow wykorzystywał dodatkowe, stworzone przeze mnie biblioteki, zarejestrowane w systemie. O ile cała operacja przebiegała poprawnie, to przy próbie publikowania przepływu pracy, na ekranie pojawiał się następujący komunikat:

    Exception information:
        Exception type: TargetInvocationException
        Exception message: Exception has been thrown by the target of an invocation.
     

    Rozwiązaniem problemu okazało się dodanie następujących linii do pliku web.config:

    <System.Worlflow.ComponentModel.WorflowCompiler>
    <authorizedTypes>

    <authorizedType Assembly="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Namespace="System" TypeName="Void” Authorized="True"/>
    <authorizedType Assembly="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Namespace="System.Globalization" TypeName="CultureInfo" Authorized="True"/>

    </System.Worlflow.ComponentModel.WorflowCompiler>
    </authorizedTypes>

    Problem w magiczny sposób został rozwiązany.
    Oczywiście, ręczne modyfikacje pliki web.config są powszechnie uważane za "niesupportowalne" ;).

    March 24

    PostBack versus okienka modalne...

     
    Bądźmy szczerzy... funkcjonalność dostarczana wraz z "pudełkową" instalacją systemu Dynamics CRM jest całkiem pokaźna... ale niestety często zupełnie nieprzystająca to wymagań klienta. Platforma oferuje nam na szczęście wiele sposobów na rozszerzenie domyslnego zasobu funkcji systemu. Jednym ze sposobów jego rozbudowy jest wykorzystanie dodatkowych stron ASPX. Komponenty tego typu możemy wyświetlać między innymi w formie okienek modalnych.
     
    Wyobraźmy sobie następującą sytuację:
     
    1. Tworzymy stronę internetową zawierającą przycisk. Po jego naciśnięciu strona wywołuje CRM'owy web service i prezentuje pobrane za jego pośrednictwem dane.
    2. Stronę podłączamy do jednego z przycisków w menu. Chcemy aby pojawiała się ona użytkownikowi jako okienko modalne.
    3. Testujemy stronę. Logujemy się do systemu i otwieramy sworzone wcześniej okienko. Naciskamy wspomniany przycisk i... niespodzianka. Dane pobrane z systemu pojawiają się w nowym oknie przeglądarki, a nie w naszym okienku modalnym.
     
    Rozwiązanie tego problemu jest na szczęście banalnie proste.
    W sekcji "<HEAD></HEAD>" naszej strony internetowej dodajemy następujące wyrażenie:
     
    <base target=_self>
     
    Problem rozwiązany :).
    March 19

    Walidacja poprawności plików SiteMap i ISV.Config

     
    W czasie wdrożeń systemu CRM często zmuszeni jesteśmy do modyfikacji mapy wirtyny oraz konfiguracji ISV. W przypadku bardziej skomplikowanych dostosowań może być to dość kłopotliwe i irytujące (zwłaszcza gdy przy kolejnej próbie imprortu dostosowań otrzymujemy informacje o niepoprawności pliku) zadanie.
     
    Pracę z wymienionymi powyżej obiektami ułatwiają schematy XML. Dostępne są one w ramach SDK w katalogu "\SDK\server\schemas\". Proces dodania ich do projektu w Visual Studio wygląda następująco:
     
    1. Eksportujemy z systemu obiekty ISV.Config oraz Site Map. Wyeksportowane pliki dodajemy do projektu w Visual Studio.
    2. Wchodzimy we właściwości pliku ISV.config.xml. Zauważamy, że wartość właściwości "Schema" dla omawianego pliku pozostaje pusta.
    3. Dodajemy nowy schemat znajdujący się w pliku customizations.xsd w folderze "{sdkroot}\server\schemas\importexport\".
    4. Analogicznie postępujemy w przypadku pliku SiteMap.xml.
     
    Powyższa operacja pozwoli nam uzyskać następujący efekt:
     

     
    Jak widzimy działający mechanizm IntelliSense Visual Studio w znaczący sposób utrudni nam pomyłkę i skróci czas dostosowywania systemu :).

    February 19

    Wykorzystanie Silverlight na platformie Dynamics CRM

     
    W ostatnich tygodniach miałem przyjemność zapoznania się z możliwościami oferowanymi przez promowaną przez Microsoft technolgię - Silverlight. Dla tych którzy nie wiedzą - Silverlight jest platformą pozwalającą na tworzenie tak zwanych RIA (Rich Internet Application) w językach JavaScript (wersja 1.1) albo w kodzie zarządzalnym (wersja 2.0) i mającą być bezpośrednim konkurentem dla Adobe Flasha.
     
    Poniżej zamieszczam kilka linków poświęconych wykorzystania omawianej technologii w systemie Dynamics CRM.
     
    Demo stworzone przez członków grupy produktowej Dynamics CRM.
     
    Wideo przedstawiające platformy Silverlight/WPF oraz ich integrację z CRM'owymi web service'ami.
     
    Adding client side business logic to CRM forms using Silverlight managed code
    http://blog.arash.cc/post/Adding-client-side-business-logic-to-CRM-forms-using-Silverlight-managed-code.aspx
    Rozbudowa funkcjonalności formatek CRM za pomocą Silverlight (artykuł dotyczy platformy w wersji 1.1)
     
    Silverlight and MS CRM Services
    http://timheuer.com/blog/archive/2008/08/21/silverlight-and-microsoft-crm.aspx
    Słow kilka na temat dostępu do web service'ów CRMa z poziomu aplikacji SL.
     
    W najbliższym czasie postaram się przedstawić kilka bardziej szczegółowych informacji związanych z łączeniem platform Silverlight oraz Dynamics CRM.

    Have fun ;).
    February 12

    Dynamics CRM 4.0 - nowe narzędzia.

    Po krótkiej przerwie J-23 znowu nadaje... :)

    W ostatnim tygodniu na stronach MSDN pojawiły się narzędzia, które mogą okazać się przydatne dla twórców aplikacji, opartych o system Microsoft Dynamics CRM 4.0.

    Customization Comparison Utility – pozwala na porównywanie dwóch plików, zawierających wyeksportowane customizacje systemu Dynamics CRM. Narzędzie pozwala na porównanie encji dostępnych w obu systemach, relacji między nimi, grup bezpieczeństwa oraz pozostałych elementów, eksportowanych do pliku XML.

    Configuration Data Utility – narzędzie pozwala na eksport danych konfiguracyjnych składowanych w systemie CRM wewnątrz nowo-utworzonych encji. Wyeskportowane informacje można zapisać w systemie docelowym z poziomu interfejsu narzędzia. Warunkiem jego poprawnego działania jest istnienie odpowiedniego zestawu encji w obu systemach.

    Opisane powyżej narzędzia prawdopodobnie wejdą w skład kolejnej edycji Dynamics CRM 4.0 SDK.  Życzliwi donoszą że nie będą to jedyne nowości w najnowszej wersji Software Development Kit, którego aktualizację począwszy od stycznia tego roku, mają ukazywać się regularnie – co dwa miesiące.

    Wiecej informacji na temat opisanych powyżej narzędzi (a także odnośniki do ich pobrania) znajduje się pod adresem:

    http://msdn.microsoft.com/en-us/library/dd442453.aspx

    December 20

    CRM "5" - Programowanie po stronie serwera

     
    Na Channel 9 pojawiło się kolejne video, zawierające informacje na temat nadchodzącej, najnowszej wersji systemu Dynamics CRM (kodowa nazwa: "CRM 5" :)).
    Tym razem Andy Bybee (Principal Program Manager Lead), Allen Hafezipour (Senior Program Manager) oraz Nirav Shah (Senior Dev Lead) z Microsoftu zdradzają kolejne informacje na temat programowania na platformie Dynamics CRM po stronie serwera.
     
    Omawiany materiał znajduje się pod adresem:
     
    December 12

    Błędy logowania do Dynamics CRM 4.0 (ciag dalszy)...


    "The key specified to compute a hash value is expired, only active keys are valid"
     
    Powyższy błąd powitał mnie dzisiaj przy próbie zalogowania do systemu Dynamics CRM w naszym wewnętrznym środowisku developerskim. Po krótkiej inwestygacji udało mi się odnaleźć przyczynę - "leżącą" usługę Microsoft CRM Asynchronous Processing Service.
     
    Po uruchomieniu usługi oraz restarcie Internet Information Services wszystko wróciło do normy :).
    December 02

    Dynamics CRM - wykorzystywanie FilteredViews poza raportami

     
    FilteredViews (czyli „widoki filtrowane” :)) są w systemie Dynamics CRM wykorzystywane do pozyskiwania danych do raportów. Pozwalają one na zachowanie modelu uprawnień systemu CRM na poziomie bezpośrednich zapytań do bazy danych. Prawidłowe działanie raportów dla systemu Dynamics CRM 4.0 (zwłaszcza w przypadku gdy serwery CRM oraz SQL zainstalowane są na osobnych, fizycznych maszynach) zapewnia CRM Connector for Reporting Services.
     
    Czasami pojawia się jednak potrzeba wykorzystania FilteredViews poza rozwiązaniami opartymi o Reporting Services. Przykładami takich zastosowań mogą być rozszerzenia systemu takie juz Pluginy, Workflows lub strony webowe umieszczone w IFrame’ach. W niektórych przypadkach (polegających przykładowo na pobraniu dużej ilości danych w oparciu o skomplikowane warunki) bezpośrednie odwołania do bazy danych, z pominięciem CRM-owych web service’ów, mogą w znaczący sposób przyśpieszyć działanie aplikacji. W scenariuszach tego typu zazwyczaj napotykamy jednak na problemy związane z autentykacją i impersonacją użytkowników systemu CRM na poziomie bazy danych. Istnieją dwa możliwe rozwiązania powyższego problemu:
     
    1. Ustawienie delegacji między serwerami na poziomie Active Directory oraz wykorzystanie mechanizmu autentykacji opertego o Kerberosa. Metoda ta powinna rozwiązać problem, jest ona jednak często trudna do przeforsowania (zwłaszcza w środowiskach produkcyjnych klientów). W przypadku wystąpienia błedów związanych z dostępem do bazy danych – znalezienie ich (błedów) przyczyny – może być także niebanalnym zadaniem.
     
    2. Drugą metodą jest uzyskanie dostępu do bazy danych na poziomie użytkownika, w kontekście którego uruchomiona jest pula aplikacji systemu CRM na serwerze IIS, a następnie zmiana kontekstu wywołania kodu, bezpośrednio na serwerze bazodanowym. Poniżej przedstawiam  przykładową procedurę składowaną wykorzystującą wspomniany mechanizm:
     

    CREATE PROCEDURE TestStoredProcedure
    (
       @userid uniqueidentifier
    )
    AS
     
    DECLARE @original uniqueidentifier

    SET @original = context_info()
    SET context_info @userid
     
    SELECT lastname FROM filteredcontact
     
    IF @original is null
       SET context_info 0x
    ELSE
       SET context_info @original
    END
     
    Należy pamiętać o tym, aby przed zakończeniem procedury przywrócić oryginalny kontekst jej wykonania.
    December 01

    Rollup 1 dla Dynamics CRM 4.0

     
    W zeszłym tygodniu, bez większego rozgłosu, ukazał się pierwszy zbiór poprawek (Rollup) do aplikacji Dynamics CRM 4.0. W ogromnej większości zawiera on uaktualnienia, które były do tej poru udostępniane jako pojedyncze poprawki, dostępne w ramach Microsoft Knowledge Base oraz usług supportowych.
     
    Rollup 1 dostępny jest dla kilkunastu wersji językowych systemu.
    Możemy znaleźć go pod następującym adresem:
     
    Szczegółowy opis wprowadzanych zmian:
    November 24

    Instalacja Dynamics CRM 4.0 w systemie Windows 2008


    „Service cisvc was not found on computer […]”

    Taką właśnie informacją uraczył mnie instalator systemu Dynamics CRM przy próbie uruchomienia procesu instalacji w systemie Windows Server 2008. Po krótkiej chwili zastanowienia przypominamy sobie, że CISVC.EXE to Windows Indexing Service znany z edycji 2008 serwera Windows.

    W celu doinstalowania go w Windows 2008:

    1. Uruchamiamy konsolę Server Manager.
    2. Przechodzimy do zakładki Roles, gdzie wybieramy opcję „Add Roles”
    3. Z pośród dostępnych ról wybieramy „File Services”
    4. Następnie w oknie „Select Role For Services” zaznaczamy „Indexing Service”.
    5. Instalujemy usługę.

    Przy następnym uruchomieniu proces instalacji nie powinien już zwracać, wymienionego na początku, błedu.

    November 20

    Dynamics CRM – „SecLib::CrmCheckPrivilege failed”

    Dynamics CRM pozwala nam na zarządzaniem prawami dostępu do obiektów w systemie na podstawie ról bezpieczeństwa oraz jednostek biznesowych użytkowników. Wraz z systemem dostarczane są predefiniowane role bezpieczeństwa. Często nie spełniają one jednak wymagań klientów. W takim przypadku możemy oczywiście zdefiniować własną rolę. Możemy to zrobić od podstaw lub też skopiować, a następnie wyedytować rolę już istniejącą. Po wykonaniu tych czynności może nas jednak spotkań niemiła niespodzianka. Użytkownik dodany do nowo-utworzonej roli przy próbie zalogowania się do systemu, otrzymuje bowiem następujący komunikat:
     
    0×80040220 SecLib::CrmCheckPrivilege failed.
     
    Problem ten możemy rozwiązać w dwojaki sposób:

    1. Dodajemy nowo utworzone konto użytkownika do systemowej roli bezpieczeństwa. Po pierwszym logowaniu użytkownika do systemu, usuwamy go z tej roli i dodajemy do utworzonej przez nas roli. Przy kolejnych próbach dostepu do systemu bład ten nie powienien się już pojawiać. Jeżeli jednak problem będzie się powtarzał...
     
    2. ...musimy dodać prawo WRITE do parametru „USER SETTINGS” w definicji naszej roli bezpieczeństwa. Po wykonaniu tej czynności użytkownik będzie w stanie zalogować się do systemu.
     
    Podziękowania dla Mariusza Duli (niech moc będzie z Tobą ;)) za pomoc w rozwiązywaniu powyższego problemu.
    November 15

    Dynamics CRM – ukrywanie widoków systemowych

    W wersji 3.0 systemu Dynamics CRM ukrywanie widoków systemowych było możliwe za pomocą interfejsu webowego aplikacji i polegało na odpowiednim wyshare’owaniu praw do widoku. Wersja 4.0 nie daje nam już niestety takiej możliwości. Czy ukrywanie widoków systemowych w najnowszej odsłonie systemu jest więc możliwe? Odpowiedź brzmi: „Tak” – wymaga to jednak nieco większego nakładu pracy i wykorzystaniu mechanizmu systemowych plug-inów.

    Przykład implementacji opisywanego powyżej mechanizmu możemy odnaleźć pod poniższym adresem:
    http://code.msdn.microsoft.com/crm40hidesystemviews
     
    Biblioteka dostarczana jest wraz z kodem źródłowym – jest on dość prosty więc wydaje mi się, że opisywanie go w tym miejscu nie ma najmniejszego sensu.
     
    Skompilowaną bibliotekę należy zarejestrować dla zdarzenie RetrieveMultiple encji SAVEDQUERY. Następnie należy odpowiednio wyedytować  plik konfiguracyjny w formacie XML (przykład takiego pliku znajdziemy wewnątrz projektu) i podać go jako parametr wejściowy konstruktora rejestrowanego plug-in’u. 
     
    Niestety do tej pory nie udało mi się uzyskać jednoznaczej odpowiedzi na temat „supportowalności” opisanej metody przez Microsoft.
    October 31

    CRM "5" na Channel 9

    Na stronach internetowych Channel 9 pojawiły się materiały video, związane z kolejną wersją systemu Dynamics CRM.