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>
af Henrik Jensen
5. november 2015 08:53
I MS CRM 2013 og 2015 er der, som standard, indsat et undergitter til Forbindelser på Firma 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...
af Henrik Jensen
17. oktober 2015 19:28
EMEA Dynamics CRM Support har lavet et blogindlæg, som beskriver hvad der skal til for at lave en komplet fjernelse af MS CRM til Outlook.
Jeg har selv tidligere lavet et indlæg om dette til tidligere versioner. Læs mere: Komplet fjernelse af MS Dynamics CRM til Outlook og Komplet fjernelse af MS CRM 2011 til Outlook.
Link til EMEA Dynamics CRM Support indlæg (Engelsk): Manually Uninstall & Install Dynamics CRM 2013 for Outlook...
af Henrik Jensen
28. september 2015 21:51

Hvis man opgraderer MS CRM 2015 til MS CRM 2015 kan man opleve en bemærkelsesværdig fejl. Fejlen går ud på at der bliver skrevet en forkert datoværdi i en tabel i CRM-organisationsdatabasen.
I forbindelse med opgraderingen kan man opleve følgende fejl (uddrag af logfil):
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Microsoft.Crm.CrmArgumentOutOfRangeException: DateTime is less than minumum value supported by CrmDateTime. Actual value: 01/01/1753 00:00:00, Minimum value supported: 01/01/1900 00:00:00 ---> System.ArgumentOutOfRangeException: DateTime is less than minumum value supported by CrmDateTime. Actual value: 01/01/1753 00:00:00, Minimum value supported: 01/01/1900 00:00:00
Læg mærke til datoen 01/01/1753.
Konsulentchef Anders Lytoft Fyrst fra Nordic Computer, analyserede sig frem til at det var opgraderingsprocesser der indsatte den "forkerte" dato i tabellen TimeZoneRuleBase i organisationsdatabasen:

Løsningen
Inspiration til løsning på problemet er hentet i følgende blogindlæg: Upgrade 2013 to 2015 causes error...
Dog med en lille ændring af triggeren:
CREATE TRIGGER MyBasicTrigger On timezonerulebase After Insert, Update AS
SET NoCount ON
IF UPDATE(effectivedatetime)
BEGIN
UPDATE timezonerulebase
SET EffectiveDateTime = '1900-01-01'
FROM timezonerulebase
INNER JOIN inserted on timezonerulebase.TimeZoneRuleId = inserted.TimeZoneRuleId
WHERE Inserted.EffectiveDateTime < '1900-01-01'
END
Efter oprettelse af triggeren køres opgraderingen. Når denne er færdig fjernes triggeren med følgende kommando:
DROP Trigger MyBasicTrigger
Læs mere
Mon fejlen har noget med den 4. Jarl af Chesterfield Philip Stanhope at gøre? Det kan du selv vurdere efter at have læst følgende: What is the significance of 1/1/1753 in SQL Server?...
af Henrik Jensen
13. september 2015 08:27
Jesper Funk og Thomas Rath fra Norriq har tippet mig om et problem, som kan opstå med E-mail Router softwaren i MS CRM 2013, som er flyttet fra Online til Onpremise. Problemet har omfattet flere kunder.
Problemet
En række brugere, som er indstillet til at benytte Email Router for Outgoing Emails blev e-mails ikke behandlet. I Email Router Configuration Manager ved klik på knappen Load Data blev e-mails ikke overført til E-mail Routeren, og dermed er de ikke behandlet.
Analysen
Følgende SQL Trace blev benyttet til analyse af problemet:
exec sp_executesql N'select
top 5001 "systemuser0".SystemUserId as "systemuserid"
, "systemuser0".FullName as "fullname"
, "systemuser0".InternalEMailAddress as "internalemailaddress"
, "systemuser0".OutgoingEmailDeliveryMethod as "outgoingemaildeliverymethod"
, "systemuser0".IncomingEmailDeliveryMethod as "incomingemaildeliverymethod"
from
SystemUserBase as "systemuser0"
where
(((((("systemuser0".InternalEMailAddress is not null and "systemuser0".IsDisabled = @IsDisabled0))
and (((("systemuser0".OutgoingEmailDeliveryMethod = @OutgoingEmailDeliveryMethod0))
or (("systemuser0".IncomingEmailDeliveryMethod = @IncomingEmailDeliveryMethod0
or "systemuser0".IncomingEmailDeliveryMethod = @IncomingEmailDeliveryMethod1))))
and (("systemuser0".InviteStatusCode = @InviteStatusCode0))))))
order by
"systemuser0".SystemUserId asc',
N'@IsDisabled0 bit, @OutgoingEmailDeliveryMethod0 int, @IncomingEmailDeliveryMethod0 int, @IncomingEmailDeliveryMethod1 int, @InviteStatusCode0 int', @IsDisabled0=0, @OutgoingEmailDeliveryMethod0=2, @IncomingEmailDeliveryMethod0=2, @IncomingEmailDeliveryMethod1=3, @InviteStatusCode0=4
Bemærk følgende: (("systemuser0".InviteStatusCode = @InviteStatusCode0))))))
Nye brugere har som standard værdien 4 (InviteStatusCode), men analysen viser at brugere har en anden værdi end 4.
Løsningen
Løsningen var at eksekvere følgende script på den aktuelle organisation:
UPDATE SystemUserBase
SET InviteStatusCode = 4
WHERE InviteStatusCode <> 4
af Henrik Jensen
31. august 2015 10:52
Hvis man importerer en MS CRM 2013-organisation til en MS CRM 2015-installation, så vil organisationen blive opgraderet. I dette scenarie kan man opleve følgende fejl:

