Forretningsregler kan åbne for låste felter

af Henrik Jensen 9. juni 2016 16:10

Min gode kollega Thomas Pein-Lorenzen har lavet et blogindlæg på baggrund af en opdagense en anden kollega (Niclas Lund Stisager) har gjort.

Opdagelsen går ud på at, hvis man opretter en Forretningsregel (Business Rule), som låser op for felter, så vil disse forblive låst op selv om man f.eks. lukker en Salgsmulighed, deaktiverer en Kontaktperson mv. Der kan vist ikke være tvivl om at der er tale om en fejl i MS CRM.

 

Ud over de test som Thomas og Niclas har lavet, har jeg testet fejlen i den seneste opdatering (Serviceopdatering 1) til såvel Online som Onpremise, og fejlen er der stadig, og det gælder for alle felttyper.

...men der er en løsning på fejlen, om end den er lidt kryptisk, nemlig at opsætte mere end et kriterie i samme Forretningsregel.

Jeg kan anbefale at tage et kig på blogindlægget (Engelsk): Possible CRM bug: Business rules overrule Read-only records...

Oprette en Installationsadministrator (Deployment Administrator) i databasen

af Henrik Jensen 16. maj 2016 08:30

I nogle tilfælde har jeg fået adgang til en CRM-server hvor jeg skal administrerer MS CRM via Installationsstyringen (Deployment Manager), men jeg er ikke oprettet som Installationsadministrator (Deployment Administrator). I de fleste tilfælde vil jeg bede de ansvarlige om at oprette mig som Installationsadministrator, men i nogle tilfælde kan det være besværligt.

 

Denne vejledning viser hvordan man kan oprette en CRM-bruger som Installationsadministrator (Deployment Administrator) direkte på SQL Serveren, og dermed opnå adgang til Installationsstyringen (Deployment Manager).

Eksemplet herunder tager udgangspunkt i MS CRM 2016, men det er samme fremgangsmåde helt tilbage til MS CRM 4.0.

Forudsætningerne er, at den Bruger man vil gøre til Installationsadministrator:

  • Skal være oprettet i MS CRM og have sikkerhedsrollen Systemadministrator.
  • Skal, som minimum, være Lokal AdministratorCRM-serveren.
  • Man skal have rettigheder som SysAdminSQL Serveren.

Gennemfør følgende trin:

  1. Find SystemUserId, fra Organisationsdatabasen, på den bruger som skal være Installationsadministrator:
    SELECT SystemUserId, FullName
    FROM dbo.SystemUser
    WHERE (FullName LIKE '%test%')
  2. Find Id og UserId fra MSCRM_CONFIG:
    SELECT Id, UserId
    FROM dbo.SystemUserOrganizations
    WHERE (CrmUserId = '[SystemUserId fra Trin 1]')
  3. Find Id, fra MSCRM_CONFIG, på den Sikkerhedsrolle (Security Role), som er Administrator:
    SELECT Id FROM dbo.SecurityRole WHERE (Name = 'Administrator')
  4. Kør følgende script, fra MSCRM_CONFIG, for at oprette en SystemUserRole:
    INSERT INTO SystemUserRoles
    (
         [Id]
         ,[SecurityRoleId]
         ,[SystemUserId]
         ,[IsDeleted]
    )
    VALUES
    (
         NEWID()
         ,'[Id fra Trin 3]'
         ,'[UserId fra Trin 2]'
         ,0
    )
  5. Kør følgende script, fra MSCRM_CONFIG, for at knytte Brugeren til SystemUser-tabellen:
    UPDATE SystemUser
    SET Name =  '[Brugernavn (User Name) i MS CRM]'
    WHERE Id = '[UserId fra Trin 2]'

 

Gendanne en krypteret database med certifikater

af Henrik Jensen 2. maj 2016 19:53

Jeg har implementeret en del organisationsdatabaser fra CRM Online til Onpremise, i den seneste tid er den primære årsag dårlig ydelse på CRM Online.

