public ArbitrationConfigFromAD(SyncServiceInstance syncDaemonArbitrationConfig, RidMasterInfo ridMasterInfo) { this.SyncDaemonArbitrationConfig = syncDaemonArbitrationConfig; this.RidMasterInfo = ridMasterInfo; this.PassiveInstanceSleepInterval = TimeSpan.FromSeconds((double)this.SyncDaemonArbitrationConfig.PassiveInstanceSleepInterval); this.ActiveInstanceSleepInterval = TimeSpan.FromSeconds((double)this.SyncDaemonArbitrationConfig.ActiveInstanceSleepInterval); }
public static void ConvertE14MVtoE15MV(SyncServiceInstance serviceInstance, int maxCookieHistoryCount, TimeSpan cookieHistoryInterval) { ITopologyConfigurationSession ridmasterSession = MsoCookieConverter.GetRIDMasterSession(); ridmasterSession.UseConfigNC = true; ADObjectId orgContainerId = ridmasterSession.GetOrgContainerId(); ADRawEntry adrawEntry = ridmasterSession.ReadADRawEntry(orgContainerId.Parent, MsoCookieConverter.E14MsoMainStreamCookieContainerSchema.CookieProperties); ridmasterSession.UseConfigNC = false; List <MsoMainStreamCookie> ordredCookieList = MsoCookieConverter.GetOrdredCookieList(serviceInstance.Name, adrawEntry.propertyBag[MsoCookieConverter.E14MsoMainStreamCookieContainerSchema.MsoForwardSyncNonRecipientCookie] as IEnumerable <byte[]>); List <MsoMainStreamCookie> ordredCookieList2 = MsoCookieConverter.GetOrdredCookieList(serviceInstance.Name, adrawEntry.propertyBag[MsoCookieConverter.E14MsoMainStreamCookieContainerSchema.MsoForwardSyncRecipientCookie] as IEnumerable <byte[]>); MsoCompanyMainStreamCookieManager msoCompanyMainStreamCookieManager = new MsoCompanyMainStreamCookieManager(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval); MsoRecipientMainStreamCookieManager msoRecipientMainStreamCookieManager = new MsoRecipientMainStreamCookieManager(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval); if (ordredCookieList.Count > 0) { MsoMainStreamCookie msoMainStreamCookie = ordredCookieList.Last <MsoMainStreamCookie>(); msoCompanyMainStreamCookieManager.WriteCookie(msoMainStreamCookie.RawCookie, null, msoMainStreamCookie.TimeStamp, msoMainStreamCookie.IsSyncPropertySetUpgrading, msoMainStreamCookie.SyncPropertySetVersion, true); } if (ordredCookieList2.Count > 0) { MsoMainStreamCookie msoMainStreamCookie2 = ordredCookieList2.Last <MsoMainStreamCookie>(); msoRecipientMainStreamCookieManager.WriteCookie(msoMainStreamCookie2.RawCookie, null, msoMainStreamCookie2.TimeStamp, msoMainStreamCookie2.IsSyncPropertySetUpgrading, msoMainStreamCookie2.SyncPropertySetVersion, true); } }
internal static ObjectId GetRootId(FailedMSOSyncObjectIdParameter identityParameter) { if (identityParameter != null && identityParameter.IsServiceInstanceDefinied) { ADObjectId adobjectId = SyncServiceInstance.GetServiceInstanceObjectId(identityParameter.ServiceInstance.InstanceId); return(SyncServiceInstance.GetDivergenceContainerId(adobjectId)); } return(SyncServiceInstance.GetMsoSyncRootContainer()); }
public void MigrateE15CookieToE14Cookie(string serviceInstanceName) { SyncServiceInstance syncServiceInstance = ServiceInstanceId.GetSyncServiceInstance(serviceInstanceName); if (syncServiceInstance != null) { int maxCookieHistoryCount = 100; TimeSpan cookieHistoryInterval = new TimeSpan(0, 30, 0); MsoCookieConverter.ConvertE15toE14MV(syncServiceInstance, maxCookieHistoryCount, cookieHistoryInterval); return; } throw new ArgumentException("serviceInstanceName could not be found"); }
public static void ConvertE15toE14MV(SyncServiceInstance serviceInstance, int maxCookieHistoryCount, TimeSpan cookieHistoryInterval) { ITopologyConfigurationSession ridmasterSession = MsoCookieConverter.GetRIDMasterSession(); MsoMainStreamCookie cookieToAdd = null; MsoMainStreamCookie cookieToAdd2 = null; if (serviceInstance.IsMultiObjectCookieEnabled) { MsoMultiObjectCookieManager msoMultiObjectCookieManager = new MsoMultiObjectCookieManager(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval, ForwardSyncCookieType.CompanyIncremental); MsoMultiObjectCookieManager msoMultiObjectCookieManager2 = new MsoMultiObjectCookieManager(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval, ForwardSyncCookieType.RecipientIncremental); ForwardSyncCookie forwardSyncCookie = msoMultiObjectCookieManager.ReadMostRecentCookie(); ForwardSyncCookie forwardSyncCookie2 = msoMultiObjectCookieManager2.ReadMostRecentCookie(); if (forwardSyncCookie != null) { cookieToAdd = new MsoMainStreamCookie(serviceInstance.Name, forwardSyncCookie.Data, forwardSyncCookie.Timestamp, new ServerVersion(forwardSyncCookie.SyncPropertySetVersion), forwardSyncCookie.IsUpgradingSyncPropertySet); } if (forwardSyncCookie2 != null) { cookieToAdd2 = new MsoMainStreamCookie(serviceInstance.Name, forwardSyncCookie2.Data, forwardSyncCookie2.Timestamp, new ServerVersion(forwardSyncCookie2.SyncPropertySetVersion), forwardSyncCookie2.IsUpgradingSyncPropertySet); } } else { MsoCompanyMainStreamCookieManager msoCompanyMainStreamCookieManager = new MsoCompanyMainStreamCookieManager(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval); MsoRecipientMainStreamCookieManager msoRecipientMainStreamCookieManager = new MsoRecipientMainStreamCookieManager(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval); cookieToAdd = msoCompanyMainStreamCookieManager.ReadMostRecentCookie(); cookieToAdd2 = msoRecipientMainStreamCookieManager.ReadMostRecentCookie(); } ridmasterSession.UseConfigNC = true; MsoCookieConverter.E14MsoMainStreamCookieContainer[] array = ridmasterSession.Find <MsoCookieConverter.E14MsoMainStreamCookieContainer>(ridmasterSession.GetOrgContainerId().Parent, QueryScope.SubTree, null, null, 1); if (array == null || array.Length == 0) { throw new ExchangeConfigurationContainerNotFoundException(); } List <MsoMainStreamCookie> list = MsoCookieConverter.GetOrderedE14CookieList(array[0].MsoForwardSyncNonRecipientCookie); List <MsoMainStreamCookie> list2 = MsoCookieConverter.GetOrderedE14CookieList(array[0].MsoForwardSyncRecipientCookie); list = MsoCookieConverter.AddCookieToE14MVList(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval, cookieToAdd, list); list2 = MsoCookieConverter.AddCookieToE14MVList(serviceInstance.Name, maxCookieHistoryCount, cookieHistoryInterval, cookieToAdd2, list2); array[0].MsoForwardSyncNonRecipientCookie.Clear(); foreach (MsoMainStreamCookie msoMainStreamCookie in list) { array[0].MsoForwardSyncNonRecipientCookie.Add(msoMainStreamCookie.ToStorageCookie()); } array[0].MsoForwardSyncRecipientCookie.Clear(); foreach (MsoMainStreamCookie msoMainStreamCookie2 in list2) { array[0].MsoForwardSyncRecipientCookie.Add(msoMainStreamCookie2.ToStorageCookie()); } ridmasterSession.Save(array[0]); }
public static ForwardSyncCookieHeader[] LoadCookieHeaders(ITopologyConfigurationSession cookieSession, string serviceInstanceName, ForwardSyncCookieType cookieType) { ADObjectId serviceInstanceObjectId = SyncServiceInstance.GetServiceInstanceObjectId(serviceInstanceName); Container container = cookieSession.Read <Container>(serviceInstanceObjectId.GetChildId("Cookies")); if (container != null) { ComparisonFilter filter = new ComparisonFilter(ComparisonOperator.Equal, ForwardSyncCookieHeaderSchema.Type, cookieType); ForwardSyncCookieHeader[] array = cookieSession.Find <ForwardSyncCookieHeader>(container.Id, QueryScope.OneLevel, filter, null, 0); Array.Sort <ForwardSyncCookieHeader>(array, (ForwardSyncCookieHeader x, ForwardSyncCookieHeader y) => DateTime.Compare(x.Timestamp, y.Timestamp)); return(array); } return(new ForwardSyncCookieHeader[0]); }
public void InitializeServiceInstanceADStructure() { if (this.configSession.Read <SyncServiceInstance>(this.serviceInstanceObjectId) == null) { SyncServiceInstance syncServiceInstance = new SyncServiceInstance(); syncServiceInstance.SetId(this.serviceInstanceObjectId); this.configSession.Save(syncServiceInstance); } if (this.configSession.Read <ADContainer>(this.divergenceContainerObjectId) == null) { ADContainer adcontainer = new ADContainer(); adcontainer.SetId(this.divergenceContainerObjectId); this.configSession.Save(adcontainer); } }
public void MigrateE14CookieToE15Cookie(string serviceInstanceName) { SyncServiceInstance syncServiceInstance = ServiceInstanceId.GetSyncServiceInstance(serviceInstanceName); if (syncServiceInstance == null) { throw new ArgumentException("serviceInstanceName could not be found"); } int maxCookieHistoryCount = 100; TimeSpan cookieHistoryInterval = new TimeSpan(0, 30, 0); if (syncServiceInstance.IsMultiObjectCookieEnabled) { MsoCookieConverter.PerformConversion(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval); return; } MsoCookieConverter.ConvertE14MVtoE15MV(syncServiceInstance, maxCookieHistoryCount, cookieHistoryInterval); }
private static ADObjectId CreateOrGetRootContainer(string serviceInstanceName, ITopologyConfigurationSession cookieSession) { ADObjectId serviceInstanceObjectId = SyncServiceInstance.GetServiceInstanceObjectId(serviceInstanceName); Container container = cookieSession.Read <Container>(serviceInstanceObjectId.GetChildId("Cookies")); if (container == null) { container = new Container(); container.SetId(serviceInstanceObjectId.GetChildId("Cookies")); try { cookieSession.Save(container); } catch (ADObjectAlreadyExistsException) { } } return(container.Id); }
public static void PerformConversion(string serviceInstanceName, int maxCookieHistoryCount, TimeSpan cookieHistoryInterval) { SyncServiceInstance syncServiceInstance = ServiceInstanceId.GetSyncServiceInstance(serviceInstanceName); if (syncServiceInstance != null && syncServiceInstance.IsMultiObjectCookieEnabled) { MsoMultiObjectCookieManager msoMultiObjectCookieManager = new MsoMultiObjectCookieManager(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval, ForwardSyncCookieType.RecipientIncremental); MsoMultiObjectCookieManager msoMultiObjectCookieManager2 = new MsoMultiObjectCookieManager(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval, ForwardSyncCookieType.CompanyIncremental); ITopologyConfigurationSession ridmasterSession = MsoCookieConverter.GetRIDMasterSession(); MsoMainStreamCookieContainer msoMainStreamCookieContainer = ridmasterSession.GetMsoMainStreamCookieContainer(serviceInstanceName); MsoCookieConverter.FromMultiValuedCookieToMultiObjectCookie(serviceInstanceName, msoMainStreamCookieContainer.MsoForwardSyncRecipientCookie, msoMultiObjectCookieManager); MsoCookieConverter.FromMultiValuedCookieToMultiObjectCookie(serviceInstanceName, msoMainStreamCookieContainer.MsoForwardSyncNonRecipientCookie, msoMultiObjectCookieManager2); ridmasterSession.UseConfigNC = true; ADObjectId orgContainerId = ridmasterSession.GetOrgContainerId(); ADRawEntry adrawEntry = ridmasterSession.ReadADRawEntry(orgContainerId.Parent, MsoCookieConverter.E14MsoMainStreamCookieContainerSchema.CookieProperties); MsoCookieConverter.FromMultiValuedCookieToMultiObjectCookie(serviceInstanceName, adrawEntry.propertyBag[MsoCookieConverter.E14MsoMainStreamCookieContainerSchema.MsoForwardSyncRecipientCookie] as IEnumerable <byte[]>, msoMultiObjectCookieManager); MsoCookieConverter.FromMultiValuedCookieToMultiObjectCookie(serviceInstanceName, adrawEntry.propertyBag[MsoCookieConverter.E14MsoMainStreamCookieContainerSchema.MsoForwardSyncNonRecipientCookie] as IEnumerable <byte[]>, msoMultiObjectCookieManager2); } }
public override CookieManager GetCookieManager(ForwardSyncCookieType cookieType, string serviceInstanceName, int maxCookieHistoryCount, TimeSpan cookieHistoryInterval) { SyncServiceInstance syncServiceInstance = ServiceInstanceId.GetSyncServiceInstance(serviceInstanceName); switch (cookieType) { case ForwardSyncCookieType.RecipientIncremental: if (syncServiceInstance != null && syncServiceInstance.IsMultiObjectCookieEnabled) { return(new MsoMultiObjectCookieManager(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval, cookieType)); } return(new MsoRecipientMainStreamCookieManager(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval)); case ForwardSyncCookieType.CompanyIncremental: if (syncServiceInstance != null && syncServiceInstance.IsMultiObjectCookieEnabled) { return(new MsoMultiObjectCookieManager(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval, cookieType)); } return(new MsoCompanyMainStreamCookieManager(serviceInstanceName, maxCookieHistoryCount, cookieHistoryInterval)); default: throw new InvalidOperationException("Cookie type not supported"); } }
private IEnumerable <SyncServiceInstance> GetAllServiceInstances() { return(this.configurationSession.FindPaged <SyncServiceInstance>(SyncServiceInstance.GetMsoSyncRootContainer(), QueryScope.OneLevel, null, null, 0)); }
public override void FeatureActivated(SPFeatureReceiverProperties properties) { try { Logger.WriteInfo("Activating SPC Synchronization feature"); var profileManager = new ProfileManager(); var config = profileManager.Configuration; profileManager.CreateUIDProperty(); var farm = SPFarm.Local; SyncService syncService = null; foreach (var service in farm.Services) { if (String.Compare(service.Name, SyncService.ServiceName, true) == 0) { syncService = service as SyncService; break; } } if (syncService == null) { Logger.WriteInfo(String.Format("Creating service '{0}' on SPFarm", SyncService.ServiceName)); syncService = new SyncService(farm); syncService.Update(); } foreach (var server in farm.Servers) { SyncServiceInstance syncInstance = null; foreach (var instance in server.ServiceInstances) { if (String.Compare(instance.Name, SyncServiceInstance.ServiceInstanceName, true) == 0) { syncInstance = (SyncServiceInstance)instance; break; } } if (syncInstance == null) { Logger.WriteInfo(String.Format("Adding service instance '{0}' to server '{1}'", SyncServiceInstance.ServiceInstanceName, server.Name)); syncInstance = new SyncServiceInstance(server, syncService); syncInstance.Update(); } } var schedule = new SPDailySchedule(); schedule.BeginHour = 1; schedule.EndHour = 4; ProfileSyncJob job = null; foreach (var definition in syncService.JobDefinitions) { if (String.Compare(definition.Name, ProfileSyncJob.JobName, true) == 0) { job = (ProfileSyncJob)definition; } } if (job == null) { Logger.WriteInfo("Adding job definition"); job = new ProfileSyncJob(syncService, null, SPJobLockType.Job); job.Schedule = schedule; job.Update(); syncService.JobDefinitions.Add(job); } syncService.Update(); Logger.WriteInfo("Feature activating complete"); } catch (Exception ex) { Logger.WriteError(ex.ToString()); throw; } }
// Token: 0x06000BB5 RID: 2997 RVA: 0x00025090 File Offset: 0x00023290 public ServiceInstanceIdParameter(SyncServiceInstance syncServiceInstance) : base(syncServiceInstance.Name) { }
internal static ArbitrationConfigFromAD GetArbitrationConfigFromAD(string serviceInstanceName) { IConfigurationSession configurationSession = ForwardSyncDataAccessHelper.CreateSession(true); RidMasterInfo ridMasterInfo = SyncDaemonArbitrationConfigHelper.GetRidMasterInfo(configurationSession); SyncServiceInstance[] array = configurationSession.Find <SyncServiceInstance>(SyncServiceInstance.GetMsoSyncRootContainer(), QueryScope.SubTree, new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.Name, serviceInstanceName), null, 1); if (array == null || array.Length != 1) { throw new SyncDaemonArbitrationConfigException(Strings.ErrorCannotRetrieveSyncDaemonArbitrationConfigContainer((array == null) ? "0" : array.Length.ToString())); } return(new ArbitrationConfigFromAD(array[0], ridMasterInfo)); }
public ForwardSyncDataAccessHelper(string serviceInstanceName) { this.InitializeSession(); this.serviceInstanceObjectId = SyncServiceInstance.GetServiceInstanceObjectId(serviceInstanceName); this.divergenceContainerObjectId = SyncServiceInstance.GetDivergenceContainerId(this.serviceInstanceObjectId); }