System.Exception: Error.ActionFailed Microsoft.Crm.Tools.Admin.ProvisionOrganizationLanguagesAction ---> System.Data.SqlClient.SqlException: Invalid column name 'AttributeId'.
Invalid column name 'EntityName'.
Could not use view or function 'PrincipalSyncAttributeMap' because of binding errors.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
Løsningen
Fejlen har samme løsning som en anden fejl, som jeg lavede et blogindlæg om tidligere: Fejl ved opdatering af MS CRM 2015 med Opdatering 0.1...
Microsoft har erkendt fejlen men i skrivende stund er der endnu ikke lavet et fix til onpremise. Ifølge Oana Nitescu, Microsoft vil fejlen blive rettet i Opdatering 0.2 til onpremise.
Johnny Rossi har imidlertid fundet en midlertidig løsning på problemet, som skyldes en fejl i forhold til oprettelse af et indeks. Læs mere om fejlen (dateret 23. april 2015) (Engelsk): CRM 2015 - Error after update 0.1...
af Henrik Jensen
28. august 2015 08:07
Jesper Funk fra Norriq har tippet mig om en irriterende fejl når man gemmer poster i MS CRM 2015 Online med Opdatering 1. Fejlen kan opstå når man f.eks. gemmer en post såsom Firma, hvor man kan opleve at følgende dialogboks fremkommer når man klikker på knappen Gem og Luk:

OPDATERING! Efter at jeg har lavet denne artikel har flere kontaktet mig, herunder Nels Poulsen, CRM Architect hos GN Netcom, for at fortælle, at løsningen anvist i dette indlæg ikke har hjulpet hos dem. En del har forskellige oplevelser med om det virker eller ej, og der er mange andre mystiske fejl efter Opdatering 1 på MS CRM 2015 Online. Jeg har også selv oplevet nogle andre uheldigheder, som dette indlæg ikke dækker.
Indlæsning og håndtering af formularer (rent teknisk) er ændret med MS CRM 2015 Online Opdatering 1. De nye formularer er markant hurtigere end dets forgængere. Læs mere om dette her (Engelsk): MS CRM Online 2015 Update 1 - New Form Rendering Engine...
Fejlen kan undgås ved at indstille MS CRM til at benytte den forrige metode til håndtering af formularer (Indstillinger, Administration, Systemindstillinger) fanen Generelt.
BEMÆRK! Jeg har testet ovenstående problemstilling i såvel opgraderede organisationer som nyoprettede organisationer. Og det viser sig at problemet øjensynlig kun optræder i opgraderede organisationer.
af Henrik Jensen
23. august 2015 10:02

