Pavel Novotný

avatar

Email: novotny@pavelnovotny.info
Telefon: +420 732376206
Skype: pavelnovotny.info
Messenger: novotny@pavelnovotny.info
ICQ: 167-272-595
Web: www.pavelnovotny.info


Tags

Kategorie

Navigation

Stránky

    Archiv

    Odkazy

    Vytvoření projektu pro kustomizaci CRM4 pomocí Microsoft Dynamics CRM Developer Toolkit

    CRM Solution Framework je sada C# projektů pro snažší kustomizaci a deploy pro Microsoft Dynamics CRM 4.  Tento framework obsahuje velké množství již předpřipravených typických scénářů úprav, které ocení každý kdo CRM upravuje.  

    Počáteční požadavky

    Microsoft Dynamics CRM 4.0
    Visual Studio 2008 Professional
    Visual Studio Team Explorer
    StyleCop 4.3 or later (plná instalace včetně MSBuild)
    .NET 3.5 SP1

    Instalace:

    1. Stáhnout projekt z http://code.msdn.microsoft.com/E2DevTkt
    2. Rozbalit CRM Explorer do adresáře c:\CRM Explorer\
    3. Rozbalit CRM Solution Framework do adresáře c:\CRMSolutionFrameworkTemplate\
    4. Vytvořit projekt spuštěním command line příkazu: Setup.cmd {InstallDir} {ProjectName} {Project Long Name} {Organization Name}

    Př: setup.cmd C:\Projects\MyCrmSolution MyCrmSolution "My CRM Solution" CRMCONFIG

    Konfigurace:

    1. Otevřete projekt UKDynamics (Load project normally) a proveďte build
    2. Otevřete projekt MyCrmSolution (Load project normally) a proveďte build
    3. V menu Visual Studia klikněte na [Tools] a následně [Connect to CRM Server...], vložte správné informace a kliněte na tlačítko [OK]
    4. V menu [View] otevřete okno [Other Windows]>>[CRM Explorer]

    *[1] V případě hlášky: The referenced component 'UKDynamics.Instrumentation' could not be found. Je potřeba znovu přidat referenci na assembly UKDynamics.Instrumentation.dll z adresáře UKDynamics\bin.

    *[2] V případě hlášky: The command "C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil" /i "C:\Projects\MyCrmSolution\SourceCode\MyCrmSolution\Core\Configuration\bin\Debug\MyCrmSolution.Core.Configuration.dll" /f" exited with code 1. Protože je u všech projektů nastaven podpis na delay-signed, je potřeba vypnout kontrolu strong-name spuštěním aplikace SN z command line Visual Studia 2008: SN.exe -Vr *,*
    A následně spustit IISRESET

    *[3] V případě hlášek typu:
    Client found response content type of 'text/html; charset=utf-8, but expected 'text/xml'. HttpException 1310
    Exception message: Could not load file or assembly 'MyCrmSolution.Core.BusinessProcesses, Version=1.1.0.0, Culture=neutral, PublicKeyToken=2c1937e0898110b2' or one of its dependencies. Strong name signature could not be verified.
    The assembly may have been tampered with, or it was delay signed but not fully signed with the correct private key. (Exception from HRESULT: 0x80131045)
    proveďte stejný krok jako v bodě *[2]

    Vytvořeno: 12.05.2009 13:47 uživatelem novotny | Komentáře (0) RSS comment feed |
    • Currently 3/5 Stars.
    • 1
    • 2
    • 3
    • 4
    • 5
    Kategorie: Dynamics CRM

    Zobrazení aktuálních aktivit Microsoft CRM 4 v Sharepointu + zdrojové kódy

    Na tomto příspěvku jsem chtěl demonstrovat jednoduchost a vůbec možnost provázání různých aplikací s Sharepointem. Rozhodl jsem se pro vytvoření webparty, zobrazující aktuálně přiřazené a nesplněné aktivity v Microsoft CRM 4, protože to bude určitě užitečná featura pro spoustu lidí využívajících firemní intranet.

    Takto vypadá výsledný webpart (po kliknutí na daný předmět aktivity se otevře přímo v editačním okně CRM):

     



    Takto jsou zobrazeny aktivity v CRM:

    Zdrojové kódy i WSP balíček je přiložen na konci tohoto postu.

    Načítání aktivit z CRM serveru probíhá přes webservice, url adresa webové služby je vždy ve formátu:

    http://server:port/MSCRMServices/2007/CrmService.asmx

    Pokud používáte Visual Studio 2008, je potřeba vygenerovat klientský wrapper až v "Advance" dialogu jako na následujícím screenshotu:

     

    Aby bylo možné rozlišit aktuálně používanou organizaci zavedenou v CRM, je potřeba ještě provést nastavení objektu CrmAuthenticationToken jako na následujícím příkladu:

            public static CrmService GetCrmService(string crmServerUrl, string organizationName)
            {
                if (string.IsNullOrEmpty(crmServerUrl)) throw new ArgumentNullException("crmServerUrl");
                if (string.IsNullOrEmpty(organizationName)) throw new ArgumentNullException("organizationName");

                CrmSdk.CrmAuthenticationToken token = new CrmSdk.CrmAuthenticationToken();
                token.OrganizationName = organizationName;

                CrmService service = new CrmService();
                UriBuilder builder = new UriBuilder(crmServerUrl);
                builder.Path = "//MSCRMServices//2007//CrmService.asmx";
                service.Url = builder.Uri.ToString();
               
                service.Credentials = System.Net.CredentialCache.DefaultCredentials;
                service.CrmAuthenticationTokenValue = token;

                return service;
            }

     

    Aby jsme mohli vyhledat svoje aktivity, je nejprve nutné zjistit identifikátor přihlášeného uživatele:

                WhoAmIRequest request = new WhoAmIRequest();
                WhoAmIResponse response = (WhoAmIResponse)service.Execute(request);
                Guid userId = response.UserId;

    Pak už jen stačí vyhledat aktivity s přiřazeným vlastníkem na sebe sama a nastaveným status kódem - open nebo scheduled.

            private static BusinessEntityCollection GetAssignedActivities(CrmService crmService, Guid userId)
            {
                // budeme nacitat aktivity prirazene prihlasenemu uzivateli
                ConditionExpression condition = new ConditionExpression();
                condition.AttributeName = "ownerid";
                condition.Operator = ConditionOperator.Equal;
                condition.Values = new object[] { userId };

                // potrebujeme pouze otevrene aktivity
                ConditionExpression condition2 = new ConditionExpression();
                condition2.AttributeName = "statecode";
                condition2.Operator = ConditionOperator.Equal;
                condition2.Values = new object[] { (int)ActivityPointerState.Open };
                ConditionExpression condition3 = new ConditionExpression();
                condition3.AttributeName = "statecode";
                condition3.Operator = ConditionOperator.Equal;
                condition3.Values = new object[] { (int)ActivityPointerState.Scheduled };

                FilterExpression filterState = new FilterExpression();
                filterState.FilterOperator = LogicalOperator.Or;
                filterState.Conditions = new ConditionExpression[] { condition2, condition3 };

                FilterExpression filterRequired = new FilterExpression();
                filterRequired.FilterOperator = LogicalOperator.And;
                filterRequired.Conditions = new ConditionExpression[] { condition };

                FilterExpression filter = new FilterExpression();
                filter.FilterOperator = LogicalOperator.And;
                filter.Filters = new FilterExpression[] { filterRequired, filterState };

                // seradime podle konce aktivity
                OrderExpression order = new OrderExpression();
                order.AttributeName = "scheduledstart";
                order.OrderType = OrderType.Ascending;
               
                // vytvoreni vyhledavaciho dotazu - potrebujeme vsechny aktivity
                QueryExpression query = new QueryExpression();
                query.EntityName = EntityName.activitypointer.ToString();
                query.ColumnSet = new AllColumns();
                query.Criteria = filter;
                query.Orders = new OrderExpression[] { order };

                // vykonani samotneho dotazu
                return crmService.RetrieveMultiple(query);
            }

     

     Následně již stačí vyrenderovat všechny položky do HTML. Prosté, ale dobré :)


    Instalace feature:

    cd C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\BIN

    stsadm -o addsolution -filename crm4connector.wsp

    stsadm -o deploysolution -name crm4connector.wsp -immediate -allcontenturls -allowGacDeployment -allowCasPolicies

    následně aktivujte feature ve správě webu:

     

    Přidejte feature "Activities in CRM" na libovolnou stránku:

     

    V nastavení feature je nutné ještě nastavit url adresu serveru s Microsoft CRM 4 a název organizační jednotky: 

    (níže je také možné upravit obecné texty podle potřeby - podle aktuálně používaném jazyku)

     

    Hotovo, po potvrzení by se měl zobrazit seznam aktivit aktuálně přihlášeného uživatele. Pokud je něco špatně, budete upozorněni:


    Ke stažení:

    sources.zip (272,14 kb)

    bin.zip (244,01 kb)

    Vytvořeno: 24.01.2009 10:33 uživatelem novotny | Komentáře (0) RSS comment feed |
    • Currently 4/5 Stars.
    • 1
    • 2
    • 3
    • 4
    • 5