Fel namn i Lync adressbok efter namnbyte
28 september 2014
Problem: Efter byte av namn på en person i AD och då även i Lync som påverkar både DN och SIP så fick vi problem med att det gamla namnet hängde kvar i Lyncs adressbok. Vid en sökning på det nya namnet gav det ingen träff, däremot en sökning på det gamla namnet visade personens nya namn.
Orsak: Efter omfattande felsökning så visar det sig att det skapats en dubblett av användaren i rtcab databasen och tabellen AbDnMapping.
Lösning: Genom att radera det senare objektet i AbDnMapping tabellen och uppdatera det ursprungliga med ny och korrekt DN kommer problemet bli löst vid nästa uppdatering av adressboken.
Felsökning: Försökte med ett antal åtgärder för att lösa problemet:
1. Update-CSUserDatabase som initierar en ny synkronisering mellan Lyncs databas och AD.
2. Göra en remove och add på användaren i fråga i Lync utan resultat.
3. Körde verktyget ABServer -dumpfile för att få ut innehållet i adressbokens filer till en textfil och kunde verifiera att användaren fanns med det gamla namnet.
4. Började köra queryn mot Lyncs databas rtcab och i AbDnMapping hittade jag två objekt för samma användare, det ursprungliga med gamla DN och det nya med nytt DN.
5. I ett forum fann jag följande lösning:
-radera det nya objektet (UserId) från ett antal tabeller
-uppdatera det ursprungliga UserId objektet med den nya korrekta DN
Skapade följande procedur för att radera det nya objektet:
USE [rtcab] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Michael Thomas -- Create date: 2013-04-12 -- Description: -- ============================================= CREATE PROCEDURE [dbo].[PurgeAccount_Duplicate] @UserId int AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; BEGIN TRANSACTION; BEGIN TRY DELETE FROM dbo.AbAttributeValue WHERE UserId = @UserId DELETE FROM dbo.AbUserEntry WHERE UserId = @UserId DELETE FROM dbo.AbUserEntryFull WHERE UserId = @UserId DELETE FROM dbo.AbDnMapping WHERE UserId = @UserId END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber ,ERROR_SEVERITY() AS ErrorSeverity ,ERROR_STATE() AS ErrorState ,ERROR_PROCEDURE() AS ErrorProcedure ,ERROR_LINE() AS ErrorLine ,ERROR_MESSAGE() AS ErrorMessage; IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; END CATCH; IF @@TRANCOUNT > 0 COMMIT TRANSACTION; END GO
Körde proceduren och raderade det nya objektet och uppdaterade den gamla objektet mer rätt DN.
Update-CSAddressBook och initierade synk på klienten och Voila! Read more...