Windows 10 er netop blevet frigivet, og hvad så med MS CRM? Vil det fungere?
Som standard indeholder, og benytter, Windows 10 en ny browser som har navnet Microsoft Edge. Denne nye browser fungerer ikke 100% med MS CRM. Microsoft arbejder dog på en frigivelse af opdateringer, som vil blive frigivet inden for kort tid. Det drejer sig om følgende opdateringer:
- MS CRM 2013 (Onpremise), Service Pack 1, Update Rollup 4 (version 6.1.4)
- MS CRM (Onpremise) Update 0.2 (version 7.0.2)
- MS CRM Online, 2015 Update 1.1 (version 7.1.1)
af Henrik Jensen
23. august 2015 09:35
Jacob Mondrup fra Vivant har tippet mig om en løsning som gør det muligt at benytte "Indeholder ikke" forespørgsler i Avanceret søgning.
Problemet
Hvis man f.eks. ønsker at finde alle Firmaer som IKKE har tilknyttet en Kontaktperson, så vil man normalt forsøge med følgende forespørgsel:

Resultatet vil dog være tomt...altså at der ikke eksisteret Firmaer uden Kontaktpersoner, hvilket ikke nødvendigvis er sandt.
Igennem lang tid har flere adresseret denne problemstilling for Microsoft, som ikke har løst denne endnu.
Løsningen
Firmaet Cobalt har lavet en løsning som giver den nødvendige funktionalitet, i form at en Administreret Løsning man kan installere, og som så "overskriver" den manglende funktionalitet i Avanceret søgning, så det rent faktisk fungerer som det skal.
Når man downloader løsningen (se herunder), så består den af en ZIP-fil, som indeholder en løsning til henholdsvis MS CRM 2013 og MS CRM 2015. Man skal således benytte den som er relevant i forhold til en egen CRM-version.
Grundlæggende information og download(Engelsk): Dynamics CRM Intelligent Query...
Blog med eksempler og information om nye muligheder (Engelsk): CRM Intelligent Query Known Issues, Fixes and Workarounds...
af Henrik Jensen
25. juni 2015 19:33
Hvis man har opdateret MS CRM 2015 med Opdatering 0.1 (Update 0.1) så vil man opleve følgende fejl når man forsøger at importere en organisation:

