protected void Page_PreRender(object sender, EventArgs e)
        {
            PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
            bool           enterpriseVoiceQuota = Utils.CheckQouta(Quotas.LYNC_ENTERPRISEVOICE, cntx);

            bool enterpriseVoice = false;

            WebsitePanel.Providers.HostedSolution.LyncUserPlan plan = planSelector.plan;
            if (plan != null)
            {
                enterpriseVoice = plan.EnterpriseVoice && enterpriseVoiceQuota && (ddlPhoneNumber.Items.Count > 0);
            }

            pnEnterpriseVoice.Visible = enterpriseVoice;

            if (!enterpriseVoice)
            {
                ddlPhoneNumber.Text = "";
                tbPin.Text          = "";
            }

            if (enterpriseVoice)
            {
                string[] pinPolicy = ES.Services.Lync.GetPolicyList(PanelRequest.ItemID, LyncPolicyType.Pin, "MinPasswordLength");
                if (pinPolicy != null)
                {
                    if (pinPolicy.Length > 0)
                    {
                        int MinPasswordLength = -1;
                        if (int.TryParse(pinPolicy[0], out MinPasswordLength))
                        {
                            PinRegularExpressionValidator.ValidationExpression = "^([0-9]){" + MinPasswordLength.ToString() + ",}$";
                            PinRegularExpressionValidator.ErrorMessage         = "Must contain only numbers. Min. length " + MinPasswordLength.ToString();
                        }
                    }
                }
            }
        }
Example #2
0
 public virtual bool SetLyncUserPlan(string organizationId, string userUpn, LyncUserPlan plan)
 {
     return(SetLyncUserPlanInternal(organizationId, userUpn, plan, null));
 }
Example #3
0
 public int UpdateLyncUserPlan(int itemId, LyncUserPlan lyncUserPlan) {
     object[] results = this.Invoke("UpdateLyncUserPlan", new object[] {
                 itemId,
                 lyncUserPlan});
     return ((int)(results[0]));
 }
 /// <remarks/>
 public void SetLyncUserPlanAsync(string organizationId, string userUpn, LyncUserPlan plan, object userState) {
     if ((this.SetLyncUserPlanOperationCompleted == null)) {
         this.SetLyncUserPlanOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetLyncUserPlanOperationCompleted);
     }
     this.InvokeAsync("SetLyncUserPlan", new object[] {
                 organizationId,
                 userUpn,
                 plan}, this.SetLyncUserPlanOperationCompleted, userState);
 }
 /// <remarks/>
 public System.IAsyncResult BeginSetLyncUserPlan(string organizationId, string userUpn, LyncUserPlan plan, System.AsyncCallback callback, object asyncState) {
     return this.BeginInvoke("SetLyncUserPlan", new object[] {
                 organizationId,
                 userUpn,
                 plan}, callback, asyncState);
 }
 /// <remarks/>
 public void CreateUserAsync(string organizationId, string userUpn, LyncUserPlan plan) {
     this.CreateUserAsync(organizationId, userUpn, plan, null);
 }
