Menu

Error 0xC3F75809 durante el movimiento de usuarios en una migración Side by Side de LCS 2005 SP1 a OCS 2007 R2

22/11/2011 - Troubleshooting

El escenario

Un servidor LCS 2005 SP1 – Implementación en un único server – sin federación.  Se movió la configuración residente en la partición de dominio a la partición de Configuración y Se instaló un único servidor OCS 2007 con todos los roles internos.

El Problema

Al tratar de migrar un usuario desde la consola de OCS2007 R2 se produce un error con el siguiente resultado:

Cannot move user to pool. User: User Name Destination pool: CN=LC Services,CN=Microsoft,CN=<poolNAme>,CN=Pools,CN=RTC Service,CN=Services,CN=Configuration,DC=domain,DC=suffix Error: 0xC3F75809 Cause: Either the pool to which the move happens is not running or you have no credentials for the operation. Resolution: Make sure the server is running and you have appropriate credentials for the operation.

ocserror

Luego de realizar una rápida “googleada” encuentro que esto podía deberse a un problema de permisos. Para poder migrar un usuario desde un pool a otro es necesario ser miembro de los grupos Globales RTCDomainUserAdmin y RTCDomainServerAdmin y los grupos universales RTCUniversalUserAdmin y RTCUniversalServerAdmin.  Teniendo en cuenta que era Enterprise Admin con la cuenta que estaba operando, no debería tener problemas. Como no es la primera vez que un producto revoca los permisos y agrega los grupos creados al efecto o los deniega (el mejor ejemplo es Exchange) – me agregué al usuario a dichos grupos.

