Kopier Navision RTC-brugeropsætning

Hvor gemmer Navision eller Business Central brugeropsætningerne?

Før RTC var dette meget enkelt: I fin.zup-mappen under%AppData %. Det native Navision (fin.exe eller finsql.exe) kasserede også gerne indstillingerne ved enhver lejlighed. Og et universalmiddel mod et "klistret" Navision var simpelthen at slette disse zup (udtales Z-UP, ZETT-Up = Setup).

Under Navision og Business Central RTC fordeler brugerindstillingerne sig på disse tre lagersteder:
Tabelposter i tabellen 2000000075 User Metadata
Binære indhold i filen%AppData %\Microsoft\Microsoft Dynamics NAV\PersonalizationStore.xml
Klientindstillinger i filen%AppData %\Microsoft\Microsoft Dynamics NAV\VersionKlientBrugerindstillinger.config

Klientindstillingerne (tredje punkt) kan ikke meningsfuldt kopieres med Navisions egne midler. Af en meget simpel årsag: For at Navision & Business Central overhovedet kan køre, skal en fungerende ClientUserSettings.config allerede være til stede! En indbygget kopieringsfunktion i Navision eller Business Central for disse bruger- eller bedre klientopsætninger er derfor ikke særlig hjælpsom.

I Business Central fra version 15 (2019 Fall Release) bortfalder den lokale indstillingsfil PersonalizationStore helt. Her taler vi så om designændringer, der er gemt i metadataene.

Så det bliver egentlig kun svært med Navision / Business Central RTC fra version 2009R2/2013 til version 2019 Spring Release, for her kommer PersonalizationStore.xml dertil, ud over tabellen 2000000075 User Metadata.

Denne artikel omhandler netop disse versioner af Business Central og Navision.

Hvorfor kopiere indstillingerne?

Det er i sandhed et meget vigtigt spørgsmål! Og svaret er desværre: Fordi man ikke har arbejdet ordentligt på forhånd.

Resultatet af de kopi-værdige indstillinger er en ren Navision-opsætning, hvor mange kolonner er synlige eller skjulte på en fornuftig måde, og hvor de er arrangeret i en god rækkefølge. Hurtig indtastning, spring over af unødvendige felter med Enter- eller Tab-tasten, menuer, kolonnebredder... Alt dette er allerede godt indstillet og skal derfor overføres til en ny eller anden medarbejder.

Fejlen blev dog begået her meget tidligere!

Egentlig burde sådanne generelt gyldige indstillinger gøres pauset og universelle for alle brugere. Hvad man så gjorde i den native Navision op til version 2009R2: Åbn blot skærmmaskerne direkte med CTRL+F2 i designeren, sæt hurtigt egenskaberne „Next Control“ og "Visible", gem, færdig.

Det native Navision smed alligevel gerne indstillingerne pr. formular (forgængeren til siden) ud, også i dette tilfælde. Og vupti, havde alle brugere den samme kolonneplacering, bredder, synligheder.

I Business Central kan jeg også gøre det igen. Her hedder det InPlace Designer. Og RTC Business Central og Navision? Har også sådan en fed funktion!
Kald enkelt Business Central eller Navision f.eks. via en genvej fil med

Microsoft.Dynamics.Nav.Client.exe -configure -profile:”Bogholderi“
starten. I denne specielle konfigurationstilstand gemmes alle foretagne indstillinger (kolonneplacering, synlighed, hurtig indtastning, menuer osv.) ikke i tabellen 2000000075 Bruger metadata, men i tabellen 2000000074 Profil metadata.

Og som en overraskelse: Alle brugere, der logger ind med denne profil bagefter, får de samme indstillinger, som de derefter kan tilpasse efter deres egne ønsker.

Den faktiske kopi

…er ikke helt ligetil, på grund af opdelingen i konfigurationsfilen og dataene i 2000000075 bruger-metadata.
I%AppData %\Microsoft\Microsoft Dynamics NAV\PersonalizationStore.xml findes der flere Småting som kolonnebredder gemmes, mens tabel 2000000075 User Metadata gemmer ting som synlige kolonner, rækkefølger osv. Dette ændres dog i de forskellige RTC-versioner af Business Central & Navision.