Example #7
0
        /// <summary> Creates the user.</summary>
        /// <param name="organizationId"> The organization identifier.</param>
        /// <param name="userUpn"> The user UPN.</param>
        /// <param name="plan"> The Lync user plan.</param>
        /// <returns> The result.</returns>
        internal override bool CreateUserInternal(string organizationId, string userUpn, LyncUserPlan plan)
        {
            HostedSolutionLog.LogStart("CreateUserInternal");
            HostedSolutionLog.DebugInfo("organizationId: {0}", organizationId);
            HostedSolutionLog.DebugInfo("userUpn: {0}", userUpn);
            LyncTransaction transaction = StartTransaction();
            Runspace        runspace    = null;

            try
            {
                runspace = OpenRunspace();
                Guid     guid = GetObjectGuid(organizationId, runspace);
                string[] tmp  = userUpn.Split('@');

                if (tmp.Length < 2)
                {
                    return(false);
                }

                var command = new Command("Get-CsSipDomain");
                Collection <PSObject> sipDomains = ExecuteShellCommand(runspace, command, false);
                bool bSipDomainExists            = sipDomains.Select(domain => (string)GetPSObjectProperty(domain, "Name")).Any(d => d.ToLower() == tmp[1].ToLower());

                if (!bSipDomainExists)
                {
                    command = new Command("New-CsSipDomain");
                    command.Parameters.Add("Identity", tmp[1].ToLower());
                    ExecuteShellCommand(runspace, command, false);
                    transaction.RegisterNewSipDomain(tmp[1].ToLower());
                    AddAdDomainName(organizationId, tmp[1].ToLower());
                    CreateSimpleUrl(runspace, guid);
                    transaction.RegisterNewSimpleUrl(tmp[1].ToLower(), guid.ToString());
                }

                command = new Command("Enable-CsUser");
                command.Parameters.Add("Identity", userUpn);
                command.Parameters.Add("RegistrarPool", PoolFQDN);
                command.Parameters.Add("SipAddressType", "UserPrincipalName");
                ExecuteShellCommand(runspace, command, false);
                transaction.RegisterNewCsUser(userUpn);

                command = new Command("Get-CsAdUser");
                command.Parameters.Add("Identity", userUpn);
                ExecuteShellCommand(runspace, command, false);

                command = new Command("Update-CsAddressBook");
                ExecuteShellCommand(runspace, command, false);
                command = new Command("Update-CsUserDatabase");
                ExecuteShellCommand(runspace, command, false);

                int trySleep = 2000; int tryMaxCount = 10; bool PlanSet = false;
                for (int tryCount = 0; (tryCount < tryMaxCount) && (!PlanSet); tryCount++)
                {
                    try
                    {
                        PlanSet = SetLyncUserPlanInternal(organizationId, userUpn, plan, runspace);
                    }
                    catch { }
                    if (!PlanSet)
                    {
                        System.Threading.Thread.Sleep(trySleep);
                    }
                }
            }
            catch (Exception ex)
            {
                HostedSolutionLog.LogError("CreateUserInternal", ex);
                RollbackTransaction(transaction);
                throw;
            }
            finally
            {
                CloseRunspace(runspace);
            }

            HostedSolutionLog.LogEnd("CreateUserInternal");

            return(true);
        }
Example #8
0
        public static int AddLyncUserPlan(int itemID, LyncUserPlan lyncUserPlan)
        {
            SqlParameter outParam = new SqlParameter("@LyncUserPlanId", SqlDbType.Int);
            outParam.Direction = ParameterDirection.Output;

            SqlHelper.ExecuteNonQuery(
                ConnectionString,
                CommandType.StoredProcedure,
                "AddLyncUserPlan",
                outParam,

                new SqlParameter("@ItemID", itemID),
                new SqlParameter("@LyncUserPlanName", lyncUserPlan.LyncUserPlanName),
                new SqlParameter("@LyncUserPlanType", lyncUserPlan.LyncUserPlanType),
                new SqlParameter("@IM", lyncUserPlan.IM),
                new SqlParameter("@Mobility", lyncUserPlan.Mobility),
                new SqlParameter("@MobilityEnableOutsideVoice", lyncUserPlan.MobilityEnableOutsideVoice),
                new SqlParameter("@Federation", lyncUserPlan.Federation),
                new SqlParameter("@Conferencing", lyncUserPlan.Conferencing),
                new SqlParameter("@EnterpriseVoice", lyncUserPlan.EnterpriseVoice),
                new SqlParameter("@VoicePolicy", lyncUserPlan.VoicePolicy),
                new SqlParameter("@IsDefault", lyncUserPlan.IsDefault),

                new SqlParameter("@RemoteUserAccess", lyncUserPlan.RemoteUserAccess),
                new SqlParameter("@PublicIMConnectivity", lyncUserPlan.PublicIMConnectivity),

                new SqlParameter("@AllowOrganizeMeetingsWithExternalAnonymous", lyncUserPlan.AllowOrganizeMeetingsWithExternalAnonymous),

                new SqlParameter("@Telephony", lyncUserPlan.Telephony),

                new SqlParameter("@ServerURI", lyncUserPlan.ServerURI),

                new SqlParameter("@ArchivePolicy", lyncUserPlan.ArchivePolicy),
                new SqlParameter("@TelephonyDialPlanPolicy", lyncUserPlan.TelephonyDialPlanPolicy),
                new SqlParameter("@TelephonyVoicePolicy", lyncUserPlan.TelephonyVoicePolicy)
            );

            return Convert.ToInt32(outParam.Value);
        }
