internal static void CalculateRoleConfigurationForCurrentSKU(OrganizationIdParameter organization, ServicePlan servicePlanSettings, out RoleDefinition[] roles, out RoleNameMappingCollection nameMapping, out string[] rolesToRemove, out RoleEntry[] allAllowedRoleEntriesForSKU) { if (InstallCannedRbacRoles.isFfoEnvironment) { roles = InstallCannedRbacRoles.MergeRoleDefinitions(CannedEOPRoles_Datacenter.Definition, CannedWebServiceRoles_Datacenter.Definition); roles = InstallCannedRbacRoles.MergeRoleDefinitions(roles, CannedUCCRoles_Datacenter.Definition); nameMapping = InstallCannedRbacObjectsTaskBase.RoleNameMappingDatacenterR4; rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesDatacenter; allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableEOPRoleEntries_Datacenter.RoleEntries, AvailableWebServiceRoleEntries_Datacenter.RoleEntries, AvailableUCCRoleEntries_Datacenter.RoleEntries); return; } if (organization == null) { if (Datacenter.IsMicrosoftHostedOnly(false)) { roles = InstallCannedRbacRoles.MergeRoleDefinitions(CannedRoles_Datacenter.Definition, CannedWebServiceRoles_Datacenter.Definition); nameMapping = InstallCannedRbacObjectsTaskBase.RoleNameMappingDatacenterR4; rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesDatacenter; allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableRoleEntries_Datacenter.RoleEntries, AvailableWebServiceRoleEntries_Datacenter.RoleEntries, null); return; } if (Datacenter.IsPartnerHostedOnly(false)) { roles = InstallCannedRbacRoles.MergeRoleDefinitions(CannedRoles_Hosting.Definition, CannedWebServiceRoles_Hosting.Definition); nameMapping = InstallCannedRbacObjectsTaskBase.RoleNameMappingHostingR4; rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesHosting; allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableRoleEntries_Hosting.RoleEntries, AvailableWebServiceRoleEntries_Hosting.RoleEntries, null); return; } if (Datacenter.IsDatacenterDedicated(false)) { roles = InstallCannedRbacRoles.MergeRoleDefinitions(CannedRoles_Dedicated.Definition, CannedWebServiceRoles_Dedicated.Definition); nameMapping = InstallCannedRbacObjectsTaskBase.RoleNameMappingEnterpriseR4; rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesEnterprise; allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableRoleEntries_Dedicated.RoleEntries, AvailableWebServiceRoleEntries_Dedicated.RoleEntries, null); return; } roles = InstallCannedRbacRoles.MergeRoleDefinitions(CannedRoles_Enterprise.Definition, CannedWebServiceRoles_Enterprise.Definition); nameMapping = InstallCannedRbacObjectsTaskBase.RoleNameMappingEnterpriseR4; rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesEnterprise; allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableRoleEntries_Enterprise.RoleEntries, AvailableWebServiceRoleEntries_Enterprise.RoleEntries, null); return; } else { if (Datacenter.IsPartnerHostedOnly(false)) { roles = InstallCannedRbacRoles.MergeRoleDefinitions(CannedRoles_HostedTenant.Definition, CannedWebServiceRoles_HostedTenant.Definition); rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesHostedTenant; if (servicePlanSettings != null) { List <string> enabledRoleGroupRoleAssignmentFeatures = servicePlanSettings.Organization.GetEnabledRoleGroupRoleAssignmentFeatures(); RoleGroupRoleMapping[] definition = HostedTenant_RoleGroupDefinition.Definition; List <string> a; roles = InstallCannedRbacRoles.FilterOrgRolesByRoleGroupFilters(roles, enabledRoleGroupRoleAssignmentFeatures, definition, out a); rolesToRemove = InstallCannedRbacRoles.AppendIListToarray <string>(rolesToRemove, a); } nameMapping = InstallCannedRbacObjectsTaskBase.RoleNameMappingHostedTenantR4; allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableRoleEntries_HostedTenant.RoleEntries, AvailableWebServiceRoleEntries_HostedTenant.RoleEntries, null); return; } roles = InstallCannedRbacRoles.MergeRoleDefinitions(CannedRoles_Tenant.Definition, CannedWebServiceRoles_Tenant.Definition); rolesToRemove = InstallCannedRbacObjectsTaskBase.ObsoleteRoleNamesTenant; if (servicePlanSettings != null) { List <string> enabledRoleGroupRoleAssignmentFeatures2 = servicePlanSettings.Organization.GetEnabledRoleGroupRoleAssignmentFeatures(); RoleGroupRoleMapping[] definition2 = Tenant_RoleGroupDefinition.Definition; List <string> a2; roles = InstallCannedRbacRoles.FilterOrgRolesByRoleGroupFilters(roles, enabledRoleGroupRoleAssignmentFeatures2, definition2, out a2); rolesToRemove = InstallCannedRbacRoles.AppendIListToarray <string>(rolesToRemove, a2); } nameMapping = InstallCannedRbacObjectsTaskBase.RoleNameMappingTenantR4; allAllowedRoleEntriesForSKU = InstallCannedRbacRoles.MergeRoleEntries(AvailableRoleEntries_Tenant.RoleEntries, AvailableWebServiceRoleEntries_Tenant.RoleEntries, null); return; } }