Tidligere leverede Microsoft organisationsdatabasen som en SQL-backupfil, som man kunne gendanne i sit eget setup (onpremise). På det seneste leverer Microsoft organisationsdatabasen "pakket ind i vat" i form at et certifikat, som skal implementeres på SQL Serveren før man kan gendanne organisationsdatabasen (Tekster der identificerer kundenavn er erstattet med XYZ efterfølgende).

I nedenstående er 838bc2d177704acaa9e0d37190dd88f0 lig med GUID'en på organisationen.

Proceduren er følgende:

  1. Åbn SQL Server Management Studio. Åbn et Forespørgselsvindue (Query) og tast følgende
    use master
    GO
  2. Kontroller om DMK (MS_DatabaseMasterKey) eksisterer med følgende kommando:
    select * from sys.symmetric_keys
    GO
  3. Hvis Database Master Key ikke eksisterer så opret den således:
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '[strong password text]'
    GO
  4. Verificer at DMK er oprettet således:
    select * from sys.symmetric_keys
    GO
  5. Importer certifikat således:
    CREATE CERTIFICATE CRMLTOP_XYZ_838bc2d177704acaa9e0d37190dd88f0
    FROM FILE = '[.cer file path]\CRMLTOP_XYZ_838bc2d177704acaa9e0d37190dd88f0.pfx_1.cer'
    WITH PRIVATE KEY (FILE = '[.pvk file path]\CRMLTOP_XYZ_838bc2d177704acaa9e0d37190dd88f0.pfx_1.pvk',
    DECRYPTION BY PASSWORD = 'CRMLTOP_XYZ_838bc2d177704acaa9e0d37190dd88f0')
  6. Herefter kan man gendanne organisationsdatabasen.

Deaktivering af relaterede poster

af Henrik Jensen 11. april 2016 20:06

De fleste har fra tid til anden brig for at relaterede poster bliver deaktiveret når man deaktiverer "hovedposten". F.eks. at alle relaterede Kontaktpersoner bliver Deaktiveret når man Deaktiverer et Firma.

MS CRM har ikke den mulighed, som standard. Men der er en som har lavet en nyttig funktion, som kan hjælpe her, og som fungerer sammen med en Arbejdsproces (workflow). Løsningen fungerer på MS CRM 2015 og 2016 (Online og Onpremise).

Løsningen hedder MSCRM Workflow Utilities, og er en serie af Workflow Activities, hvor vi her vil fokusere på en af disse, nemlig Cascade SetState.

 

Der oprettes en Arbejdsproces således:

 

Læs mere om hvad der skal til for at lave løsningen her (Engelsk): How to cascade activate / deactivate (SetState) in CRM...

Download løsningen her (Engelsk): MSCRM Workflow Utilities download...

Læs mere om de yderligere funktioner her (Engelsk): MSCRM Workflow Utilities documentation...

Fejl ved implementering af Documents Core Pack

af Henrik Jensen 8. april 2016 07:49

Min kollega Thomas Pein-Lorenzen viste mig en fejl som opstod når man implementerer Add-in'en Documents Core Pack (DCP) i en organisation (nedenstående er kun en del af fejlmeddelelsen).

Der fremkom endvidere en række fejl i Event Loggen på CRM-serveren, men disse gav ikke en særlig god information om hvad der kunne være galt, så vi besluttede at kontakte DCPs support, og de gav os følgende svar (her oversat fra Engelsk), som vi blev en del overrasket over:

"Hvis man får fejlmeddelelsen Solution AutoMergeGlobalButtonTmp Failed To Import, betyder det, at den bruger som er i gang med at implementere DCP ikke har de nødvendige rettigheder for at tilgå løsningsfilerne.

En mulig løsning på problemet er at give rettigheden Modify på gruppen Everyone for følgende mappe på den server hvor DCP er installeret: C:\Program Files\Microsoft Dynamics CRM\CustomizationImport"

Utroligt men sandt, så virkede det. Det utrolige er, at adgangen til filsystemet, fra MS CRM, blev fjernet i MS CRM 2011...men der er åbenbart stadig noget "gammel kode", som spøger i kulissen.