Example #9
0
 internal virtual bool SetLyncUserPlanInternal(string organizationId, string userUpn, LyncUserPlan plan, Runspace runspace)
 {
     throw new NotImplementedException();
 }
Example #10
0
 internal virtual bool CreateUserInternal(string organizationId, string userUpn, LyncUserPlan plan)
 {
     throw new NotImplementedException();
 }
        private bool PlanExists(LyncUserPlan plan, LyncUserPlan[] plans)
        {
            bool result = false;

            foreach (LyncUserPlan p in plans)
            {
                if (p.LyncUserPlanName.ToLower() == plan.LyncUserPlanName.ToLower())
                {
                    result = true;
                    break;
                }
            }
            return result;
        }
        public static int UpdateLyncUserPlan(int itemID, LyncUserPlan lyncUserPlan)
        {
            int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);
            if (accountCheck < 0) return accountCheck;

            // place log record
            TaskManager.StartTask("LYNC", "ADD_LYNC_LYNCUSERPLAN", itemID);

            try
            {
                Organization org = GetOrganization(itemID);
                if (org == null)
                    return -1;

                // load package context
                PackageContext cntx = PackageController.GetPackageContext(org.PackageId);

                lyncUserPlan.Conferencing = lyncUserPlan.Conferencing & Convert.ToBoolean(cntx.Quotas[Quotas.LYNC_CONFERENCING].QuotaAllocatedValue);
                lyncUserPlan.EnterpriseVoice = lyncUserPlan.EnterpriseVoice & Convert.ToBoolean(cntx.Quotas[Quotas.LYNC_ENTERPRISEVOICE].QuotaAllocatedValue);
                if (!lyncUserPlan.EnterpriseVoice)
                    lyncUserPlan.VoicePolicy = LyncVoicePolicyType.None;
                lyncUserPlan.IM = true;

                DataProvider.UpdateLyncUserPlan(itemID, lyncUserPlan);
            }
            catch (Exception ex)
            {
                throw TaskManager.WriteError(ex);
            }
            finally
            {
                TaskManager.CompleteTask();
            }


            return 0;
        }
Example #13
0
 /// <remarks/>
 public void UpdateLyncUserPlanAsync(int itemId, LyncUserPlan lyncUserPlan, object userState) {
     if ((this.UpdateLyncUserPlanOperationCompleted == null)) {
         this.UpdateLyncUserPlanOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUpdateLyncUserPlanOperationCompleted);
     }
     this.InvokeAsync("UpdateLyncUserPlan", new object[] {
                 itemId,
                 lyncUserPlan}, this.UpdateLyncUserPlanOperationCompleted, userState);
 }
Example #14
0
 /// <remarks/>
 public void UpdateLyncUserPlanAsync(int itemId, LyncUserPlan lyncUserPlan) {
     this.UpdateLyncUserPlanAsync(itemId, lyncUserPlan, null);
 }
Example #15
0
 /// <remarks/>
 public System.IAsyncResult BeginUpdateLyncUserPlan(int itemId, LyncUserPlan lyncUserPlan, System.AsyncCallback callback, object asyncState) {
     return this.BeginInvoke("UpdateLyncUserPlan", new object[] {
                 itemId,
                 lyncUserPlan}, callback, asyncState);
 }
Example #16
0
 internal virtual bool CreateUserInternal(string organizationId, string userUpn, LyncUserPlan plan)
 {
     throw new NotImplementedException();
 }
Example #17
0
 internal virtual bool SetLyncUserPlanInternal(string organizationId, string userUpn, LyncUserPlan plan, Runspace runspace)
 {
     throw new NotImplementedException();
 }
 public bool SetLyncUserPlan(string organizationId, string userUpn, LyncUserPlan plan)
 {
     try
     {
         Log.WriteStart("{0}.SetLyncUserPlan", ProviderSettings.ProviderName);
         bool ret = Lync.SetLyncUserPlan(organizationId, userUpn, plan);
         Log.WriteEnd("{0}.SetLyncUserPlan", ProviderSettings.ProviderName);
         return ret;
     }
     catch (Exception ex)
     {
         Log.WriteError(String.Format("Error: {0}.SetLyncUserPlan", ProviderSettings.ProviderName), ex);
         throw;
     }
 }
Example #19
0
        public static void UpdateLyncUserPlan(int itemID, LyncUserPlan lyncUserPlan)
        {
            SqlHelper.ExecuteNonQuery(
                ConnectionString,
                CommandType.StoredProcedure,
                "UpdateLyncUserPlan",
                new SqlParameter("@LyncUserPlanId", lyncUserPlan.LyncUserPlanId),
                new SqlParameter("@LyncUserPlanName", lyncUserPlan.LyncUserPlanName),
                new SqlParameter("@LyncUserPlanType", lyncUserPlan.LyncUserPlanType),
                new SqlParameter("@IM", lyncUserPlan.IM),
                new SqlParameter("@Mobility", lyncUserPlan.Mobility),
                new SqlParameter("@MobilityEnableOutsideVoice", lyncUserPlan.MobilityEnableOutsideVoice),
                new SqlParameter("@Federation", lyncUserPlan.Federation),
                new SqlParameter("@Conferencing", lyncUserPlan.Conferencing),
                new SqlParameter("@EnterpriseVoice", lyncUserPlan.EnterpriseVoice),
                new SqlParameter("@VoicePolicy", lyncUserPlan.VoicePolicy),
                new SqlParameter("@IsDefault", lyncUserPlan.IsDefault),

                new SqlParameter("@RemoteUserAccess", lyncUserPlan.RemoteUserAccess),
                new SqlParameter("@PublicIMConnectivity", lyncUserPlan.PublicIMConnectivity),

                new SqlParameter("@AllowOrganizeMeetingsWithExternalAnonymous", lyncUserPlan.AllowOrganizeMeetingsWithExternalAnonymous),

                new SqlParameter("@Telephony", lyncUserPlan.Telephony),

                new SqlParameter("@ServerURI", lyncUserPlan.ServerURI),

                new SqlParameter("@ArchivePolicy", lyncUserPlan.ArchivePolicy),
                new SqlParameter("@TelephonyDialPlanPolicy", lyncUserPlan.TelephonyDialPlanPolicy),
                new SqlParameter("@TelephonyVoicePolicy", lyncUserPlan.TelephonyVoicePolicy)
            );
        }
Example #20
0
 public bool CreateUser(string organizationId, string userUpn, LyncUserPlan plan)
 {
     return CreateUserInternal(organizationId, userUpn, plan);
 }