Dado que esta operación fue infructuosa y el error se mantendría, comencé a realizar debugging con las nuevas funciones de Debug de OCS 2007 R2 (http://technet.microsoft.com/en-us/library/dd572324(office.13).aspx). Obtenía el mismo error pero … con más info. Lo pasteo por si algún “ignoto” como yo googlea los términos que yo google si llego a este extremo.

TL_ERROR(TF_COMPONENT) [0]035C.19A0::11/22/2011-16:13:50.928.00002861 (LcsWMI,MoveUser:LcStoreAdUserSetting.cpp(864))5(ERROR_ACCESS_DENIED), GetUserManagementInterface failed for ocsfqdnpool.domain.suffix (To server)
TL_INFO(TF_COMPONENT) [0]035C.19A0::11/22/2011-16:13:50.928.00002862 ((Shared),IsEventThrottled:EventThrottle.cpp(128))Did not find throttled event
TL_ERROR(TF_COMPONENT) [0]035C.19A0::11/22/2011-16:13:50.928.00002863 ((Shared),CReportEvent::GetEventSource:ReportEvent.cpp(504))Exit – (BUG) attempted to log to a category that is not enabled! Returned HRESULT=80004005
TL_ERROR(TF_COMPONENT) [0]035C.19A0::11/22/2011-16:13:50.928.00002864 (LcsWMI,PutInstanceUserSettingAdWithExistingInstance:LcStoreAdUserSetting.cpp(2000))MoveUser(user DN:CN=User Name,OU=Accounts,DC=domain,DC=suffix,uri:sip:username@domain.suffix,old server:LCSfqdnpool.domain.suffix,new server:ocsfqdnpool.domain.suffix) failed [hr=0xC3F75809(LCWMI_E_MOVEUSER_ACCESS_DENIED_TO_SERVER)]
TL_ERROR(TF_COMPONENT) [0]035C.19A0::11/22/2011-16:13:50.928.00002865 (LcsWMI,PutInstanceUserSettingAd:LcStoreAdUserSetting.cpp(2412))PutInstanceUserSettingAdWithExistingInstance failed [hr=0xC3F75809(LCWMI_E_MOVEUSER_ACCESS_DENIED_TO_SERVER)]
TL_ERROR(TF_COMPONENT) [0]035C.19A0::11/22/2011-16:13:50.928.00002866 (LcsWMI,CLcStoreAd::PutInstance:LcStoreAd.cpp(755))( 00000000744A0F00 ) MSFT_SIPESUserSetting, 0xC3F75809(LCWMI_E_MOVEUSER_ACCESS_DENIED_TO_SERVER), CustomPutInstanceAd failed
TL_INFO(TF_COMPONENT) [0]035C.19A0::11/22/2011-16:13:50.928.00002867 ((Shared),NLcAdminCoreLib::CCriticalSection::Enter:ThreadingBasics.cpp(118))( 00000000744A3B18 ) ::EnterCriticalSection succeeded. EnterCount:1, Owner Thread ID: 6560
TL_INFO(TF_COMPONENT) [0]035C.19A0::11/22/2011-16:13:50.928.00002868 ((Shared),NLcAdminCoreLib::CCriticalSection::Enter:ThreadingBasics.cpp(118))( 00000000003DFBF0 ) ::EnterCriticalSection succeeded. EnterCount:1, Owner Thread ID: 6560
TL_INFO(TF_COMPONENT) [0]035C.19A0::11/22/2011-16:13:50.928.00002869 ((Shared),NLcAdminCoreLib::CCriticalSection::Leave:ThreadingBasics.cpp(171))( 00000000003DFBF0 ) ::LeaveCriticalSection succeeded. EnterCount:0, Owner Thread ID: 0
TL_INFO(TF_COMPONENT) [0]035C.19A0::11/22/2011-16:13:50.928.0000286a ((Shared),NLcAdminCoreLib::CCriticalSection::Leave:ThreadingBasics.cpp(171))( 00000000744A3B18 ) ::LeaveCriticalSection succeeded. EnterCount:0, Owner Thread ID: 0
TL_ERROR(TF_COMPONENT) [0]035C.19A0::11/22/2011-16:13:50.928.0000286b (LcsWMI,CLcsWmi::PutInstanceAsync:LcsWmiProvider.cpp(767))( 00000000003D39F0 ) MSFT_SIPESUserSetting, 0xC3F75809(LCWMI_E_MOVEUSER_ACCESS_DENIED_TO_SERVER), PutInstance failed
TL_ERROR(TF_COMPONENT) [0]178C.1B48::11/22/2011-16:13:50.928.0000286c (LCSWizard,CWizardMoveUsersAsyncUsersActionPage::OnProcessUserObject:MoveUsersAsyncUsersActionPage.cpp(261))( 00000000065A60A0 ) m_pWbemServices->PutInstance failed [hr=0xC3F75809(LCWMI_E_MOVEUSER_ACCESS_DENIED_TO_SERVER)]
TL_INFO(TF_COMPONENT) [0]178C.1B48::11/22/2011-16:13:50.928.0000286d (LCSWizard,CWizardStockAsyncUsersActionPage::TraceUserEntry:StockAsyncUsersActionPage.cpp(2015))( 00000000065A60A0 ) pUserEntry(hr:0xC3F75809,dispname:User Name,sipuri:sip:username@domain.suffix,dn:CN=User Name,OU=Accounts,DC=domain,DC=suffix,instid:{648E7AE4-4502-45F5-9F8F-FB1A43D0864C},resultmsgresid:0,resultmsg:Cannot move user to pool.
User: User Name  Destination pool: CN=LC Services,CN=Microsoft,CN=ocsfqdnpool,CN=Pools,CN=RTC Service,CN=Services,CN=Configuration,DC=domain,DC=suffix  Error: 0xC3F75809
Cause: Either the pool to which the move happens is not running or you have no credentials for the operation

Luego de reiniciar varias veces los servicios por estos intentos de troubleshootings – veo, con sospecha, dos eventos LSASRV con id 6037:

The program svchost.exe, with the assigned process ID 664, could not authenticate locally by using the target name RestrictedKrbHost/<ocspoolname>.domain.suffix. The target name used is not valid. A target name should refer to one of the local computer names, for example, the DNS host name.
Try a different target name.

y

The program w3wp.exe, with the assigned process ID 2724, could not authenticate locally by using the target name HTTP/<ocspoolname>.domain.suffix. The target name used is not valid. A target name should refer to one of the local computer names, for example, the DNS host name.
Try a different target name.

Como sé desde que nací (o por lo menos… suponía) los servicios que autentican con kerberos tienden a hacer fallback a NTLM si la autenticación KRB falla (obviamente no es el caso cuando el servicio no acepta otro método de autenticación, pero … simplemente lo supuse).

Vi este evento varias veces pensando… cuando resuelva este tema, agrego los SPN.  Luego de habilitar la auditoría de WMI (una acción de troubleshooting extrema… teniendo en cuenta los logs registrados por el sistema de debugging) y no tener ningún resultado, se me ocurrió agregar los SPN… just in case…

so…

setspn –a HTTP/<ocspoolname>.domain.suffix <OCSFrontEndServer>
setspn –a RestrictedKrbHost/<ocspoolname>.domain.suffix <OCSFrontEndServer>

Un reinicio del servicio Windows Management Instrumentation y voilá!!! pude migrar mis usuarios de un pool al otro.