public static void CreateServiceInstance(CreateServiceInstanceRequest request) { lock (_threadLock) { // Validate new service instance parameters var validationErrors = PreValidateCreateServiceInstance(request); if (!string.IsNullOrEmpty(validationErrors)) throw new BusinessException(validationErrors); if (!request.ValidateOnly) { // Provision the business service database var database = new BusinessServiceDatabase(request.DatabaseInstanceName, request.DatabaseName, request.AppPoolUserName, request.ServicesName, request.DatabaseBehavior, request.SampleDataScript); database.Create(); database.CreateServiceUser(request.DefaultAdminUserName, request.DefaultAdminUserPassword, 3); database.CreateServiceUser(request.DefaultPublicUserName, request.DefaultPublicUserPassword, 2); // Create services folder structure var auditSiteSubscriptionId = GetEffectiveAuditSiteSubscriptionId(request.AuditSiteSubscriptionId, request.ServicesName); var targetFolder = GetServicesInstancePhysicalPath(request.ServicesName); FileUtilties.CreateDirectory(targetFolder); FileUtilties.Copy(AdminServicesPhysicalPath, targetFolder); // Create IIS configuration IISUtilities.BuildIISEntities(request, targetFolder); // Create web.config file for service instance BusinessServiceConfiguration.CreateCustomConfig(Path.Combine(targetFolder, "Web.config"), database, request.ServicesName, auditSiteSubscriptionId); // Register new instance with auditing service AuditingServiceManager.AddAuditSiteSubscriptionId(auditSiteSubscriptionId); AuditingServiceManager.RestartAuditingService(); } } }