Example #21
0
        /// <summary> Sets users lync plan.</summary>
        /// <param name="organizationId"> The organization identifier.</param>
        /// <param name="userUpn"> The user UPN.</param>
        /// <param name="plan"> The lync plan.</param>
        /// <param name="runspace"> The runspace.</param>
        /// <returns> The result.</returns>
        internal override bool SetLyncUserPlanInternal(string organizationId, string userUpn, LyncUserPlan plan, Runspace runspace)
        {
            HostedSolutionLog.LogStart("SetLyncUserPlanInternal");
            HostedSolutionLog.DebugInfo("organizationId: {0}", organizationId);
            HostedSolutionLog.DebugInfo("userUpn: {0}", userUpn);
            bool bCloseRunSpace = false;
            bool ret            = true;

            try
            {
                if (runspace == null)
                {
                    runspace       = OpenRunspace();
                    bCloseRunSpace = true;
                }

                // EnterpriseVoice
                var command = new Command("Set-CsUser");
                command.Parameters.Add("Identity", userUpn);
                command.Parameters.Add("EnterpriseVoiceEnabled", plan.EnterpriseVoice);
                ExecuteShellCommand(runspace, command, false);

                command = new Command("Grant-CsExternalAccessPolicy");
                command.Parameters.Add("Identity", userUpn);
                command.Parameters.Add("PolicyName", plan.Federation ? organizationId : null);
                ExecuteShellCommand(runspace, command, false);

                command = new Command("Grant-CsConferencingPolicy");
                command.Parameters.Add("Identity", userUpn);
                command.Parameters.Add("PolicyName", plan.Federation ? organizationId : null);
                ExecuteShellCommand(runspace, command, false);

                command = new Command("Grant-CsMobilityPolicy");
                command.Parameters.Add("Identity", userUpn);
                if (plan.Mobility)
                {
                    command.Parameters.Add("PolicyName", plan.MobilityEnableOutsideVoice ? organizationId + " EnableOutSideVoice" : organizationId + " DisableOutSideVoice");
                }
                else
                {
                    command.Parameters.Add("PolicyName", null);
                }
                ExecuteShellCommand(runspace, command, false);

                // ArchivePolicy
                command = new Command("Grant-CsArchivingPolicy");
                command.Parameters.Add("Identity", userUpn);
                command.Parameters.Add("PolicyName", string.IsNullOrEmpty(plan.ArchivePolicy) ? null : plan.ArchivePolicy);
                ExecuteShellCommand(runspace, command, false);

                // DialPlan
                command = new Command("Grant-CsDialPlan");
                command.Parameters.Add("Identity", userUpn);
                command.Parameters.Add("PolicyName", string.IsNullOrEmpty(plan.TelephonyDialPlanPolicy) ? null : plan.TelephonyDialPlanPolicy);
                ExecuteShellCommand(runspace, command, false);

                // VoicePolicy
                command = new Command("Grant-CsVoicePolicy");
                command.Parameters.Add("Identity", userUpn);
                command.Parameters.Add("PolicyName", string.IsNullOrEmpty(plan.TelephonyVoicePolicy) ? null : plan.TelephonyVoicePolicy);
                ExecuteShellCommand(runspace, command, false);

                command = new Command("Update-CsUserDatabase");
                ExecuteShellCommand(runspace, command, false);

                ret = false;
            }
            catch (Exception ex)
            {
                HostedSolutionLog.LogError("SetLyncUserPlanInternal", ex);
                throw;
            }
            finally
            {
                if (bCloseRunSpace)
                {
                    CloseRunspace(runspace);
                }
            }

            HostedSolutionLog.LogEnd("SetLyncUserPlanInternal");

            return(ret);
        }
Example #22
0
 public bool SetLyncUserPlan(string organizationId, string userUpn, LyncUserPlan plan)
 {
     return SetLyncUserPlanInternal(organizationId, userUpn, plan, null);
 }
 public bool SetLyncUserPlan(string organizationId, string userUpn, LyncUserPlan plan) {
     object[] results = this.Invoke("SetLyncUserPlan", new object[] {
                 organizationId,
                 userUpn,
                 plan});
     return ((bool)(results[0]));
 }