I logfilen finder man bl.a. følgende meddelelse:
Error while updating organization information: System.Data.SqlClient.SqlException (0x80131904): Could not find stored procedure 'p_CreateAuditEntry'.
Der er flere som har oprettet en sag hos Microsoft, men der er ikke frigivet en officiel løsning på problemet. Læs mere om dette her: Error Importing Organization after Update 0.1...
I ovennævnte artikel beskriver Harald Petersilka en løsning, som jeg kan tilslutte mig, om end det er en midlertidig løsning. Husk herunder at fjerne de dele af de 2 stored procedures, som refererer til tabellen AuditHistory. De 2 stored procedures skal ende med at se således ud:
if exists (select * from sys.objects where name = 'p_CompleteAuditEntry' and type = 'P')
begin
drop procedure p_CompleteAuditEntry
end
go
create procedure p_CompleteAuditEntry( @AuditEntryId uniqueidentifier,
@Result int,
@Details nvarchar(max)) as
begin
set nocount on
end
go
if exists (select * from sys.objects where name = 'p_CreateAuditEntry' and type = 'P')
begin
drop procedure p_CreateAuditEntry
end
go
create procedure p_CreateAuditEntry (@AuditEntryId uniqueidentifier,
@ObjectId uniqueidentifier,
@ObjectType nvarchar(40),
@Operation nvarchar(40),
@Details nvarchar(max),
@UserName nvarchar(40)) as
begin
set nocount on
end
go
af Henrik Jensen
7. marts 2015 09:06
Jeg faldt over en artikel (Tip #180: Don’t use that name...), som forklarer hvordan man kan se hvilke navne der er ulovlige som organisationsnavne i MS CRM.
Hvis man benytter onpremises finder man tabellen ReservedNames i organisationsdatabasen MSCRM_CONFIG. Her finder man de ulovlige navne.
About |
bin |
Help |
rc |
SM |
Activities |
Biz |
Home |
Reports |
support |
AdvancedFind |
Calendar |
Import |
ReportServer |
Tools |
api |
Condition |
MA |
ResourceCenter |
tsweb |
AppWebServices |
CRMReports |
MSCRMServices |
Sdk |
UnitTests |
aspnet_client |
CS |
Notes |
SFA |
UserDefined |
bi |
dev |
Products |
signin |
Workplace |
Hvis man forsøger at oprette en organisation med et ulovligt navn får man følgende meddelelse:

af Henrik Jensen
21. januar 2015 08:12
Min kollega Thomas Pein-Lorenzen gjorde mig opmærksom på de tilstandskoder der kan forekomme ved Akkumuledede felter i MS CRM 2015, og som man bør forholde sig til for at identificere om det Akkumulerede felt opfører sig som forventet.
Når man opretter et Akkumuleret felt indstiller man det således:
Systemet opretter 3 felter (4 i dette tilfælde da der er benyttet et Valuta-felt):
 |
|
Det oprindelige felt |
|
Tilhørende felt som håndterer valutaberegningen |
|
Datofelt som fortæller hvornår feltet senest er opdateret |
|
Felt med tilstand for akkumuleringen |
De tilstandskoder der kan optræde i feltet Sum (tilstand) (<navn>_state) er:
State værdi |
Tekstkode |
Beskrivelse |
0 |
NotCalculated |
Feltet er endnu ikke blevet beregnet. |
1 |
Calculated |
Feltet er beregnet. Datoen for beregningen finder man i feltet <navn>_date. |
2 |
OverflowError |
Beregningen resulterede i en værdi som ligger udenfor de tilladte værdier for feltet. |
3 |
OtherError |
Der opstod en intern fejl ved beregningen. Næste beregning vil højest tænkelig lykkedes. |
4 |
RetryLimitExceeded |
Det maksimale antal gentagne forsøg på beregning er overskredet. Fejlen kan opstå ved låsning af de poster der skal beregnes. |
5 |
HierarchicalRecursionLimitReached |
Den maksimale dybde på beregninger er overskredet. |
6 |
LoopDetected |
Der er tale om et loop i beregningen i forhold til de poster der beregnes. |
Akkumulerede felter kan benyttes på følgende felttyper:
- Heltal (Whole Number)
- Decimal (Decimal)
- Valuta (Currency)
- Dato og klokkeslæt (Date & Time)
Der er følgende begrænsninger ved brug af Akkumulerede felter:
- Kan benyttes på 1:N-relationer...ikke på N:N-relationer.
- Kan ikke benyttes ved beregninger på andre Akkumulerede eller Beregnede felter.
- Kan ikke benyttes i forbindelse med Hændelser (Trigger) i Arbejdsprocesser (Workflows).
- Der kan maksimalt benyttes 100 Akkumulerede felter indenfor en organisation.
- En entitet kan maksimalt benytte 10 Akkumulerede felter.
- Ved komplekse beregninger skal man stadig benytte plug-ins eller Javascript.
Læs mere
Her kan du finde flere informationer om Akkumulerede felter: