internal static object OuOrganizationIdGetter(IPropertyBag propertyBag)
        {
            OrganizationId organizationId = (OrganizationId)ADObject.OrganizationIdGetter(propertyBag);

            if (organizationId.Equals(OrganizationId.ForestWideOrgId))
            {
                ADObjectId adobjectId = ADOrganizationalUnit.ConfigurationUnitLinkGetter(propertyBag);
                if (adobjectId != null)
                {
                    organizationId = new OrganizationId((ADObjectId)propertyBag[ADObjectSchema.Id], adobjectId);
                }
            }
            return(organizationId);
        }
        internal static void SetRelocationCompletedOnOU(ITenantConfigurationSession session, OrganizationId organizationId)
        {
            bool useConfigNC = session.UseConfigNC;

            try
            {
                session.UseConfigNC = false;
                ADOrganizationalUnit adorganizationalUnit = session.Read <ADOrganizationalUnit>(organizationId.OrganizationalUnit);
                if (adorganizationalUnit == null)
                {
                    throw new ArgumentException("Cannot read target tenant OU: " + organizationId.OrganizationalUnit.ToString());
                }
                adorganizationalUnit.RelocationInProgress = true;
                session.Save(adorganizationalUnit);
                adorganizationalUnit.RelocationInProgress = false;
                session.Save(adorganizationalUnit);
            }
            finally
            {
                session.UseConfigNC = useConfigNC;
            }
        }