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(); } } } } }
public virtual bool SetLyncUserPlan(string organizationId, string userUpn, LyncUserPlan plan) { return(SetLyncUserPlanInternal(organizationId, userUpn, plan, null)); }
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); }
/// <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); }
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); }
internal virtual bool SetLyncUserPlanInternal(string organizationId, string userUpn, LyncUserPlan plan, Runspace runspace) { throw new NotImplementedException(); }
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; }
/// <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); }
/// <remarks/> public void UpdateLyncUserPlanAsync(int itemId, LyncUserPlan lyncUserPlan) { this.UpdateLyncUserPlanAsync(itemId, lyncUserPlan, null); }
/// <remarks/> public System.IAsyncResult BeginUpdateLyncUserPlan(int itemId, LyncUserPlan lyncUserPlan, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("UpdateLyncUserPlan", new object[] { itemId, lyncUserPlan}, callback, asyncState); }
internal virtual bool CreateUserInternal(string organizationId, string userUpn, LyncUserPlan plan) { throw new NotImplementedException(); }
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; } }
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) ); }
public bool CreateUser(string organizationId, string userUpn, LyncUserPlan plan) { return CreateUserInternal(organizationId, userUpn, plan); }
/// <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); }
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])); }
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); }
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; }
public virtual bool CreateUser(string organizationId, string userUpn, LyncUserPlan plan) { return(CreateUserInternal(organizationId, userUpn, plan)); }
/// <remarks/> public void AddLyncUserPlanAsync(int itemId, LyncUserPlan lyncUserPlan) { this.AddLyncUserPlanAsync(itemId, lyncUserPlan, null); }