/* ==================================================================================== AD -> portal : Public methods */
/// <summary>
/// Syncs all objects of all configured sync trees from Active Directory(ies).
/// </summary>
public void SyncFromAD()
{
IUser originalUser = User.Current;
Common.ChangeToAdminAccount();
// init portal objects
AdLog.LogMain("Cacheing portal users...");
_portalUsers = GetAllPortalObjects(ADObjectType.User);
AdLog.LogMain("Cacheing portal groups...");
_portalGroups = GetAllPortalObjects(ADObjectType.Group);
AdLog.LogMain("Cacheing portal containers...");
_portalContainers = GetAllPortalObjects(ADObjectType.AllContainers);
foreach (SyncTree syncTree in _syncTrees)
{
try
{
SyncContainersFromAD(syncTree);
}
catch (Exception ex)
{
// syncing of the whole tree failed
AdLog.LogException(ex);
}
}
foreach (SyncTree syncTree in _syncTrees)
{
try
{
SyncUsersFromAD(syncTree);
}
catch (Exception ex)
{
// syncing of the whole tree failed
AdLog.LogException(ex);
}
}
foreach (SyncTree syncTree in _syncTrees)
{
try
{
if (syncTree.SyncGroups)
{
SyncGroupsFromAD(syncTree);
}
else
{
AdLog.LogMainActivity("Groups under synctree are skipped", syncTree.ADPath, syncTree.PortalPath);
}
}
catch (Exception ex)
{
// syncing of the whole tree failed
AdLog.LogException(ex);
}
}
foreach (SyncTree syncTree in _syncTrees)
{
try
{
DeletePortalUsers(syncTree);
}
catch (Exception ex)
{
// syncing of the whole tree failed
AdLog.LogException(ex);
}
}
foreach (SyncTree syncTree in _syncTrees)
{
try
{
DeletePortalGroups(syncTree);
}
catch (Exception ex)
{
// syncing of the whole tree failed
AdLog.LogException(ex);
}
}
foreach (SyncTree syncTree in _syncTrees)
{
try
{
DeletePortalContainers(syncTree);
}
catch (Exception ex)
{
// syncing of the whole tree failed
AdLog.LogException(ex);
}
}
// dispose synctrees (searchresultcollection objects contained in synctree)
foreach (SyncTree syncTree in _syncTrees)
{
syncTree.Dispose();
}
AdLog.EndLog();
Common.RestoreOriginalUser(originalUser);
}