Example #24
0
        private bool CreateUserInternal(string organizationId, string userUpn, LyncUserPlan plan)
        {
            HostedSolutionLog.LogStart("CreateUserInternal");
            HostedSolutionLog.DebugInfo("organizationId: {0}", organizationId);
            HostedSolutionLog.DebugInfo("userUpn: {0}", userUpn);

            bool ret = true;
            Guid tenantId = Guid.Empty;

            LyncTransaction transaction = StartTransaction();

            Runspace runSpace = null;
            try
            {
                runSpace = OpenRunspace();

                Command cmd = new Command("Get-CsTenant");
                cmd.Parameters.Add("Identity", GetOrganizationPath(organizationId));
                Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd, false);
                if ((result != null) && (result.Count > 0))
                {
                    tenantId = (Guid)GetPSObjectProperty(result[0], "TenantId");

                    string[] tmp = userUpn.Split('@');
                    if (tmp.Length < 2) return false;

                    // Get SipDomains and verify existence
                    bool bSipDomainExists = false;
                    cmd = new Command("Get-CsSipDomain");
                    Collection<PSObject> sipDomains = ExecuteShellCommand(runSpace, cmd, false);

                    foreach (PSObject domain in sipDomains)
                    {
                        string d = (string)GetPSObjectProperty(domain, "Name");
                        if (d.ToLower() == tmp[1].ToLower())
                        {
                            bSipDomainExists = true;
                            break;
                        }
                    }

                    string path = string.Empty;

                    if (!bSipDomainExists)
                    {
                        // Create Sip Domain
                        cmd = new Command("New-CsSipDomain");
                        cmd.Parameters.Add("Identity", tmp[1].ToLower());
                        ExecuteShellCommand(runSpace, cmd, false);

                        transaction.RegisterNewSipDomain(tmp[1].ToLower());


                        path = AddADPrefix(GetOrganizationPath(organizationId));
                        DirectoryEntry ou = ActiveDirectoryUtils.GetADObject(path);
                        string[] sipDs = (string[])ActiveDirectoryUtils.GetADObjectPropertyMultiValue(ou, "msRTCSIP-Domains");
                        List<string> listSipDs = new List<string>();
                        listSipDs.AddRange(sipDs);
                        listSipDs.Add(tmp[1]);

                        ActiveDirectoryUtils.SetADObjectPropertyValue(ou, "msRTCSIP-Domains", listSipDs.ToArray());
                        ou.CommitChanges();

                        //Create simpleurls
                        CreateSimpleUrl(runSpace, tmp[1].ToLower(), tenantId);
                        transaction.RegisterNewSimpleUrl(tmp[1].ToLower(), tenantId.ToString());
                    }

                    //enable for lync
                    cmd = new Command("Enable-CsUser");
                    cmd.Parameters.Add("Identity", userUpn);
                    cmd.Parameters.Add("RegistrarPool", PoolFQDN);
                    cmd.Parameters.Add("SipAddressType", "UserPrincipalName");
                    ExecuteShellCommand(runSpace, cmd);

                    transaction.RegisterNewCsUser(userUpn);

                    //set groupingID and tenantID
                    cmd = new Command("Get-CsAdUser");
                    cmd.Parameters.Add("Identity", userUpn);
                    result = ExecuteShellCommand(runSpace, cmd);

                    path = AddADPrefix(GetResultObjectDN(result));
                    DirectoryEntry user = ActiveDirectoryUtils.GetADObject(path);
                    ActiveDirectoryUtils.SetADObjectPropertyValue(user, "msRTCSIP-GroupingID", tenantId);
                    ActiveDirectoryUtils.SetADObjectPropertyValue(user, "msRTCSIP-TenantId", tenantId);

                    if (tmp.Length > 0)
                    {
                        string Url = SimpleUrlRoot + tmp[1];
                        ActiveDirectoryUtils.SetADObjectPropertyValue(user, "msRTCSIP-BaseSimpleUrl", Url.ToLower());
                    }
                    user.CommitChanges();

                    //set-plan
                    int trySleep = 2000; int tryMaxCount = 10; bool PlanSet = false;
                    for (int tryCount = 0; (tryCount < tryMaxCount) && (!PlanSet); tryCount++)
                    {
                        try
                        {
                            PlanSet = SetLyncUserPlanInternal(organizationId, userUpn, plan, runSpace);
                        }
                        catch { }
                        if (!PlanSet) System.Threading.Thread.Sleep(trySleep);
                    }

                    //initiate addressbook generation
                    cmd = new Command("Update-CsAddressBook");
                    ExecuteShellCommand(runSpace, cmd, false);

                    //initiate user database replication
                    cmd = new Command("Update-CsUserDatabase");
                    ExecuteShellCommand(runSpace, cmd, false);
                }
                else
                {
                    ret = false;
                    HostedSolutionLog.LogError("Failed to retrieve tenantID", null);
                }
            }
            catch (Exception ex)
            {
                ret = false;
                HostedSolutionLog.LogError("CreateUserInternal", ex);
                RollbackTransaction(transaction);
                throw;
            }
            finally
            {

                CloseRunspace(runSpace);
            }
            HostedSolutionLog.LogEnd("CreateUserInternal");
            return ret;
        }
 /// <remarks/>
 public void SetLyncUserPlanAsync(string organizationId, string userUpn, LyncUserPlan plan) {
     this.SetLyncUserPlanAsync(organizationId, userUpn, plan, null);
 }
