De RoleTailoredClient maakt gebruik van een MiddleTier om gegevens te verwerken. De eerste tier is de database tier (SQL Server met een NAV database), de derde tier is de clientsoftware, en de middletier is de zogenaamde Navision server. Deze kan op de SQL Server worden geinstalleerd (en dat is ook veruit het makkelijkste), maar het kan verstandig zijn om de Navision Server tier op een aparte machine te zetten: Alle bewerkingen worden immers door deze machine gedaan.
Installatie van de middletier op de SQL Server kan gewoon, zonder problemen. Als je alles op een machine wilt installeren (voor ontwikkeldoeleinden, bijvoorbeeld) kies er dan voor om een ontwikkelomgeving te installeren. Daar zit alles in. Zorg er wel voor dat je dit installeert onder het account wat het ook gaat gebruiken, anders moet je alsnog zelf gebruikers gaan toevoegen aan de voorbeelddatabase. Overigens is het dan ook wel handig om de SQL Server express edition management studio te downloaden en te installeren.
Om de 3-tier op 3-computer te installeren heb je drie machines nodig, die allemaal in hetzelfde domein zitten: Een SQL Server, een client en een machine voor de middle-tier. Ik gebruik voor testen altijd Windows 2003, maar Windows 2008 werkt net zo goed. Je hebt uiteraard ook een Domeincontroller nodig, maar ik ga ervan uit dat die er al is. Voor het werkstation waar de client op komt te staan gebruik ik Windows 7. Deze beschrijving werkt overigens alleen goed met Dynamics NAV 2009 SP1 en 2009 R2.
Je moet op de domeincontroller (minimaal) twee nieuwe gebruikers aanmaken: een voor de SQL Server service, een voor de Navision Server service. De SQL Server servicegebruiker zullen we domain\SQLServer noemen, de Navision Server servicegebruiker noem ik domain\NAVServer. Het lijkt er trouwens op dat in de gebruikersnaam van de Navision server geen underscores gebruikt mogen worden. Daarmee lijkt het volledig mis te gaan.
Het domein moet op een functioneel level staan van minimaal Windows Server 2003. Als dat nog niet het geval is, moet dat nu gedaan worden. Hou er wel rekening mee dat oudere domeincontrollers dan niet meer werken, en dat je ook niet meer terug kunt.
Installeer SQL Server volledig. Zorg ervoor dat de SQL Server service wordt gestart door de domain\SQLServer gebruiker. Installeer uiteraard hier ook een Dynamics NAV database op. Als je een andere instance dan de defaultinstance gebruikt, onthou dat dan.
Installeer op de client de RoleTailored client en de classic clients - je hebt ze allebei nodig.
Installeer op de andere machine de Navision server.
Als je de programma's direct vanaf de CD installeert (dus vanuit de directories RoleTailoredClient, CSideClient en ServiceTier) zorg er dan ook voor de je vanuit de installers ook de taallagen installeert.
Object Change Listener
Nu moet je ervoor zorgen dat de Object Change Listener geactiveerd wordt. Doe dit als volgt:
Ga naar je SQL Server, en start een nieuwe query. Type dan het volgende:
USE MASTER CREATE LOGIN [domain\NAVServer] FROM WINDOWS;GOKlik op execute
USE [Databasenaam]CREATE USER [domain\NAVServer] FOR LOGIN [domain\NAVServer];Klik wederom op Execute
CREATE SCHEMA [$ndo$navlistener] AUTHORIZATION [domain\NAVServer];GOEn je mag weer op Execute klikken. Als je een foutmelding krijgt dat deze al bestaat, mag je 'm negeren
ALTER USER [domain\NAVServer] WITH DEFAULT_SCHEMA = [$ndo$navlistener];GRANT SELECT ON [Object Tracking] TO [domain\NAVServer];GOEn nogmaals Execute
Hiermee is de Object Change Listener geactiveerd. Dit moet je doen bij elke database die je met de RoleTailoredClient wilt gebruiken
Delegation
Dan komt het lastigste gedeelte: delegation. Dit zorgt ervoor dat de domain\NAVServer gebruiker zich mag voordoen als iemand anders. Je meldt je met je client aan op de Navision Server, die doet alsof hij jou is. Om delegation in te stellen, moet setspn geinstalleerd zijn. Deze zit standaard in Windows 2008, voor Windows 2003 moet je even de Windows 2003 support tools downloaden.
Eerst maken we een SPN voor de SQL Server. Je gebruikt als Instancenaam altijd MSSQLSvc, ook als je werkt met een andere instance. In dat geval moet je een andere poort )ipv 1433' gebruiken. Start een (elevated) commandprompt, en type in:
setspn -A MSSQLSvc/SQLServer FQDN:1433 domain\SQLServersetspn -A MSSQLSvc/SQLServer:1433 domain\SQLServer
Dan gaan we het Navision server account aanpassen:
setspn -A Instancenaam/NavisionServer FQDN:Poortnummer domain\NAVServersetspn -A instancenaam/NavisionServer:Poortnummer domain\NAVServer
Voor versies ouder dan 6.0.28795.0 moet de volgende syntax gebruikt worden:
setspn -A NavisionServer_Instancenaam/Navisionserver FQDN:poortnummer domain\NAVServersetspn -A NavisionServer_Instancenaam/Navisionserver:poortnummer domain\NAVServer
De instancenaam en het poortnummer moeten hetzelfde zijn als waardes die in het CustomSettings.config bestand staan op de Navision Server. De standaardwaardes hiervoor zijn DynamicsNAV en 7046.
Nu moet er nog worden aangegeven dat de gebruiker domain\NAVServer mag delegeren. Ga hiervoor naar Active Directory Users and Computers (dsa.msc), en zoek de gebruiker domain\NAVServer. Vraag de eigenschappen op, en kies het tabblad Delegation. Je hebt hier twee mogelijkheden: "Trust this user for delegation to any service (Kerberos only)" en "Trust this user for delegation to specified services only". Die laatste geeft dan weer de mogelijkheid voor "Kerberos only", of "Use Any authentication protocol". Het makkelijkste (maar minst veilige optie) is de optie "Trust this user for delegation to any service (Kerberos only)" Dit werkt bijna altijd, en kan goed helpen bij troubleshooting. Normaal gesproken zet je de optie "Trust this user for delegation to specified services only" aan, en kies je voor "Kerberos only". Klik dan op Add, klik op Users or Computers, en zoek de gebruiker waaronder de SQL Server draait.. Je zult hier nu de beschikbare services zien staan. Kies de services die aangemaakt zijn voor NAV, en klik op OK. Als je webservices gebruikt die met NTLM werken, dan gebruik je de optie "Trust this user for delegation to specified services only", maar zet je "Use any authentication protocol" aan.
Als je dan ook nog bestanden wilt gebruiken die op een fileserver staan, zul je ook die aan moeten geven bij de lijst waarnaartoe gedelegeerd kan worden. Dit is dan de server waar de shares op staan, en je moet hier het cifs en HOST servicetype voor gebruiken. Het kan dan ook nog nodig zijn om geen SMB2 te gebruiken, maar SMB1. Dit doe je door in de registry (op de server waar de shares staan) de volgende waardes toe te voegen:
Dword: Smb1, waarde 1, key: HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters
Dword: Smb2, waarde 0, key: HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters
De waarde 1 geeft aan dat het betreffende protocol wordt gebruikt, een 0 geeft aan dat die niet wordt gebruikt. Met de bovenstaande waardes wordt SMB1 gebruikt, en wordt SMB2 uitgeschakeld.
Je kunt hier lezen hoe je meerdere middle-tiers op een computer kunt installeren.
Referenties:
http://msdn.microsoft.com/en-us/library/dd301254.aspx
http://msdn.microsoft.com/en-us/library/dd301437.aspx
http://blogs.msdn.com/b/nav_developer/archive/2009/06/12/setting-up-nav-2009-on-three-machines.aspx
http://blogs.technet.com/b/askperf/archive/2008/05/30/two-minute-drill-overview-of-smb-2-0.aspx