Link til svar fra DCP-support (Engelsk): Solution AutoMergeGlobalButtonTmp failed to import...

Microsoft arbejder på Opdatering 0.1 til MS CRM 2016

af Henrik Jensen 14. februar 2016 13:46

Microsoft arbejder på Opdatering 0.1 til MS CRM 2016. Datoen for frigivelsen er ikke annonceret endnu.

Men opdateringen vil være særdeles velkommen, og må meget gerne inkludere en noget bedre ydelse end den MS CRM 2016 bibringer...den er nemlig skrækkelig. Og det gælder såvel Online som Onpremise. Den er ligeledes helt gal med Outlook-klienten, og kunderne er ved at være rasende. Af samme årsag har jeg sat en del opgraderingsprojekter på hold indtil der er bedringer på vej.

Jeg har ligeledes oplevet en del dårligdomme for dem som benytter Citrix. Nu har MS CRM og Citrix aldrig haft det kærligt forhold, men på det seneste er den da helt gal. Igen er det Outlook-klienten som har en forfærdelig dårlig ydelse.

Der er sluppet lidt ud om hvilke ændringer og fejlrettelser der bliver frigivet. Læs mere i følgende blogindlæg (Engelsk): MS CRM 2016 Update 1 – What to expect...

Den Asynkrone service fejler, og en mulig løsning

af Henrik Jensen 5. januar 2016 08:12

Jeg har netop været i kontakt med Microsoft Support i forbindelse med et problem med den asynkrone service for en kunde. Vi boksende med problemstillingen i et par uger inden der kom en brugbar løsning. Her er problemstillingen og løsningen.

Problemstillingen

Den Asynkrone Service fejlede gentagne gange, og efter en række fejl blev servicen autmatisk genstartet, for at gentage samme mønster. Event Vieweren viste følgende (uddrag):

Host [NAVN FJERNET]: failed while monitoring asynchronous operations queue. Exception: System.Windows.Markup.XamlParseException: 'Add value to collection of type 'System.Windows.Documents.TableRowGroupCollection' threw an exception.' Line number '1' and line position '1212'. ---> System.ArgumentNullException: Value cannot be null.
Parameter name: item
  at MS.Internal.Documents.TableTextElementCollectionInternal`2.Add(TElementType item)
  at MS.Internal.Documents.ContentElementCollection`2.System.Collections.IList.Add(Object value)
  at MS.Internal.Xaml.Runtime.ClrObjectRuntime.Add(Object collection, XamlType collectionType, Object value, XamlType valueXamlType)
  --- End of inner exception stack trace ---

 

Løsningen

Efter at Microsoft Support kiggede forskellige tracelogs og hukommelsesdumps igennem, viste det sig at det handlede om den hukommelse der er allokeret til Performance Counters. Hukommelsen var for lille, og at det dermed forårsagede at den asynkrone service fejlede.

Fejlrettelsen er således at allokere mere hukommelse til Performance Counters. Det gøres ved at oprette en Key med navnet FileMappingSize, af typen DWORD, og indstille værdien (decimal) til 786432 på følgende Keys i Registreringsdatabasen:

  • HKLM\System\CurrentControlSet\Services\ServiceModelEndpoint 4.0.0.0\Performance
  • HKLM\System\CurrentControlSet\Services\ServiceModelOperation 4.0.0.0\Performance
  • HKLM\System\CurrentControlSet\Services\ServiceModelService 4.0.0.0\Performance

Hvis ovennævnte Keys ikke eksisteret så findes de under ServiceModelService 3.0.0.0.

Fejl ved import af løsninger i Opdatering 0.2

af Henrik Jensen 7. december 2015 15:12

Man kan opleve fejl ved import af Løsninger når man har implementeret Opdatering 0.2 til MS CRM 2015.

 

Man kan ligeledes opleve fejlen ved brug af Ribbon Workbench:

Fejlen opstår hvis man har oprettet Forretningsregler (Business Rules) på en entitet som er i den Løsning man importerer.

