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!

0 kommentarer:

Skicka en kommentar

Om bloggen

Jag ska försöka lägga upp saker på denna blogg som jag stöter på i mitt jobb, främst det som berör MS nyaste OS: Server 2008 R2 och Windows 7, kanske nåt som nån annan kan ha hjälp av i form av workarounds, inställningar mm.

  © Blogger template On The Road by Ourblogtemplates.com 2009

Back to TOP