Efter at jeg selv skrev et indlæg om fejl efter opgradering af MS CRM 2016 til Dynamics 365 Onpremise, har flere kontaktet mig med lignende fejl eller andre fejl.
Morten Jørgensen fra C2-Relations har gjort mig opmærksom på endnu en fejl efter opgradering af MS CRM 2016 (8.0.1.79) til Dynamics 365 Onpremise (8.2.0.749).
Problemet
CRM-serveren opdateres uden den store ballade, men organisationerne bliver ikke opgraderet. Årsagen er ballade med index i solutionbase:
Info| Database update install failed for orgId = “orgid”. Continuing with other orgs.
Exception: System.Data.SqlClient.SqlException (0x80131904): Cannot insert duplicate key row in object 'dbo.SolutionBase' with unique index 'ndx_UniqueName'.
The duplicate key value is (SnapshotSolution80).
The statement has been terminated.
Informationen skriver samtidig at det skyldes SnapshotSolution80, hvilket ikke er korrekt. Den egentlige årsag skal formegentlig findes i at organisationen tidligere er opgraderet fra MS CRM 2015.
Det som er forvirrende er at fejlen henleder opmærksomheden på SnapshotSolution80, men ID'et handler faktisk om SnapshotSolution (Det er nok her opgraderingen fra MS CRM 2015 til 2016 spiller ind), ID’et har tilknytning til SnapshotSolution, og ikke SnapshotSolution80.
Løsningen
Det virker med andre ord som om at et opgraderingsscript ikke bliver afviklet. Der findes rigtig mange af disse som afvikles ved en opgradering.
Når følgende script er afviklet, på den eller de organisationsdatabaser der ikke kan opgraderes, kan organisationen opgraderes, og i følge egne tests, kører alt som det skal.
-- Solution Type is a new field introduced in v8.2 and this needs to be set for old 8.0 solution which was created in v8.1
-- devek 6/29/2016
UPDATE SolutionBase
SET SolutionType = 1, Version = '8.0', UniqueName = 'SnapshotSolution80'
WHERE SolutionId = '57A85212-B3B4-4C39-BCB0-5D5EF1F5FFC4'
I databasen kan man se følgende (læg mærke til at SnapshotSolution80 blev introduceret i Leo - MS CRM 2013 Rollup 1 (6.1.x.x)):

Bemærkninger
Hvis man ikke kører ovennævnte script så er organisationen/organisationerne ikke opgraderet, hvilket indebærer at man ikke kan Publicere tilpasninger (Publish). Man får følgende fejlmeddlelse, også selv om man har rollen Systemadministrator (System Administrator):

Med følgende fejl:
PrivilegeName: prvReadCustomControl, PrivilegeId: f343f9c2-3810-4328-adbc-7fe57a0a63c5
Hvis man opretter en Brugertilpasset Sikkerhedsroller (Custom Security Roles), så fremkommer samme fejl.