Jeg har følgende bemærkninger til fejlen:

  • Fejlen er erkendt af Microsoft, som arbejder på en løsning.
  • Hvornår der frigives en løsning vides ikke pt.
  • Fejlen omhandler alene Opdatering 0.2, og altså ikke 7.1.1 eller MS CRM 2016.
  • Den gode mand Scott Durow fra Develop 1 har beskrevet (link herunder) at en løsning kan være at oprette Forretningsreglerne. Jeg kan dog bekræfte at det ikke vil fungere i alle tilfælde.

 

Midlertidig løsning

Selv om det måske er en ringe trøst, kan en midlertidig løsning være, at fjerne alle Forretningsregler i den Løsning man importerer til. Man skal selvfølgelig huske at disse så skal være i den Løsning man importerer...ellers mistes de jo.

 

Læs mere

Blinkende markør i Outlook 2013 med MS CRM 2015

af Henrik Jensen 23. november 2015 08:22

I forbindelse med opsætning af MS CRM 2015 til Outlook 2013 i et testmiljø hvor der indgik en Barracuda Proxy oplevede vi at Outlook 2013 blinkede, som om at Outlook forsøgte at indlæse data, men ikke rigtig kom videre.

Det viste sig at en manglende konfigurationsfil til MS CRM til Outlook var den grundlæggende årsag til problemet.

Problemet kan løses ved at oprette en tom fil med navnet Microsoft.CRM.Application.Outlook.WebFormsHost.exe.config og placere filen, på Outlook-klienten, i mappen C:\Program Files\Microsoft Dynamics CRM\Client\res\web\bin

Inspiration til løsning af problemet blev fundet her (Engelsk): Flashing Cursor in Outlook 2013 with CRM 2015 for Outlook installed...

Hvorfor er en pris låst på en Ordre?

af Henrik Jensen 20. november 2015 09:56

Når man opretter en Ordre direkte i MS CRM så kan man selvfølgelig tilknytte Produkter (Eksisterende og Egne oprettede (Produkter, der skal revideres)).

Hvis man opretter en Ordre fra et Tilbud så vil man opleve at en række felter er låst på Produkterne.

Årsagen til at felterne er låst er, at indstilingen Priser er låst er sat til Ja. Hvilket sker automatisk når man opretter en Ordre fra et Tilbud.

Man kan fjerne låsningen på Produkterne ved at vælge kommandoen Brug aktuel prissætning eller ved at klikke på hængelåsen.

 

Omvendt kan implementere låsningen på Produkterne ved at vælge kommandoen Lås prissætning eller ved at klikke på hængelåsen.

 

Alternativt kan man sætte/fjerne låsningen med en Arbejdsproces (workflow), plugin eller med klient-side-kode:

var ispricelocked = Xrm.Page.getAttribute("ispricelocked").getValue();

if (ispricelocked) {
    Xrm.Page.getAttribute("ispricelocked").setValue(false);
    Xrm.Page.getAttribute("ispricelocked").setSubmitMode("always");
}

To nye felter, i MS CRM 2015, som kan forårsage fejl

af Henrik Jensen 10. november 2015 12:13

MS CRM 2015 indeholder en række nye felter, herunder følgende felter på Firma:

  • Åbne handler (opendeals)
  • Åben omsætning (openrevenue)

Felterne er indstillet som Akkumulerede felter samt bagvedliggende definition akkumuleringen (eksemplet herunder er på feltet Åben omsætning (openrevenue)):

Felterne er indstillet til Feltsikkerhed (Field Level Security):

En nærmere analyse af Profil for feltsikkerhed viser at felterne ikke kan indstilles til Opdater og Opret.

...op det er her balladen kan opstå i form af en fejlmeddelelse (se herunder), nemlig at felterne ikke kan opdateres, og dermed ikke fungerer efter hensigten. Der er selvfølgelig tale om en fejl fra Microsofts side. Indtil fejlen bliver rettet kan man slå Feltsikkerheden fra på de 2 felter.

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: User with ID 918e980f-ae4a-e311-8c18-005056b90028 does not have Update permissions for the openrevenue attribute in the account entity. The accountid of the record is 66da74a1-3b3e-e411-9407-005056b93ac4Detail: 
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
  <ErrorCode>-2147158777</ErrorCode>
  <ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
  <Message>User with ID 918e980f-ae4a-e311-8c18-005056b90028 does not have Update permissions for the openrevenue attribute in the account entity. The accountid of the record is 66da74a1-3b3e-e411-9407-005056b93ac4</Message>
  <Timestamp>2015-11-02T08:07:15.6466161Z</Timestamp>
  <InnerFault i:nil="true" />
  <TraceText i:nil="true" />
</OrganizationServiceFault>

Manglende + på Firma og Salgsmulighed på brugerdefinerede relationer til Forbindelser

af Henrik Jensen 5. november 2015 08:53

I MS CRM 2013 og 2015 er der, som standard, indsat et undergitter til ForbindelserFirma og Salgsmuligheder:

Hvis man selv indsætter et undergitter, som er indstillet til at vise Forbindelser, så kan man ikke få vist + tegnet:

Som standard er det ikke muligt at fremkalde + tegnet idet Microsoft har "hard-coded" dette, og dermed er det "by design". Om dette ændrer sig i fremtiden kan man bare håbe på. Læs mere om problemet her (Engelsk): Cannot get "+" sign to showup on Connections sub-grid on Account form same as it does on Opportunity form...

I mellemtiden har Scott Durow fra Develop 1 lavet en løsning som giver den ønskede funktionalitet samt mere til: Løs mere om dette her (Engelsk): Refreshed Connections UI Solution...

Bliv medlem af CRMUG DK

De regionale afdelinger i CRMUG giver mulighed for a mødes med andre medlemmer af CRMUG i dit lokalområde. Hermed får du mulighed for at mødes ansigt til ansigt og vidensdele med andre brugere af Microsoft Dynamics CRM i dit område.

Læs mere den Danske afdeling af CRMUG...

Om Henrik Jensen

Jeg har altid fingeren på pulsen når det drejer sig om Microsofts produkter & teknologier, og især når det handler om Microsoft Dynamics CRM.

Henrik Jensen

Jeg har arbejdet professionelt i IT-branchen mere end 25 års, deraf mere end 18 år med CRM-systemer, og samtidig indehaver af mere end 50 Microsoft-certificeringer.

Mobil: +45 20 300 300
E-mail: hj@easyconsult.dk

EASYConsult ApS

Læs mere...

Downloads, værktøjer, installation og JScript

Downloade komponenter til MS CRM:
    • Microsoft Dynamics CRM 4.0
    • Microsoft Dynamics CRM 2011
    • Microsoft Dynamics CRM 2013
    • Microsoft Dynamics CRM 2015
    • Microsoft Dynamics CRM 2016

Liste over Opdateringspakker (Rollups):
    • Microsoft Dynamics CRM 4.0
    • Microsoft Dynamics CRM 2011
    • Microsoft Dynamics CRM 2013
    • Microsoft Dynamics CRM 2015
    • Microsoft Dynamics CRM 2016

Værktøjer til MS CRM:
    • Liste med værktøjer til MS CRM

Krav og opsætninger til installation:
    • Krav og opsætninger MS CRM 2011
    • Krav og opsætninger MS CRM 2013
    • Krav og opsætninger MS CRM 2015
    • Krav og opsætninger MS CRM 2016

JScript eksempelkode:
    • JScript eksempelkode

Diverse værktøjer:
    • Sysinternals
    • PowerShell og MS CRM 2011

Visual Studio, SSIS og Kingswaysoft
    • Visual Studio 2017
    • Dataværktøjer (SSIS) 2017
    • Kingswaysoft

Månedsliste

Forbehold

Alt hvad du læser på denne blog er alene udtryk for mine egne holdninger og meninger, og kan ikke henføres til andet end som så.

De løsninger jeg fremstiller på denne blog er ikke nødvendigvis testet i et driftsmiljø. Hvis du gør brug af mine løsninger er det på eget ansvar.