Faustregel: Jo nyere Navision / Business Central versionen er, jo mere ligger i metadata-tabellen. Den underliggende, stadigt forbedrede teknologi er også grundlaget for dagens sideudvidelser. Derudover kommer problemet, at denne PersonalizationStore.xml ligger på klienten, og derfor slet ikke er synlig eller tilgængelig for det udførende Tier 2-lag.

Tabel 2000000075 User Metadata er en ren Navision-tabel, som er ret nem at kopiere som sådan. PersonalizationStore.xml er derimod virkelig irriterende at kopiere! Især fordi Navision og Business Central grundlæggende genskriver denne fil, når de lukker ned, ud fra de indstillinger, som Navision eller Business Central har husket i hukommelsen under kørsel.

Med begrænsede midler kommer vi altså slet ikke til denne fil! Vi kunne godt overskrive den. Men selv da overskriver Navision eller Business Central den igen med de uønskede værdier, når programmet lukkes ned.

Min løsning går derfor en lidt mere kompliceret vej:
Ved afslutning af et mandat kontrollerer en triggerfunktion, om den aktuelle bruger må beskrive brugeropsætningstabellen, i det mindste indirekte.

Hvis dette er tilfældet, vil den aktuelle fil ved sessionens start%AppData %\Microsoft\Microsoft Dynamics NAV\PersonalizationStore.xml blive skrevet til et blob-felt i brugeropsætningen.

Således „kender“ Navision gradvist alle PersonalizationStores for alle brugere, som der også er en brugeropsætning til. OBS! Denne stammer fra den forrige(!) session, da eventuelle aktuelt ændrede indstillinger først gemmes ved fuld afslutning af Microsoft.Dynamics.Nav.Client.exe skrives.

Men: Bedre end ingenting!

Resten er ren rutinearbejde igen:

Skærmbillede af den nye "Kopier brugeropsætning"-mulighed i RTC-versionerne af Navision / Business Central

I brugeropsætningen, skal du venligst til brugeropsætningen, hvorfra indstillingerne skal kopieres til den aktuelt loggede bruger.
Via kommandoet „Kopiér opsætning“ under handlingsmenuen starter du kopieringen.
Navision fragt noch einmal nach, om retningen passer:

Hvis du vælger Ja, vil Navision & Business Central først kontrollere, om de nødvendige rettigheder er tilstrækkelige, og om der allerede er skrevet en PersonalizationStore på både kilden og destinationen. Dette er vigtigt, da der i øjeblikket ikke er nogen „ren“ måde at læse stien%Appdata % på. Ved lagring af PersonalizationStore.xml som beskrevet ovenfor, blev dette også udført.

Derefter kopierer Business Central & Navision den sidst gyldige indstillingsfil samt de aktuelt gyldige poster fra tabel 2000000075 User Metadata fra kilden til den samme tabel for den bruger, der er logget ind.
Derfor skal den nyoprettede bruger som minimum have de rettigheder beskrevet nedenfor til denne proces.

Herunder kopieres den tidligere gemte PersonalizationStore fra kilden til den aktuelle%appdata %-sti. Men med filnavnet „.new“, altså f.eks. PersonalizationStore.xml.new. Business Central og Navision åbner derefter en Stifinder til præcis denne mappe.

Nu er det nuværende Business Central eller Navision, som denne bruger sigter efter, afsluttet. Til orientering, først nu overskrives PersonalizationStore.xml-filen af Business Central eller Navision!

Efter afslutning kan PersonalizationStore.xml i den allerede åbnede browser nu blot slettes, og den allerede liggende PersonalizationStore.xml.new blot omdøbes til PersonalizationStore.xml.

Til dette bør (som jeg generelt anbefaler) indstillingen „Skjul indstillinger for kendte filtyper“ aktiveres“ Deaktiveret være.

Skærmbillede af indstillingen "Skjul indstillinger for kendte filtyper" for nemt at omdøbe den nyskrevet PersonalizationStore.xml.new til PersonalizationStore.xml

Nødvendige brugerrettigheder

Tabel 2000000120 Bruger Læserettighed
Tabel 91 Brugeropsætning (Indirekte) Ændringsrettigheder & Læserettigheder
Tabel 2000000075 Bruger metadata (indirekte) skrivetilladelser, (indirekte) slettetilladelser, (indirekte) ændringstilladelser