Example #26
0
        private bool SetLyncUserPlanInternal(string organizationId, string userUpn, LyncUserPlan plan, Runspace runSpace)
        {
            HostedSolutionLog.LogStart("SetLyncUserPlanInternal");
            HostedSolutionLog.DebugInfo("organizationId: {0}", organizationId);
            HostedSolutionLog.DebugInfo("userUpn: {0}", userUpn);
            bool ret = true;
            bool bCloseRunSpace = false;

            try
            {
                if (runSpace == null)
                {
                    runSpace = OpenRunspace();
                    bCloseRunSpace = true;
                }

                // EnterpriseVoice
                Command cmd = new Command("Set-CsUser");
                cmd.Parameters.Add("Identity", userUpn);
                cmd.Parameters.Add("EnterpriseVoiceEnabled", plan.EnterpriseVoice);
                ExecuteShellCommand(runSpace, cmd, false);

                //CsExternalAccessPolicy
                cmd = new Command("Grant-CsExternalAccessPolicy");
                cmd.Parameters.Add("Identity", userUpn);
                cmd.Parameters.Add("PolicyName", plan.Federation ? organizationId : null);
                ExecuteShellCommand(runSpace, cmd);

                //CsConferencingPolicy
                cmd = new Command("Grant-CsConferencingPolicy");
                cmd.Parameters.Add("Identity", userUpn);
                cmd.Parameters.Add("PolicyName", plan.Federation ? organizationId : null);
                ExecuteShellCommand(runSpace, cmd);

                //CsMobilityPolicy
                cmd = new Command("Grant-CsMobilityPolicy");
                cmd.Parameters.Add("Identity", userUpn);
                if (plan.Mobility)
                    cmd.Parameters.Add("PolicyName", plan.MobilityEnableOutsideVoice ? organizationId + " EnableOutSideVoice" : organizationId + " DisableOutSideVoice");
                else
                    cmd.Parameters.Add("PolicyName", null);
                ExecuteShellCommand(runSpace, cmd);

                // ArchivePolicy
                cmd = new Command("Grant-CsArchivingPolicy");
                cmd.Parameters.Add("Identity", userUpn);
                cmd.Parameters.Add("PolicyName", string.IsNullOrEmpty(plan.ArchivePolicy) ? null : plan.ArchivePolicy);
                ExecuteShellCommand(runSpace, cmd);

                // DialPlan
                cmd = new Command("Grant-CsDialPlan");
                cmd.Parameters.Add("Identity", userUpn);
                cmd.Parameters.Add("PolicyName", string.IsNullOrEmpty(plan.TelephonyDialPlanPolicy) ? null : plan.TelephonyDialPlanPolicy);
                ExecuteShellCommand(runSpace, cmd);

                // VoicePolicy
                cmd = new Command("Grant-CsVoicePolicy");
                cmd.Parameters.Add("Identity", userUpn);
                cmd.Parameters.Add("PolicyName", string.IsNullOrEmpty(plan.TelephonyVoicePolicy) ? null : plan.TelephonyVoicePolicy);
                ExecuteShellCommand(runSpace, cmd);

                //initiate user database replication
                cmd = new Command("Update-CsUserDatabase");
                ExecuteShellCommand(runSpace, cmd, false);
            }
            catch (Exception ex)
            {
                ret = false;
                HostedSolutionLog.LogError("SetLyncUserPlanInternal", ex);
                throw;
            }
            finally
            {

                if (bCloseRunSpace) CloseRunspace(runSpace);
            }
            HostedSolutionLog.LogEnd("SetLyncUserPlanInternal");
            return ret;
        }
Example #27
0
 public virtual bool CreateUser(string organizationId, string userUpn, LyncUserPlan plan)
 {
     return(CreateUserInternal(organizationId, userUpn, plan));
 }
Example #28
0
 /// <remarks/>
 public void AddLyncUserPlanAsync(int itemId, LyncUserPlan lyncUserPlan) {
     this.AddLyncUserPlanAsync(itemId, lyncUserPlan, null);
 }