In TFS 2010 è stato introdotto un meccanismo di sincronizzazione automatica dei nomi utente tra Active Directory e TFS. Per utilizzarlo bisogna attivare la proprietà syncnamechanges sul tipo desiderato all’interno di una ProjectCollection. La stessa funzionalità è presente in TFS 11 e può essere sfruttata seguendo la procedura sotto:
- per verificare lo stato di questo settaggio per un campo tipo Custom.ReviewedBy utilizzare la seguente sintassi:
- witadmin listfields /collection:http://tfsserver:8080/tfs/DefaultCollection /n:Custom.ReviewedBy
- per abilitare questo settaggio per un campo tipo Custom.ReviewedBy utilizzare la seguente sintassi:
- witadmin changefield /collection:http://tfsserver:8080/tfs/DefaultCollection /n:Custom.ReviewedBy /syncnamechanges:true
Nota Advanced: spiego meglio il funzionamento prendendo ad esempio un campo tipo ReviewedBy e le tabelle del database TFS_Warehouse. Il campo stringa ReviewedBy prima dell’applicazione del syncnamechanges è presente come stringa nella tabella DimWorkItem. Dopo l’applicazione del syncnamechanges il campo stringa viene eliminato dalla tabella DimWorkItem e viene sostituito da una ForeignKey denominata ReviewedBY__PersonSK che viene collegata alla tabella DimPerson. La tabella DimPerson contiene l’elenco degli utenti che vengono sincronizzati con i vari domini Active Directory. Analizzando la tabella vederete che contiene il SID e il Dominio d’appartenenza dell’utente. In questo modo il meccanismo di aggiornamento degli utenti aggiorna automaticamente tutti i campi correlati tramite FK.
L’articolo MSDN è errato: qui potete trovare l’articolo MSDN relativo a questa funzionalità, all’interno la sintassi del comando è errata. Ho già mandato un feedback a Microsoft sulla cosa.
Attenzione: questo meccanismo di sincronizzazione porta in TFS 11 anche gli utenti che risultano Disabled all’interno di Active Directory.