diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 0b3bc716..bdd344c3 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -577,9 +577,9 @@ ALTER TABLE [dbo].[ExchangeAccounts] ADD END GO -IF NOT EXISTS(SELECT * FROM [dbo].[ExchangeAccounts] WHERE UserPrincipalName IS NOT NULL) +IF NOT EXISTS(SELECT 1 FROM [dbo].[ExchangeAccounts] WHERE UserPrincipalName IS NOT NULL) BEGIN - UPDATE [dbo].[ExchangeAccounts] SET [UserPrincipalName] = PrimaryEmailAddress + UPDATE [dbo].[ExchangeAccounts] SET [UserPrincipalName] = PrimaryEmailAddress WHERE AccountType IN (1,7) END GO @@ -6924,13 +6924,76 @@ AS UPDATE LyncUsers SET SipAddress = @SipAddress WHERE - AccountID = @AccountID AND AccountType IN (1,7) + AccountID = @AccountID RETURN' END GO + +IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'CheckDomainUsedByHostedOrganization') +BEGIN +EXEC sp_executesql N'CREATE PROCEDURE [dbo].[CheckDomainUsedByHostedOrganization] + @DomainName nvarchar(100), + @Result int OUTPUT +AS + SET @Result = 0 + IF EXISTS(SELECT 1 FROM ExchangeAccounts WHERE UserPrincipalName LIKE ''%@''+ @DomainName) + BEGIN + SET @Result = 1 + END + ELSE + IF EXISTS(SELECT 1 FROM ExchangeAccountEmailAddresses WHERE EmailAddress LIKE ''%@''+ @DomainName) + BEGIN + SET @Result = 1 + END + ELSE + IF EXISTS(SELECT 1 FROM LyncUsers WHERE SipAddress LIKE ''%@''+ @DomainName) + BEGIN + SET @Result = 1 + END + + RETURN @Result' +END +GO + + +IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'HostedSolution.AllowChangeUPN') +BEGIN +INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (230, 13, 4, N'HostedSolution.AllowChangeUPN', N'Allow to Change UserPrincipalName', 1, 0, NULL) +END +GO + + + + +IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'UpdateExchangeAccountUserPrincipalName') +BEGIN +EXEC sp_executesql N' CREATE PROCEDURE [dbo].[UpdateExchangeAccountUserPrincipalName] +( + @AccountID int, + @UserPrincipalName nvarchar(300) +) +AS + +UPDATE ExchangeAccounts SET + UserPrincipalName = @UserPrincipalName +WHERE + AccountID = @AccountID + +RETURN' +END +GO + + +IF NOT EXISTS (SELECT 1 FROM LyncUsers WHERE SipAddress IS NOT NULL) +BEGIN + UPDATE LyncUsers SET SipAddress=EA.PrimaryEmailAddress FROM ExchangeAccounts AS EA WHERE LyncUsers.SipAddress IS NULL AND LyncUsers.AccountID = EA.AccountID +END +GO + + -- Version 2.1 section IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'Hosted Microsoft Exchange Server 2013') BEGIN diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/ExchangeServer/ExchangeEmailAddress.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/ExchangeServer/ExchangeEmailAddress.cs index 0eccbbc1..24eb5d80 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/ExchangeServer/ExchangeEmailAddress.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/ExchangeServer/ExchangeEmailAddress.cs @@ -36,6 +36,7 @@ namespace WebsitePanel.EnterpriseServer { string emailAddress; bool isPrimary; + bool iSuserPrincipalName; public string EmailAddress { @@ -48,5 +49,12 @@ namespace WebsitePanel.EnterpriseServer get { return this.isPrimary; } set { this.isPrimary = value; } } + + public bool IsUserPrincipalName + { + get { return iSuserPrincipalName; } + set { iSuserPrincipalName = value; } + } + } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs index 8090dd31..7541d383 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs @@ -150,6 +150,7 @@ order by rg.groupOrder public const string ORGANIZATIONS = "HostedSolution.Organizations"; public const string ORGANIZATION_USERS = "HostedSolution.Users"; public const string ORGANIZATION_DOMAINS = "HostedSolution.Domains"; + public const string ORGANIZATION_ALLOWCHANGEUPN = "HostedSolution.AllowChangeUPN"; public const string CRM_USERS = "HostedCRM.Users"; public const string CRM_ORGANIZATION = "HostedCRM.Organization"; diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs index fe8a4b6e..87b2169c 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/OrganizationProxy.cs @@ -29,7 +29,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.6387 +// Runtime Version:2.0.50727.6400 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -54,7 +54,6 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { using WebsitePanel.Providers.ResultObjects; - /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] @@ -104,6 +103,10 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { private System.Threading.SendOrPostCallback SetUserGeneralSettingsOperationCompleted; + private System.Threading.SendOrPostCallback SetUserPrincipalNameOperationCompleted; + + private System.Threading.SendOrPostCallback SetUserPasswordOperationCompleted; + private System.Threading.SendOrPostCallback SearchAccountsOperationCompleted; private System.Threading.SendOrPostCallback DeleteUserOperationCompleted; @@ -175,6 +178,12 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { /// public event SetUserGeneralSettingsCompletedEventHandler SetUserGeneralSettingsCompleted; + /// + public event SetUserPrincipalNameCompletedEventHandler SetUserPrincipalNameCompleted; + + /// + public event SetUserPasswordCompletedEventHandler SetUserPasswordCompleted; + /// public event SearchAccountsCompletedEventHandler SearchAccountsCompleted; @@ -1336,6 +1345,103 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { } } + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetUserPrincipalName", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public int SetUserPrincipalName(int itemId, int accountId, string userPrincipalName, bool inherit) { + object[] results = this.Invoke("SetUserPrincipalName", new object[] { + itemId, + accountId, + userPrincipalName, + inherit}); + return ((int)(results[0])); + } + + /// + public System.IAsyncResult BeginSetUserPrincipalName(int itemId, int accountId, string userPrincipalName, bool inherit, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("SetUserPrincipalName", new object[] { + itemId, + accountId, + userPrincipalName, + inherit}, callback, asyncState); + } + + /// + public int EndSetUserPrincipalName(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((int)(results[0])); + } + + /// + public void SetUserPrincipalNameAsync(int itemId, int accountId, string userPrincipalName, bool inherit) { + this.SetUserPrincipalNameAsync(itemId, accountId, userPrincipalName, inherit, null); + } + + /// + public void SetUserPrincipalNameAsync(int itemId, int accountId, string userPrincipalName, bool inherit, object userState) { + if ((this.SetUserPrincipalNameOperationCompleted == null)) { + this.SetUserPrincipalNameOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetUserPrincipalNameOperationCompleted); + } + this.InvokeAsync("SetUserPrincipalName", new object[] { + itemId, + accountId, + userPrincipalName, + inherit}, this.SetUserPrincipalNameOperationCompleted, userState); + } + + private void OnSetUserPrincipalNameOperationCompleted(object arg) { + if ((this.SetUserPrincipalNameCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.SetUserPrincipalNameCompleted(this, new SetUserPrincipalNameCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetUserPassword", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public int SetUserPassword(int itemId, int accountId, string password) { + object[] results = this.Invoke("SetUserPassword", new object[] { + itemId, + accountId, + password}); + return ((int)(results[0])); + } + + /// + public System.IAsyncResult BeginSetUserPassword(int itemId, int accountId, string password, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("SetUserPassword", new object[] { + itemId, + accountId, + password}, callback, asyncState); + } + + /// + public int EndSetUserPassword(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((int)(results[0])); + } + + /// + public void SetUserPasswordAsync(int itemId, int accountId, string password) { + this.SetUserPasswordAsync(itemId, accountId, password, null); + } + + /// + public void SetUserPasswordAsync(int itemId, int accountId, string password, object userState) { + if ((this.SetUserPasswordOperationCompleted == null)) { + this.SetUserPasswordOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetUserPasswordOperationCompleted); + } + this.InvokeAsync("SetUserPassword", new object[] { + itemId, + accountId, + password}, this.SetUserPasswordOperationCompleted, userState); + } + + private void OnSetUserPasswordOperationCompleted(object arg) { + if ((this.SetUserPasswordCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.SetUserPasswordCompleted(this, new SetUserPasswordCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SearchAccounts", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] public OrganizationUser[] SearchAccounts(int itemId, string filterColumn, string filterValue, string sortColumn, bool includeMailboxes) { @@ -2000,6 +2106,58 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution { } } + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + public delegate void SetUserPrincipalNameCompletedEventHandler(object sender, SetUserPrincipalNameCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class SetUserPrincipalNameCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal SetUserPrincipalNameCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public int Result { + get { + this.RaiseExceptionIfNecessary(); + return ((int)(this.results[0])); + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + public delegate void SetUserPasswordCompletedEventHandler(object sender, SetUserPasswordCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class SetUserPasswordCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal SetUserPasswordCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public int Result { + get { + this.RaiseExceptionIfNecessary(); + return ((int)(this.results[0])); + } + } + } + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void SearchAccountsCompletedEventHandler(object sender, SearchAccountsCompletedEventArgs e); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs index f7ab7cf4..a92f6776 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Data/DataProvider.cs @@ -829,6 +829,22 @@ namespace WebsitePanel.EnterpriseServer return Convert.ToInt32(prmId.Value); } + + + public static int CheckDomainUsedByHostedOrganization(string domainName) + { + SqlParameter prmId = new SqlParameter("@Result", SqlDbType.Int); + prmId.Direction = ParameterDirection.Output; + + SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure, + ObjectQualifier + "CheckDomainUsedByHostedOrganization", + prmId, + new SqlParameter("@domainName", domainName)); + + return Convert.ToInt32(prmId.Value); + } + + public static int AddDomain(int actorId, int packageId, int zoneItemId, string domainName, bool hostingAllowed, int webSiteId, int mailDomainId, bool isSubDomain, bool isInstantAlias, bool isDomainPointer) { @@ -2338,6 +2354,16 @@ namespace WebsitePanel.EnterpriseServer ); } + public static void UpdateExchangeAccountUserPrincipalName(int accountId, string userPrincipalName) + { + SqlHelper.ExecuteNonQuery( + ConnectionString, + CommandType.StoredProcedure, + "UpdateExchangeAccountUserPrincipalName", + new SqlParameter("@AccountID", accountId), + new SqlParameter("@UserPrincipalName", userPrincipalName)); + } + public static IDataReader GetExchangeAccount(int itemId, int accountId) { return SqlHelper.ExecuteReader( diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs index 486e2519..9e8665bb 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs @@ -767,7 +767,7 @@ namespace WebsitePanel.EnterpriseServer // load account ExchangeAccount account = GetAccount(itemId, accountId); - return exchange.GetMailboxStatistics(account.AccountName); + return exchange.GetMailboxStatistics(account.UserPrincipalName); } catch (Exception ex) { @@ -1241,6 +1241,9 @@ namespace WebsitePanel.EnterpriseServer string CounterStr = "00000"; int counter = 0; bool bFound = false; + + if (!AccountExists(accountName)) return accountName; + do { accountName = genSamLogin(name, CounterStr); @@ -1313,8 +1316,13 @@ namespace WebsitePanel.EnterpriseServer if (String.Compare(account.PrimaryEmailAddress, email.EmailAddress, true) == 0) { email.IsPrimary = true; - break; } + + if (String.Compare(account.UserPrincipalName, email.EmailAddress, true) == 0) + { + email.IsUserPrincipalName = true; + } + } return emails.ToArray(); @@ -1534,6 +1542,10 @@ namespace WebsitePanel.EnterpriseServer if(domain == null) return -1; + if (DataProvider.CheckDomainUsedByHostedOrganization(domain.DomainName) == 1) + { + return -1; + } // delete domain on Exchange int[] hubTransportServiceIds; @@ -1810,10 +1822,11 @@ namespace WebsitePanel.EnterpriseServer // delete mailbox int serviceExchangeId = GetExchangeServiceID(org.PackageId); ExchangeServer exchange = GetExchangeServer(serviceExchangeId, org.ServiceId); - exchange.DisableMailbox(account.AccountName); + exchange.DisableMailbox(account.UserPrincipalName); account.AccountType = ExchangeAccountType.User; - account.MailEnabledPublicFolder = false; + account.MailEnabledPublicFolder = false; + account.AccountPassword = null; UpdateAccount(account); DataProvider.DeleteUserEmailAddresses(account.AccountId, account.PrimaryEmailAddress); @@ -1859,7 +1872,7 @@ namespace WebsitePanel.EnterpriseServer // delete mailbox int serviceExchangeId = GetExchangeServiceID(org.PackageId); ExchangeServer exchange = GetExchangeServer(serviceExchangeId, org.ServiceId); - exchange.DeleteMailbox(account.AccountName); + exchange.DeleteMailbox(account.UserPrincipalName); @@ -1934,7 +1947,7 @@ namespace WebsitePanel.EnterpriseServer int exchangeServiceId = GetExchangeServiceID(org.PackageId); ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); - return exchange.GetMailboxGeneralSettings(account.AccountName); + return exchange.GetMailboxGeneralSettings(account.UserPrincipalName); } catch (Exception ex) { @@ -1981,7 +1994,7 @@ namespace WebsitePanel.EnterpriseServer hideAddressBook = true; exchange.SetMailboxGeneralSettings( - account.AccountName, + account.UserPrincipalName, hideAddressBook, disabled); @@ -2053,7 +2066,7 @@ namespace WebsitePanel.EnterpriseServer ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); exchange.SetMailboxEmailAddresses( - account.AccountName, + account.UserPrincipalName, GetAccountSimpleEmailAddresses(itemId, accountId)); return 0; @@ -2109,7 +2122,7 @@ namespace WebsitePanel.EnterpriseServer ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); exchange.SetMailboxPrimaryEmailAddress( - account.AccountName, + account.UserPrincipalName, emailAddress); if (DataProvider.CheckOCSUserExists(account.AccountId)) @@ -2125,6 +2138,7 @@ namespace WebsitePanel.EnterpriseServer } // save account + account.AccountPassword = null; UpdateAccount(account); return 0; @@ -2158,7 +2172,8 @@ namespace WebsitePanel.EnterpriseServer List toDelete = new List(); foreach (string emailAddress in emailAddresses) { - if (String.Compare(account.PrimaryEmailAddress, emailAddress, true) != 0) + if ((String.Compare(account.PrimaryEmailAddress, emailAddress, true) != 0) & + (String.Compare(account.UserPrincipalName, emailAddress, true) != 0)) toDelete.Add(emailAddress); } @@ -2175,7 +2190,7 @@ namespace WebsitePanel.EnterpriseServer ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); exchange.SetMailboxEmailAddresses( - account.AccountName, + account.UserPrincipalName, GetAccountSimpleEmailAddresses(itemId, accountId)); return 0; @@ -2216,7 +2231,7 @@ namespace WebsitePanel.EnterpriseServer // get mailbox settings int exchangeServiceId = GetExchangeServiceID(org.PackageId); ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); - ExchangeMailbox mailbox = exchange.GetMailboxMailFlowSettings(account.AccountName); + ExchangeMailbox mailbox = exchange.GetMailboxMailFlowSettings(account.UserPrincipalName); mailbox.DisplayName = account.DisplayName; return mailbox; } @@ -2261,7 +2276,7 @@ namespace WebsitePanel.EnterpriseServer int exchangeServiceId = GetExchangeServiceID(org.PackageId); ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); - exchange.SetMailboxMailFlowSettings(account.AccountName, + exchange.SetMailboxMailFlowSettings(account.UserPrincipalName, enableForwarding, forwardingAccountName, forwardToBoth, @@ -2309,7 +2324,7 @@ namespace WebsitePanel.EnterpriseServer // get mailbox settings int exchangeServiceId = GetExchangeServiceID(org.PackageId); ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); - ExchangeMailbox mailbox = exchange.GetMailboxAdvancedSettings(account.AccountName); + ExchangeMailbox mailbox = exchange.GetMailboxAdvancedSettings(account.UserPrincipalName); mailbox.DisplayName = account.DisplayName; return mailbox; } @@ -2352,6 +2367,7 @@ namespace WebsitePanel.EnterpriseServer else account.MailboxManagerActions &= ~action; // update account + account.AccountPassword = null; UpdateAccount(account); return 0; @@ -2516,7 +2532,7 @@ namespace WebsitePanel.EnterpriseServer // get mailbox settings int exchangeServiceId = GetExchangeServiceID(org.PackageId); ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); - ExchangeMailbox mailbox = exchange.GetMailboxPermissions(org.OrganizationId, account.AccountName); + ExchangeMailbox mailbox = exchange.GetMailboxPermissions(org.OrganizationId, account.UserPrincipalName); mailbox.DisplayName = account.DisplayName; return mailbox; } @@ -2558,7 +2574,7 @@ namespace WebsitePanel.EnterpriseServer int exchangeServiceId = GetExchangeServiceID(org.PackageId); ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); - exchange.SetMailboxPermissions(org.OrganizationId, account.AccountName, sendAsaccounts, fullAccessAcounts); + exchange.SetMailboxPermissions(org.OrganizationId, account.UserPrincipalName, sendAsaccounts, fullAccessAcounts); return 0; @@ -2643,7 +2659,7 @@ namespace WebsitePanel.EnterpriseServer exchange.SetMailboxAdvancedSettings( org.OrganizationId, - account.AccountName, + account.UserPrincipalName, plan.EnablePOP, plan.EnableIMAP, plan.EnableOWA, @@ -3188,6 +3204,7 @@ namespace WebsitePanel.EnterpriseServer // update account account.DisplayName = displayName; account.PrimaryEmailAddress = emailAddress; + account.AccountPassword = null; UpdateAccount(account); return 0; @@ -3516,6 +3533,7 @@ namespace WebsitePanel.EnterpriseServer // update account account.DisplayName = displayName; + account.AccountPassword = null; UpdateAccount(account); return 0; @@ -3736,6 +3754,7 @@ namespace WebsitePanel.EnterpriseServer addressLists.ToArray()); // save account + account.AccountPassword = null; UpdateAccount(account); return 0; @@ -4138,6 +4157,7 @@ namespace WebsitePanel.EnterpriseServer account.AccountName = accountName; account.MailEnabledPublicFolder = true; account.PrimaryEmailAddress = email; + account.AccountPassword = null; UpdateAccount(account); // register e-mail @@ -4190,6 +4210,7 @@ namespace WebsitePanel.EnterpriseServer // update and save account account.MailEnabledPublicFolder = false; account.PrimaryEmailAddress = ""; + account.AccountPassword = null; UpdateAccount(account); @@ -4309,6 +4330,7 @@ namespace WebsitePanel.EnterpriseServer { // rename original folder account.DisplayName = newFullName; + account.AccountPassword = null; UpdateAccount(account); // rename nested folders @@ -4526,6 +4548,7 @@ namespace WebsitePanel.EnterpriseServer emailAddress); // save account + account.AccountPassword = null; UpdateAccount(account); return 0; @@ -4743,7 +4766,7 @@ namespace WebsitePanel.EnterpriseServer int exchangeServiceId = GetExchangeServiceID(org.PackageId); ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId); - return exchange.GetMobileDevices(account.AccountName); + return exchange.GetMobileDevices(account.UserPrincipalName); } catch (Exception ex) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/CRMController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/CRMController.cs index 10a2bd10..ed6cb8d0 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/CRMController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/CRMController.cs @@ -249,7 +249,7 @@ namespace WebsitePanel.EnterpriseServer OrganizationResult serverRes = crm.CreateOrganization(orgId, org.OrganizationId, org.Name, baseCurrencyCode, baseCurrencyName, - baseCurrencySymbol, user.AccountName, user.FirstName, user.LastName, user.PrimaryEmailAddress, + baseCurrencySymbol, user.SamAccountName, user.FirstName, user.LastName, user.PrimaryEmailAddress, collation); if (!serverRes.IsSuccess) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OCSController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OCSController.cs index 56b08755..d202ce0c 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OCSController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OCSController.cs @@ -84,20 +84,23 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution private static OCSEdgeServer[] GetEdgeServers(string edgeServices) { List list = new List(); - string[] services = edgeServices.Split(';'); - foreach (string current in services) + if (!string.IsNullOrEmpty(edgeServices)) { - string[] data = current.Split(','); - try + string[] services = edgeServices.Split(';'); + foreach (string current in services) { - int serviceId = int.Parse(data[1]); - OCSEdgeServer ocs = new OCSEdgeServer(); - ServiceProviderProxy.Init(ocs, serviceId); - list.Add(ocs); - } - catch(Exception ex) - { - TaskManager.WriteError(ex); + string[] data = current.Split(','); + try + { + int serviceId = int.Parse(data[1]); + OCSEdgeServer ocs = new OCSEdgeServer(); + ServiceProviderProxy.Init(ocs, serviceId); + list.Add(ocs); + } + catch (Exception ex) + { + TaskManager.WriteError(ex); + } } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs index 00662bce..ef2994d8 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/OrganizationController.cs @@ -41,6 +41,7 @@ using WebsitePanel.Providers.ResultObjects; using WebsitePanel.Providers.SharePoint; using WebsitePanel.Providers.Common; using WebsitePanel.Providers.DNS; +using WebsitePanel.Providers.OCS; using System.IO; using System.Xml; @@ -425,7 +426,15 @@ namespace WebsitePanel.EnterpriseServer DomainInfo domain = ServerController.GetDomain(domainId); if (domain == null) return -1; - + + if (!string.IsNullOrEmpty(org.GlobalAddressList)) + { + if (DataProvider.CheckDomainUsedByHostedOrganization(domain.DomainName) == 1) + { + return -1; + } + } + // unregister domain DataProvider.DeleteExchangeOrganizationDomain(itemId, domainId); @@ -1327,11 +1336,11 @@ namespace WebsitePanel.EnterpriseServer if (orgProxy.CreateUser(org.OrganizationId, sAMAccountName, displayName, upn, password, enabled) == 0) { - OrganizationUser retUser = orgProxy.GetUserGeneralSettings(upn, org.OrganizationId); + accountName = sAMAccountName; + OrganizationUser retUser = orgProxy.GetUserGeneralSettings(sAMAccountName, org.OrganizationId); TaskManager.Write("sAMAccountName :" + retUser.DomainUserName); - userId = AddOrganizationUser(itemId, upn, displayName, email, retUser.DomainUserName, password, subscriberNumber); - accountName = upn; + userId = AddOrganizationUser(itemId, sAMAccountName, displayName, email, retUser.DomainUserName, password, subscriberNumber); // register email address AddAccountEmailAddress(userId, email); @@ -1423,7 +1432,7 @@ namespace WebsitePanel.EnterpriseServer TaskManager.Write("sAMAccountName :" + retUser.DomainUserName); - userId = AddOrganizationUser(itemId, accountName, displayName, email, retUser.DomainUserName, password, subscriberNumber); + userId = AddOrganizationUser(itemId, retUser.SamAccountName, displayName, email, retUser.DomainUserName, password, subscriberNumber); AddAccountEmailAddress(userId, email); @@ -1452,6 +1461,9 @@ namespace WebsitePanel.EnterpriseServer string CounterStr = "00000"; int counter = 0; bool bFound = false; + + if (!AccountExists(accountName)) return accountName; + do { accountName = genSamLogin(name, CounterStr); @@ -1662,7 +1674,7 @@ namespace WebsitePanel.EnterpriseServer if (accountCheck < 0) return accountCheck; // place log record - TaskManager.StartTask("EXCHANGE", "UPDATE_MAILBOX_GENERAL"); + TaskManager.StartTask("ORGANIZATION", "UPDATE_USER_GENERAL"); TaskManager.ItemId = itemId; try @@ -1727,7 +1739,7 @@ namespace WebsitePanel.EnterpriseServer if (!String.IsNullOrEmpty(password)) account.AccountPassword = CryptoUtils.Encrypt(password); else - account.AccountPassword = string.Empty; + account.AccountPassword = null; UpdateAccount(account); @@ -1744,6 +1756,162 @@ namespace WebsitePanel.EnterpriseServer } } + + public static int SetUserPrincipalName(int itemId, int accountId, string userPrincipalName, bool inherit) + { + + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + + // place log record + TaskManager.StartTask("ORGANIZATION", "SET_USER_USERPRINCIPALNAME"); + TaskManager.ItemId = itemId; + + try + { + + + // load organization + Organization org = GetOrganization(itemId); + if (org == null) + return -1; + + // check package + int packageCheck = SecurityContext.CheckPackage(org.PackageId, DemandPackage.IsActive); + if (packageCheck < 0) return packageCheck; + + // load account + OrganizationUser user = GetUserGeneralSettings(itemId, accountId); + + if (user.UserPrincipalName != userPrincipalName) + { + bool userPrincipalNameOwned = false; + ExchangeEmailAddress[] emails = ExchangeServerController.GetMailboxEmailAddresses(itemId, accountId); + + foreach (ExchangeEmailAddress mail in emails) + { + if (mail.EmailAddress == userPrincipalName) + { + userPrincipalNameOwned = true; + break; + } + } + + if (!userPrincipalNameOwned) + { + if (EmailAddressExists(userPrincipalName)) + return BusinessErrorCodes.ERROR_EXCHANGE_EMAIL_EXISTS; + } + } + + Organizations orgProxy = GetOrganizationProxy(org.ServiceId); + + orgProxy.SetUserPrincipalName(org.OrganizationId, + user.AccountName, + userPrincipalName.ToLower()); + + DataProvider.UpdateExchangeAccountUserPrincipalName(accountId, userPrincipalName.ToLower()); + + if (inherit) + { + if (user.AccountType == ExchangeAccountType.Mailbox) + { + ExchangeServerController.AddMailboxEmailAddress(itemId, accountId, userPrincipalName.ToLower()); + ExchangeServerController.SetMailboxPrimaryEmailAddress(itemId, accountId, userPrincipalName.ToLower()); + } + else + { + if (user.IsLyncUser) + { + if (!DataProvider.LyncUserExists(accountId, userPrincipalName.ToLower())) + { + LyncController.SetLyncUserGeneralSettings(itemId, accountId, userPrincipalName.ToLower(), null); + } + } + else + { + if (user.IsOCSUser) + { + OCSServer ocs = GetOCSProxy(itemId); + string instanceId = DataProvider.GetOCSUserInstanceID(user.AccountId); + ocs.SetUserPrimaryUri(instanceId, userPrincipalName.ToLower()); + } + } + } + } + + return 0; + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + finally + { + TaskManager.CompleteTask(); + } + + + } + + + public static int SetUserPassword(int itemId, int accountId, string password) + { + + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + // place log record + TaskManager.StartTask("ORGANIZATION", "SET_USER_PASSWORD"); + TaskManager.ItemId = itemId; + + try + { + // load organization + Organization org = GetOrganization(itemId); + if (org == null) + return -1; + + // check package + int packageCheck = SecurityContext.CheckPackage(org.PackageId, DemandPackage.IsActive); + if (packageCheck < 0) return packageCheck; + + // load account + ExchangeAccount account = ExchangeServerController.GetAccount(itemId, accountId); + + string accountName = GetAccountName(account.AccountName); + + Organizations orgProxy = GetOrganizationProxy(org.ServiceId); + + orgProxy.SetUserPassword( org.OrganizationId, + accountName, + password); + + //account. + if (!String.IsNullOrEmpty(password)) + account.AccountPassword = CryptoUtils.Encrypt(password); + else + account.AccountPassword = null; + + UpdateAccount(account); + + return 0; + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + finally + { + TaskManager.CompleteTask(); + } + } + + + private static void UpdateAccount(ExchangeAccount account) { DataProvider.UpdateExchangeAccount(account.AccountId, account.AccountName, account.AccountType, account.DisplayName, @@ -1961,6 +2129,19 @@ namespace WebsitePanel.EnterpriseServer } return res; } + + private static OCSServer GetOCSProxy(int itemId) + { + Organization org = OrganizationController.GetOrganization(itemId); + int serviceId = PackageController.GetPackageServiceId(org.PackageId, ResourceGroups.OCS); + + OCSServer ocs = new OCSServer(); + ServiceProviderProxy.Init(ocs, serviceId); + + + return ocs; + } + } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs index adad212f..b934d5e0 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/HostedSolution/ReportController.cs @@ -444,12 +444,12 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution try { - stats = exchange.GetMailboxStatistics(mailbox.AccountName); + stats = exchange.GetMailboxStatistics(mailbox.UserPrincipalName); } catch (Exception ex) { TaskManager.WriteError(ex, "Could not get mailbox statistics. AccountName: {0}", - mailbox.AccountName); + mailbox.UserPrincipalName); } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs index 38acbebf..cc4a6b85 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esOrganizations.asmx.cs @@ -195,6 +195,22 @@ namespace WebsitePanel.EnterpriseServer } + [WebMethod] + public int SetUserPrincipalName(int itemId, int accountId, string userPrincipalName, bool inherit) + { + return OrganizationController.SetUserPrincipalName(itemId, accountId, userPrincipalName, + inherit); + } + + + [WebMethod] + public int SetUserPassword(int itemId, int accountId, string password) + { + return OrganizationController.SetUserPassword(itemId, accountId, password); + } + + + [WebMethod] public List SearchAccounts(int itemId, string filterColumn, string filterValue, string sortColumn, bool includeMailboxes) diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeEmailAddress.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeEmailAddress.cs index 0db794cd..c16d9d09 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeEmailAddress.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangeEmailAddress.cs @@ -58,5 +58,7 @@ namespace WebsitePanel.Providers.HostedSolution get { return primary; } set { primary = value; } } + + } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/IOrganization.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/IOrganization.cs index 15846f9c..e3ce875d 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/IOrganization.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/IOrganization.cs @@ -51,6 +51,10 @@ namespace WebsitePanel.Providers.HostedSolution string businessPhone, string fax, string homePhone, string mobilePhone, string pager, string webPage, string notes, string externalEmail); + void SetUserPassword(string organizationId, string accountName, string password); + + void SetUserPrincipalName(string organizationId, string accountName, string userPrincipalName); + bool OrganizationExists(string organizationId); void DeleteOrganizationDomain(string organizationDistinguishedName, string domain); diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs index 147bfdd1..cd7e60b0 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs @@ -43,13 +43,13 @@ namespace WebsitePanel.Providers.HostedSolution private string RootOU { get { return ProviderSettings["RootOU"]; } - } + } private string RootDomain { get { return ServerSettings.ADRootDomain; } } - + private string PrimaryDomainController { get { return ProviderSettings["PrimaryDomainController"]; } @@ -68,7 +68,7 @@ namespace WebsitePanel.Providers.HostedSolution AppendProtocol(sb); AppendDomainController(sb); AppendOUPath(sb, organizationId); - AppendOUPath(sb, RootOU); + AppendOUPath(sb, RootOU); AppendDomainPath(sb, RootDomain); return sb.ToString(); @@ -118,20 +118,20 @@ namespace WebsitePanel.Providers.HostedSolution { sb.Append(PrimaryDomainController + "/"); } - + private static void AppendCNPath(StringBuilder sb, string organizationId) { if (string.IsNullOrEmpty(organizationId)) return; - + sb.Append("CN=").Append(organizationId).Append(","); } - + private static void AppendProtocol(StringBuilder sb) { sb.Append("LDAP://"); } - + private static void AppendOUPath(StringBuilder sb, string ou) { if (string.IsNullOrEmpty(ou)) @@ -168,29 +168,29 @@ namespace WebsitePanel.Providers.HostedSolution { return OrganizationExistsInternal(organizationId); } - + internal bool OrganizationExistsInternal(string organizationId) { if (string.IsNullOrEmpty(organizationId)) throw new ArgumentNullException("organizationId"); - + string orgPath = GetOrganizationPath(organizationId); return ActiveDirectoryUtils.AdObjectExists(orgPath); } - + public Organization CreateOrganization(string organizationId) { - return CreateOrganizationInternal(organizationId); + return CreateOrganizationInternal(organizationId); } - + internal Organization CreateOrganizationInternal(string organizationId) { HostedSolutionLog.LogStart("CreateOrganizationInternal"); HostedSolutionLog.DebugInfo("OrganizationId : {0}", organizationId); - + if (string.IsNullOrEmpty(organizationId)) throw new ArgumentNullException("organizationId"); - + bool ouCreated = false; bool groupCreated = false; @@ -203,18 +203,18 @@ namespace WebsitePanel.Providers.HostedSolution //Create OU ActiveDirectoryUtils.CreateOrganizationalUnit(organizationId, parentPath); ouCreated = true; - + //Create security group ActiveDirectoryUtils.CreateGroup(orgPath, organizationId); groupCreated = true; - - + + org = new Organization(); org.OrganizationId = organizationId; org.DistinguishedName = ActiveDirectoryUtils.RemoveADPrefix(orgPath); - org.SecurityGroup = ActiveDirectoryUtils.RemoveADPrefix(GetGroupPath(organizationId)); + org.SecurityGroup = ActiveDirectoryUtils.RemoveADPrefix(GetGroupPath(organizationId)); } - catch(Exception ex) + catch (Exception ex) { HostedSolutionLog.LogError(ex); try @@ -225,7 +225,7 @@ namespace WebsitePanel.Providers.HostedSolution ActiveDirectoryUtils.DeleteADObject(groupPath); } } - catch(Exception e) + catch (Exception e) { HostedSolutionLog.LogError(e); } @@ -238,21 +238,21 @@ namespace WebsitePanel.Providers.HostedSolution ActiveDirectoryUtils.DeleteADObject(orgPath); } } - catch(Exception e) + catch (Exception e) { HostedSolutionLog.LogError(e); } throw; } - + HostedSolutionLog.LogEnd("CreateOrganizationInternal"); - - return org; + + return org; } public override void ChangeServiceItemsState(ServiceProviderItem[] items, bool enabled) - { + { foreach (ServiceProviderItem item in items) { @@ -261,7 +261,7 @@ namespace WebsitePanel.Providers.HostedSolution if (item is Organization) { Organization org = item as Organization; - ChangeOrganizationState(org, enabled); + ChangeOrganizationState(org, enabled); } } catch (Exception ex) @@ -281,7 +281,7 @@ namespace WebsitePanel.Providers.HostedSolution string.Format(CultureInfo.InvariantCulture, "(&(objectClass=user)(!{0}=disabled))", ADAttributes.CustomAttribute2); using (DirectorySearcher searcher = new DirectorySearcher(entry, filter)) - { + { SearchResultCollection resCollection = searcher.FindAll(); foreach (SearchResult res in resCollection) { @@ -303,21 +303,21 @@ namespace WebsitePanel.Providers.HostedSolution Organization org = item as Organization; DeleteOrganizationInternal(org.OrganizationId); } - + } catch (Exception ex) { HostedSolutionLog.LogError(String.Format("Error deleting '{0}' {1}", item.Name, item.GetType().Name), ex); } } - + } - + public void DeleteOrganization(string organizationId) - { + { DeleteOrganizationInternal(organizationId); } - + internal void DeleteOrganizationInternal(string organizationId) { HostedSolutionLog.LogStart("DeleteOrganizationInternal"); @@ -328,11 +328,11 @@ namespace WebsitePanel.Providers.HostedSolution string groupPath = GetGroupPath(organizationId); ActiveDirectoryUtils.DeleteADObject(groupPath); - - string path = GetOrganizationPath(organizationId); + + string path = GetOrganizationPath(organizationId); ActiveDirectoryUtils.DeleteADObject(path, true); - + HostedSolutionLog.LogEnd("DeleteOrganizationInternal"); } @@ -371,7 +371,7 @@ namespace WebsitePanel.Providers.HostedSolution userPath = GetUserPath(organizationId, loginName); if (!ActiveDirectoryUtils.AdObjectExists(userPath)) { - userPath = ActiveDirectoryUtils.CreateUser(path, upn, loginName, displayName, password, enabled); + userPath = ActiveDirectoryUtils.CreateUser(path, null, loginName, displayName, password, enabled); DirectoryEntry entry = new DirectoryEntry(userPath); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.UserPrincipalName, upn); entry.CommitChanges(); @@ -416,12 +416,12 @@ namespace WebsitePanel.Providers.HostedSolution { return GetPasswordPolicyInternal(); } - + internal PasswordPolicyResult GetPasswordPolicyInternal() { HostedSolutionLog.LogStart("GetPasswordPolicyInternal"); - PasswordPolicyResult res = new PasswordPolicyResult {IsSuccess = true}; + PasswordPolicyResult res = new PasswordPolicyResult { IsSuccess = true }; string[] policyAttributes = new[] {"minPwdLength", "pwdProperties", @@ -437,30 +437,30 @@ namespace WebsitePanel.Providers.HostedSolution SearchScope.Base ); - + SearchResult result = ds.FindOne(); PasswordPolicy ret = new PasswordPolicy - { - MinLength = ((int) result.Properties["minPwdLength"][0]), - IsComplexityEnable = ((int) result.Properties["pwdProperties"][0] == 1) - }; - res.Value = ret; + { + MinLength = ((int)result.Properties["minPwdLength"][0]), + IsComplexityEnable = ((int)result.Properties["pwdProperties"][0] == 1) + }; + res.Value = ret; } - catch(Exception ex) + catch (Exception ex) { HostedSolutionLog.LogError(ex); res.IsSuccess = false; - res.ErrorCodes.Add(ErrorCodes.CANNOT_GET_PASSWORD_COMPLEXITY); + res.ErrorCodes.Add(ErrorCodes.CANNOT_GET_PASSWORD_COMPLEXITY); } - HostedSolutionLog.LogEnd("GetPasswordPolicyInternal"); + HostedSolutionLog.LogEnd("GetPasswordPolicyInternal"); return res; } - + public void DeleteUser(string loginName, string organizationId) - { + { DeleteUserInternal(loginName, organizationId); } @@ -469,37 +469,37 @@ namespace WebsitePanel.Providers.HostedSolution HostedSolutionLog.LogStart("DeleteUserInternal"); HostedSolutionLog.DebugInfo("loginName : {0}", loginName); HostedSolutionLog.DebugInfo("organizationId : {0}", organizationId); - + if (string.IsNullOrEmpty(loginName)) throw new ArgumentNullException("loginName"); if (string.IsNullOrEmpty(organizationId)) throw new ArgumentNullException("organizationId"); - string path = GetUserPath(organizationId, loginName); + string path = GetUserPath(organizationId, loginName); if (ActiveDirectoryUtils.AdObjectExists(path)) - ActiveDirectoryUtils.DeleteADObject(path,true); + ActiveDirectoryUtils.DeleteADObject(path, true); HostedSolutionLog.LogEnd("DeleteUserInternal"); } - + public OrganizationUser GetUserGeneralSettings(string loginName, string organizationId) { return GetUserGeneralSettingsInternal(loginName, organizationId); } - + internal OrganizationUser GetUserGeneralSettingsInternal(string loginName, string organizationId) { HostedSolutionLog.LogStart("GetUserGeneralSettingsInternal"); HostedSolutionLog.DebugInfo("loginName : {0}", loginName); HostedSolutionLog.DebugInfo("organizationId : {0}", organizationId); - + if (string.IsNullOrEmpty(loginName)) throw new ArgumentNullException("loginName"); string path = GetUserPath(organizationId, loginName); DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path); - + OrganizationUser retUser = new OrganizationUser(); retUser.FirstName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.FirstName); @@ -529,25 +529,25 @@ namespace WebsitePanel.Providers.HostedSolution retUser.DomainUserName = GetDomainName(ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.SAMAccountName)); retUser.DistinguishedName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.DistinguishedName); retUser.Locked = (bool)entry.InvokeGet(ADAttributes.AccountLocked); - retUser.UserPrincipalName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.UserPrincipalName); - + retUser.UserPrincipalName= (string)entry.InvokeGet(ADAttributes.UserPrincipalName); + HostedSolutionLog.LogEnd("GetUserGeneralSettingsInternal"); return retUser; } - private string GetDomainName(string username) - { - string domain = ActiveDirectoryUtils.GetNETBIOSDomainName(RootDomain); - string ret = string.Format(@"{0}\{1}", domain, username); - return ret; - } + private string GetDomainName(string username) + { + string domain = ActiveDirectoryUtils.GetNETBIOSDomainName(RootDomain); + string ret = string.Format(@"{0}\{1}", domain, username); + return ret; + } private OrganizationUser GetManager(DirectoryEntry entry) { OrganizationUser retUser = null; string path = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Manager); if (!string.IsNullOrEmpty(path)) - { + { path = ActiveDirectoryUtils.AddADPrefix(path, PrimaryDomainController); if (ActiveDirectoryUtils.AdObjectExists(path)) { @@ -556,18 +556,18 @@ namespace WebsitePanel.Providers.HostedSolution retUser.DisplayName = ActiveDirectoryUtils.GetADObjectStringProperty(user, ADAttributes.DisplayName); retUser.AccountName = ActiveDirectoryUtils.GetADObjectStringProperty(user, ADAttributes.Name); - } + } } - + return retUser; } - - public void SetUserGeneralSettings(string organizationId, string accountName, string displayName, string password, + + public void SetUserGeneralSettings(string organizationId, string accountName, string displayName, string password, bool hideFromAddressBook, bool disabled, bool locked, string firstName, string initials, string lastName, string address, string city, string state, string zip, string country, string jobTitle, string company, string department, string office, string managerAccountName, string businessPhone, string fax, string homePhone, string mobilePhone, string pager, - string webPage, string notes, string externalEmail) + string webPage, string notes, string externalEmail) { SetUserGeneralSettingsInternal(organizationId, accountName, displayName, password, hideFromAddressBook, disabled, locked, firstName, initials, lastName, address, city, state, zip, country, jobTitle, @@ -583,10 +583,10 @@ namespace WebsitePanel.Providers.HostedSolution string webPage, string notes, string externalEmail) { string path = GetUserPath(organizationId, accountName); - DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path); + DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path); - ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.FirstName, firstName); + ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.FirstName, firstName); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.LastName, lastName); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.DisplayName, displayName); @@ -609,7 +609,7 @@ namespace WebsitePanel.Providers.HostedSolution ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Notes, notes); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.ExternalEmail, externalEmail); ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.CustomAttribute2, (disabled ? "disabled" : null)); - + string manager = string.Empty; if (!string.IsNullOrEmpty(managerAccountName)) @@ -619,7 +619,7 @@ namespace WebsitePanel.Providers.HostedSolution } ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.Manager, ActiveDirectoryUtils.RemoveADPrefix(manager)); - + entry.InvokeSet(ADAttributes.AccountDisabled, disabled); if (!string.IsNullOrEmpty(password)) entry.Invoke(ADAttributes.SetPassword, password); @@ -629,13 +629,44 @@ namespace WebsitePanel.Providers.HostedSolution bool isLoked = (bool)entry.InvokeGet(ADAttributes.AccountLocked); if (isLoked) entry.InvokeSet(ADAttributes.AccountLocked, locked); - + } - - + + entry.CommitChanges(); } + public void SetUserPassword(string organizationId, string accountName, string password) + { + SetUserPasswordInternal(organizationId, accountName, password); + } + + internal void SetUserPasswordInternal(string organizationId, string accountName, string password) + { + string path = GetUserPath(organizationId, accountName); + DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path); + + if (!string.IsNullOrEmpty(password)) + entry.Invoke(ADAttributes.SetPassword, password); + + entry.CommitChanges(); + } + + + public void SetUserPrincipalName(string organizationId, string accountName, string userPrincipalName) + { + SetUserPrincipalNameInternal(organizationId, accountName, userPrincipalName); + } + + internal void SetUserPrincipalNameInternal(string organizationId, string accountName, string userPrincipalName) + { + string path = GetUserPath(organizationId, accountName); + DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path); + + ActiveDirectoryUtils.SetADObjectProperty(entry, ADAttributes.UserPrincipalName, userPrincipalName); + + entry.CommitChanges(); + } public string GetSamAccountNameByUserPrincipalName(string organizationId, string userPrincipalName) { @@ -679,15 +710,15 @@ namespace WebsitePanel.Providers.HostedSolution } - #endregion + #endregion #region Domains - + public void CreateOrganizationDomain(string organizationDistinguishedName, string domain) { CreateOrganizationDomainInternal(organizationDistinguishedName, domain); } - + /// /// Creates organization domain /// @@ -702,7 +733,7 @@ namespace WebsitePanel.Providers.HostedSolution HostedSolutionLog.LogEnd("CreateOrganizationDomainInternal"); } - + public void DeleteOrganizationDomain(string organizationDistinguishedName, string domain) { DeleteOrganizationDomainInternal(organizationDistinguishedName, domain); @@ -730,6 +761,6 @@ namespace WebsitePanel.Providers.HostedSolution return Environment.UserDomainName != Environment.MachineName; } - + } } diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Client/OrganizationProxy.cs b/WebsitePanel/Sources/WebsitePanel.Server.Client/OrganizationProxy.cs index c9d6a0f0..f7ecb33e 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.Client/OrganizationProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server.Client/OrganizationProxy.cs @@ -26,10 +26,11 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.5456 +// Runtime Version:2.0.50727.6400 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -37,7 +38,7 @@ //------------------------------------------------------------------------------ // -// This source code was auto-generated by wsdl, Version=2.0.50727.42. +// This source code was auto-generated by wsdl, Version=2.0.50727.3038. // namespace WebsitePanel.Providers.HostedSolution { using System.Xml.Serialization; @@ -47,12 +48,13 @@ namespace WebsitePanel.Providers.HostedSolution { using System; using System.Diagnostics; + using WebsitePanel.Providers.Common; using WebsitePanel.Providers.ResultObjects; - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Web.Services.WebServiceBindingAttribute(Name="OrganizationsSoap", Namespace="http://tempuri.org/")] @@ -76,6 +78,10 @@ namespace WebsitePanel.Providers.HostedSolution { private System.Threading.SendOrPostCallback SetUserGeneralSettingsOperationCompleted; + private System.Threading.SendOrPostCallback SetUserPasswordOperationCompleted; + + private System.Threading.SendOrPostCallback SetUserPrincipalNameOperationCompleted; + private System.Threading.SendOrPostCallback DeleteOrganizationDomainOperationCompleted; private System.Threading.SendOrPostCallback CreateOrganizationDomainOperationCompleted; @@ -86,7 +92,7 @@ namespace WebsitePanel.Providers.HostedSolution { /// public Organizations() { - this.Url = "http://localhost:9006/Organizations.asmx"; + this.Url = "http://localhost:9003/Organizations.asmx"; } /// @@ -110,6 +116,12 @@ namespace WebsitePanel.Providers.HostedSolution { /// public event SetUserGeneralSettingsCompletedEventHandler SetUserGeneralSettingsCompleted; + /// + public event SetUserPasswordCompletedEventHandler SetUserPasswordCompleted; + + /// + public event SetUserPrincipalNameCompletedEventHandler SetUserPrincipalNameCompleted; + /// public event DeleteOrganizationDomainCompletedEventHandler DeleteOrganizationDomainCompleted; @@ -627,6 +639,98 @@ namespace WebsitePanel.Providers.HostedSolution { } } + /// + [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetUserPassword", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void SetUserPassword(string organizationId, string accountName, string password) { + this.Invoke("SetUserPassword", new object[] { + organizationId, + accountName, + password}); + } + + /// + public System.IAsyncResult BeginSetUserPassword(string organizationId, string accountName, string password, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("SetUserPassword", new object[] { + organizationId, + accountName, + password}, callback, asyncState); + } + + /// + public void EndSetUserPassword(System.IAsyncResult asyncResult) { + this.EndInvoke(asyncResult); + } + + /// + public void SetUserPasswordAsync(string organizationId, string accountName, string password) { + this.SetUserPasswordAsync(organizationId, accountName, password, null); + } + + /// + public void SetUserPasswordAsync(string organizationId, string accountName, string password, object userState) { + if ((this.SetUserPasswordOperationCompleted == null)) { + this.SetUserPasswordOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetUserPasswordOperationCompleted); + } + this.InvokeAsync("SetUserPassword", new object[] { + organizationId, + accountName, + password}, this.SetUserPasswordOperationCompleted, userState); + } + + private void OnSetUserPasswordOperationCompleted(object arg) { + if ((this.SetUserPasswordCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.SetUserPasswordCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetUserPrincipalName", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void SetUserPrincipalName(string organizationId, string accountName, string userPrincipalName) { + this.Invoke("SetUserPrincipalName", new object[] { + organizationId, + accountName, + userPrincipalName}); + } + + /// + public System.IAsyncResult BeginSetUserPrincipalName(string organizationId, string accountName, string userPrincipalName, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("SetUserPrincipalName", new object[] { + organizationId, + accountName, + userPrincipalName}, callback, asyncState); + } + + /// + public void EndSetUserPrincipalName(System.IAsyncResult asyncResult) { + this.EndInvoke(asyncResult); + } + + /// + public void SetUserPrincipalNameAsync(string organizationId, string accountName, string userPrincipalName) { + this.SetUserPrincipalNameAsync(organizationId, accountName, userPrincipalName, null); + } + + /// + public void SetUserPrincipalNameAsync(string organizationId, string accountName, string userPrincipalName, object userState) { + if ((this.SetUserPrincipalNameOperationCompleted == null)) { + this.SetUserPrincipalNameOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetUserPrincipalNameOperationCompleted); + } + this.InvokeAsync("SetUserPrincipalName", new object[] { + organizationId, + accountName, + userPrincipalName}, this.SetUserPrincipalNameOperationCompleted, userState); + } + + private void OnSetUserPrincipalNameOperationCompleted(object arg) { + if ((this.SetUserPrincipalNameCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.SetUserPrincipalNameCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/DeleteOrganizationDomain", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] @@ -804,11 +908,11 @@ namespace WebsitePanel.Providers.HostedSolution { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void OrganizationExistsCompletedEventHandler(object sender, OrganizationExistsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class OrganizationExistsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -830,11 +934,11 @@ namespace WebsitePanel.Providers.HostedSolution { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CreateOrganizationCompletedEventHandler(object sender, CreateOrganizationCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class CreateOrganizationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -856,15 +960,15 @@ namespace WebsitePanel.Providers.HostedSolution { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteOrganizationCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CreateUserCompletedEventHandler(object sender, CreateUserCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class CreateUserCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -886,15 +990,15 @@ namespace WebsitePanel.Providers.HostedSolution { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteUserCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetUserGeneralSettingsCompletedEventHandler(object sender, GetUserGeneralSettingsCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetUserGeneralSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -916,23 +1020,31 @@ namespace WebsitePanel.Providers.HostedSolution { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void SetUserGeneralSettingsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + public delegate void SetUserPasswordCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + public delegate void SetUserPrincipalNameCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteOrganizationDomainCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CreateOrganizationDomainCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetPasswordPolicyCompletedEventHandler(object sender, GetPasswordPolicyCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetPasswordPolicyCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { @@ -954,11 +1066,11 @@ namespace WebsitePanel.Providers.HostedSolution { } /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetSamAccountNameByUserPrincipalNameCompletedEventHandler(object sender, GetSamAccountNameByUserPrincipalNameCompletedEventArgs e); /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class GetSamAccountNameByUserPrincipalNameCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { diff --git a/WebsitePanel/Sources/WebsitePanel.Server/Organizations.asmx.cs b/WebsitePanel/Sources/WebsitePanel.Server/Organizations.asmx.cs index 775058d8..4b70e354 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/Organizations.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/Organizations.asmx.cs @@ -125,6 +125,20 @@ namespace WebsitePanel.Server } + [WebMethod, SoapHeader("settings")] + public void SetUserPassword(string organizationId, string accountName, string password) + { + Organization.SetUserPassword(organizationId, accountName, password); + } + + + [WebMethod, SoapHeader("settings")] + public void SetUserPrincipalName(string organizationId, string accountName, string userPrincipalName) + { + Organization.SetUserPrincipalName(organizationId, accountName, userPrincipalName); + } + + [WebMethod, SoapHeader("settings")] public void DeleteOrganizationDomain(string organizationDistinguishedName, string domain) { diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx index fc7a3c5b..e5ac1de2 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx @@ -2896,6 +2896,9 @@ Hosted Organization + + Unable to delete domain, verify if domain is in use by hosted organization objects. + Error creating mailbox. See audit log for more details. @@ -3080,6 +3083,19 @@ User general settings have been successfully updated. + + User password has been successfully updated. + + + Failed to update user password. + + + User login name has been successfully updated. + + + Failed to update user login name. + + Mailbox primary e-mail address has been changed. @@ -3260,6 +3276,9 @@ Users per Organization + + Allow to Change UserPrincipalName + Domains per Organization @@ -5072,6 +5091,9 @@ Cannot delete Lync User, the following errors have been occured: + + Unabled to add plan + General Lync User settings have been successfully updated. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/BlackBerryUsers.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/BlackBerryUsers.ascx.resx index 6afe7e29..c1665e22 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/BlackBerryUsers.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/BlackBerryUsers.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Add BlackBerry User @@ -139,6 +139,6 @@ BlackBerry users - The BlackBerry solution allows mobile users to access communications and information wirelessly, including Microsoft Exchange email, calendar, contacts and scheduling, mobile phone, text messaging, instant messaging, internet and intranet access. + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/CreateNewBlackBerryUser.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/CreateNewBlackBerryUser.ascx.resx index 1fade90a..928b8630 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/CreateNewBlackBerryUser.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/CreateNewBlackBerryUser.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ShowProgressDialog('Creating BlackBerry user...'); @@ -130,6 +130,6 @@ BlackBarry Users - Please specify an existing Microsoft Exchange mailbox for a new BlackBerry user. + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/EditBlackBerryUser.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/EditBlackBerryUser.ascx.resx index 5162e334..0ee36b50 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/EditBlackBerryUser.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/BlackBerry/App_LocalResources/EditBlackBerryUser.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 if (confirm('Are you sure you want to delete the user?')){ShowProgressDialog('Deleting BlackBerry user...');return true;} else {return false}; @@ -157,6 +157,6 @@ BlackBerry User - Specify here a short term password which will be used to active the account(s) wirelessly. The password will be created when the account is activated or if the activation does not succeed before the expiration time. + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMOrganizationDetails.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMOrganizationDetails.ascx.resx index 53052dcc..38651d02 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMOrganizationDetails.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMOrganizationDetails.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ShowProgressDialog('Creating CRM Organization...'); @@ -133,8 +133,7 @@ Failed - <p>CRM organization represents the top level of the Microsoft Dynamics CRM business hierarchy. The organization can be a specific business, holding company, or corporation. The organization is divided into business units.</p><p>The base currency is used for financial data, such as reporting, profit and loss statements, and balance sheets. After the base currency is set, it cannot be changed.</p><br/> -<p>The collation defines comparison and sort-ordering for items. After the collation is set, it cannot be changed.</p> + Administrator: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMUserRoles.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMUserRoles.ascx.resx index 86757b9e..d97317a6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMUserRoles.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMUserRoles.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Display Name: @@ -139,9 +139,7 @@ CRM User roles - <p>How a user accesses data is determined by a combination of the user license, security role, business unit and one or more teams.</p> - -<p>Security roles are predefined groups of common privileges based on the types of tasks users perform. The security roles listed are those that have been created for the business unit associated with the user. Note that this means users can be assigned only the security roles for the business unit with which they have been associated.</p> + Enable diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMUsers.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMUsers.ascx.resx index b79e21ce..a8bdd7d4 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMUsers.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CRMUsers.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Create new CRM user @@ -145,6 +145,6 @@ Primary Email Address - <p>CRM user is any person who works for a business unit who uses the Microsoft Dynamics CRM application.</p> <p>Each user has a user account. Included in the user's account is information such as the user's telephone numbers, e-mail address, and a link to the user's manager. </p> <p>Each user corresponds to a user in the Active Directory for that organization.</p><p>You can disable a user's record to prevent the user from being able to access Microsoft Dynamics CRM. You can only disable a user record, not delete it.</p> + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CreateCRMUser.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CreateCRMUser.ascx.resx index 4b6ab3b2..361c1c53 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CreateCRMUser.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/CRM/App_LocalResources/CreateCRMUser.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Create CRM User @@ -130,6 +130,6 @@ Create New CRM User - CRM user is any person who works for a business unit who uses the Microsoft Dynamics CRM application. Each user corresponds to a user in the Active Directory for that organization. All users must be associated with only one business unit. This association controls which customer data the user will have access to. + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeActiveSyncSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeActiveSyncSettings.ascx.resx index 7a93b328..23412adb 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeActiveSyncSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeActiveSyncSettings.ascx.resx @@ -151,9 +151,7 @@ Windows SharePoint Services - <p>Exchange Server enables users who have mobile devices to synchronize mailbox data by using Exchange ActiveSync. Users can synchronize e-mail, contacts, calendars, and task folders. </p><p> -ActiveSync mailbox policy allows you to apply a common set of security settings to all users in organization. -</p> + Refresh interval: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeAddDomainName.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeAddDomainName.ascx.resx index 1b687b23..5068ac02 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeAddDomainName.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeAddDomainName.ascx.resx @@ -121,7 +121,7 @@ Cancel - Select a domain name, e.g. "mydomain.com" or "sub.mydomain.com" + Add Domain Name diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeAddMailboxPlan.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeAddMailboxPlan.ascx.resx index 0b7d21df..5de71b1e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeAddMailboxPlan.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeAddMailboxPlan.ascx.resx @@ -136,7 +136,7 @@ POP3 - <p> A Mailbox plan is a template that defines the characteristics of a mailbox </p> <p>The mailbox plan name needs to be unique. A mailbox plan cannot be modified. In case a mailbox needs a mailbox plan with another characteristics, a new mailbox plan needs to be created and assigned to the mailbox. A mailbox plan can only be deleted when the plan is not assigned to any mailboxes. </p><p> Empty value indicates <b>'Unlimited'</b>, percentages have to be a value between 0 and 100 (a value of 0 can block the mailbox from sending and receiving email) </p> <p> Unllimited values can only be used when the hosting plan allows to do so</p> + days diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContactGeneralSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContactGeneralSettings.ascx.resx index 68b60ab8..ac4b01a6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContactGeneralSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContactGeneralSettings.ascx.resx @@ -127,7 +127,7 @@ Hide from Address Book - <p><b>Display Name</b> will be shown in the GAL in Outlook and OWA.</p><p>You can specify both internal and external e-mail addresses in "E-Mail Address" field.</p><p>You can specify contact's manager to build organizational structure of your company.</p> + Address: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContactMailFlowSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContactMailFlowSettings.ascx.resx index 9ea225b7..4ca5a9ec 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContactMailFlowSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContactMailFlowSettings.ascx.resx @@ -127,7 +127,7 @@ Require that all senders are authenticated - <p>When editing Accepted and Rejected lists of accounts, please make sure that the same account (mailbox, contact or distribution list) is not included in both lists.</p> + Edit Contact diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContacts.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContacts.ascx.resx index 20eeb913..af19fe41 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContacts.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeContacts.ascx.resx @@ -139,7 +139,7 @@ E-mail Address - <p><b>Company Contacts</b> will be visible in GAL to all members of Exchange organization.</p><p>You can also create contacts to use them as forwarding accounts in mailbox properties.</p> + No contacts have been created. To create a new contact click "Create New Contact" button. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateContact.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateContact.ascx.resx index 2048b51e..088a6ac4 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateContact.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateContact.ascx.resx @@ -124,7 +124,7 @@ Create Contact - <p><b>Display Name</b> will be shown in the GAL in Outlook and OWA.</p><p>You can specify both internal and external e-mail addresses in "E-Mail Address" field.</p> + Display Name: * diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateDistributionList.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateDistributionList.ascx.resx index c089926b..b2b55482 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateDistributionList.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateDistributionList.ascx.resx @@ -124,7 +124,7 @@ Create Distribution List - <p><b>Display Name</b> will be shown in the GAL in Outlook and OWA.</p><p>You can add new Domain Names on "Domain Names" page. </p><p><b>Primary E-Mail Address</b> is shown in the GAL and in "From" field of all messages sent from this DL.</p> + E-mail Address: * diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateMailbox.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateMailbox.ascx.resx index 4c537ca9..a00e1a83 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateMailbox.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreateMailbox.ascx.resx @@ -130,13 +130,7 @@ Equipment Mailbox - <p><b>Display Name</b> is a “friendly” name used by other programs, such as Microsoft Exchange or SharePoint.</p> - -<p><b>E-Mail Address</b> is a User Principal Name (UPN). It is used as a logon name in Outlook, Outlook Web Access (OWA) or SharePoint.</p> - -<p>New organization domains can be added on "Domain Names" page.</p> - -<p>Make sure your password is strong enough, i.e. contains lower and capital letters, numbers and symbols. + Create mailbox for new user diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreatePublicFolder.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreatePublicFolder.ascx.resx index cedaa302..5fe4ccdc 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreatePublicFolder.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeCreatePublicFolder.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ShowProgressDialog('Creating public folder...'); @@ -127,7 +127,7 @@ Mail Enabled Public Folder - <p>You can create both "General Purpose" and "Mail Enabled" public folders. You can post and send messages to mail enabled public folder, but only post new messages to general purpose folder.</p> + E-mail Address: * diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListEmailAddresses.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListEmailAddresses.ascx.resx index 56dab2cf..8d02675c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListEmailAddresses.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListEmailAddresses.ascx.resx @@ -127,7 +127,7 @@ Set As Primary - <b>Primary E-Mail Address</b> is a User Principal Name (UPN). It will be used as a login in Outlook and Outlook Web Access (OWA). Also, Primary E-Mail Address will be shown in "From" field of messages sent from this mailbox.</p><p>You can add new Domain Names on "Domain Names" page.</p><p>E-mail addresses of all Exchange accounts should be unique across the organization. You cannot add the same e-mail address to several accounts.</p> + E-mail Address diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListGeneralSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListGeneralSettings.ascx.resx index 56de9930..8b353baf 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListGeneralSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListGeneralSettings.ascx.resx @@ -127,7 +127,7 @@ Hide from Address Book - <p><b>Display Name</b> will be shown in the GAL in Outlook and OWA.</p><p>You can specify distribution list's manager to build organizational structure of your company.</p> + Managed By: * diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListMailFlowSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListMailFlowSettings.ascx.resx index 3df43c86..b8d8140e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListMailFlowSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListMailFlowSettings.ascx.resx @@ -127,7 +127,7 @@ Require that all senders are authenticated - <p>When editing Accepted and Rejected lists of accounts, please make sure that the same account (mailbox, contact or distribution list) is not included in both lists.</p> + Edit Distribution List diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListPermissions.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListPermissions.ascx.resx index 9475179a..5814bfdf 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListPermissions.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionListPermissions.ascx.resx @@ -112,13 +112,13 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - <p>When you grant <b>Full Access</b> permission to a user, that user can open this mailbox and access all of its content.</p> <br><p>When you grant <b>Send As</b> permission to a user, that user can send messages as this mailbox. </p><br><p>We do not recommend to use this setting together “Send on behalf” (“Send as”) – it may work unpredictable.</p> + Grant this permission to: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionLists.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionLists.ascx.resx index b5f5a8ad..44821628 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionLists.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDistributionLists.ascx.resx @@ -139,7 +139,7 @@ E-mail Address - <p><b>Distribution List</b> is a group of mailboxes, contacts and other distribution lists. Distribution lists are ideal for creating "Sales", "Support" and other "virtual" organization-wide mailboxes.</p><p>Each distribution list can have any number of e-mail Addresses. These e-mail addresses will be used for receiving incoming messages and distributing them to all DL members.</p><p><b>Primary E-Mail Address</b> is shown in the GAL and in "From" field of all messages sent from this DL.</p> + No distribution lists have been created. To create a new distribution list click "Create New Distribution List" button. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDomainNames.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDomainNames.ascx.resx index 8775c057..cb83dba8 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDomainNames.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDomainNames.ascx.resx @@ -142,9 +142,7 @@ Domain Name - <p>Each organization can have several domain names. These domain names are used as part of the primary e-mail address (UPN) of the new accounts. Exchange-enabled organizations use domain name when creating e-mail addresses for mailboxes, and distribution lists. Domain name is also used when creating new site collection in SharePoint.</p> -<p>Default domain name is selected by default when creating a new e-mail address. You can always change default domain name and it will not affect existing accounts.</p> -<p>For each domain name a corresponding DNS Zone is created. You can edit DNS zone records by clicking domain name link. If you are unsure about the structure of DNS zone, please do not modify zone records.</p> + Total Domain Names Used: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDomainRecords.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDomainRecords.ascx.resx index 3096f457..bf3710dc 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDomainRecords.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeDomainRecords.ascx.resx @@ -130,7 +130,7 @@ Save - <p>For each domain name a corresponding DNS Zone is created. If you are unsure about the structure of DNS zone, please do not modify zone records.</p> + No DNS records defined. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxEmailAddresses.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxEmailAddresses.ascx.resx index 31627731..51e678d5 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxEmailAddresses.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxEmailAddresses.ascx.resx @@ -130,7 +130,7 @@ Allow these settings to be managed from <b>Personal Mailbox Manager</b> - <b>Primary E-Mail Address</b> is a User Principal Name (UPN). It will be used as a login in Outlook and Outlook Web Access (OWA). Also, Primary E-Mail Address will be shown in "From" field of messages sent from this mailbox.</p><p>You can add new Domain Names on "Domain Names" page. </p><p>E-mail addresses of all Exchange accounts should be unique across the organization. You cannot add the same e-mail address to several accounts.</p> + E-mail Address @@ -139,7 +139,7 @@ The list of e-mails is empty. Add at least one e-mail address. - Primary E-mail Address (UPN) + Primary E-mail Address Add New E-mail Address diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxGeneralSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxGeneralSettings.ascx.resx index 952e1037..cb0a8c7b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxGeneralSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxGeneralSettings.ascx.resx @@ -133,7 +133,7 @@ Allow these settings to be managed from <b>Personal Mailbox Manager</b> - <p>The General tab displays general information about the mailbox Use this tab to view or modify the mailbox characteristics such as size and show in your address book in the Exchange address lists. You can also specify whether to disable the mailbox user.</p> + Mailbox plan: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMailFlowSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMailFlowSettings.ascx.resx index 3dfe91c1..9ed871cb 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMailFlowSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMailFlowSettings.ascx.resx @@ -136,7 +136,7 @@ Require that all senders are authenticated - <p>When "Deliver messages to both forwarding address and mailbox" checkbox is unchecked all incoming mail will be delivered to forwarding e-mail and deleted from local mailbox.</p><p>When editing Accepted and Rejected lists of accounts, please make sure that the same account (mailbox, contact or distribution list) is not included in both lists.</p> + Forward To: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMobile.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMobile.ascx.resx index 7b809afa..28ea3657 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMobile.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMobile.ascx.resx @@ -133,7 +133,7 @@ There are no mobile devices. - <p>Manage mobile devices here.</p><p>To add a new device, begin a partnership with Microsoft Exchange from the device and it will appear in the device list.</p><p>You can remove devices that you are no longer using. If you forget your device password, you can access it here. If you lose your phone or mobile device, you can initiate a remote device wipe to protect your information.</p> + Last Sync Time diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMobileDetails.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMobileDetails.ascx.resx index 56efeeba..13302e20 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMobileDetails.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxMobileDetails.ascx.resx @@ -130,7 +130,7 @@ Wipe All Data from Device - <p>Manage the mobile device here.</p><p>If you forget your device password, you can access it here. If you lose your phone or mobile device, you can initiate a remote device wipe to protect your information . You can also cancel a wipe request if it was initiated by accident or the device was found subsequently.</p> + Device wipe acnowledge time: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPermissions.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPermissions.ascx.resx index 5e891cc2..9c1cac80 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPermissions.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPermissions.ascx.resx @@ -124,7 +124,7 @@ Save Changes - <p>When you grant <b>Full Access</b> permission to a user, that user can open this mailbox and access all of its content.</p> <br><p>When you grant <b>Send As</b> permission to a user, that user can send messages as this mailbox. </p> <br><p>We do not recommend to use this setting together “Send on behalf” (“Send as”) – it may work unpredictable</p> + Grant this permission to: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPlans.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPlans.ascx.resx index 714cad30..f2b0cc1d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPlans.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxPlans.ascx.resx @@ -145,7 +145,7 @@ No mailbox plans have been added yet. To add a new mailbox plan click "Add New Mailbox plan" button. - <p> A Mailbox plan is a template that defines the characteristics of a mailbox </p> <p>The mailbox plan name needs to be unique. A mailbox plan cannot be modified. In case a mailbox needs a mailbox plan with another characteristics, a new mailbox plan needs to be created and assigned to the mailbox. A mailbox plan can only be deleted when the plan is not assigned to any mailboxes. </p> + Source plan: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxSetupInstructions.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxSetupInstructions.ascx.resx index de0dd29b..cb156567 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxSetupInstructions.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxSetupInstructions.ascx.resx @@ -121,7 +121,7 @@ Send - <p>You can send setup instructions to the newly created mailbox user.</p> + CC: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxes.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxes.ascx.resx index a254bede..ef18271b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxes.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeMailboxes.ascx.resx @@ -157,13 +157,7 @@ Subscriber - <p><b>Mailboxes</b> are used to receive and send electronic messages. Each mailbox is a separate Exchange account which may be a person, room or inventory unit.</p> - -<p><b>Primary E-Mail Address</b> is a User Principal Name (UPN). It is used as a logon name in Outlook, Outlook Web Access (OWA) or SharePoint. Also, Primary E-Mail Address is shown in "From" field of messages sent from this mailbox.</p> - -<p>You can always change your primary e-mail address on "E-Mail Addresses" tab of mailbox settings.</p> - -<p>Note that deleting mailbox will not delete corresponding Active Directory account. You can delete Active Directory account on “Users” page.</p> + Total Mailboxes Created: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderEmailAddresses.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderEmailAddresses.ascx.resx index 0cb25609..090b5944 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderEmailAddresses.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderEmailAddresses.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Add E-mail Address @@ -127,7 +127,7 @@ Set As Primary - <b>Primary E-Mail Address</b> is a User Principal Name (UPN). It will be used as a login in Outlook 2003/2007 and Outlook Web Access (OWA). Also, Primary E-Mail Address will be shown in "From" field of messages sent from this mailbox.</p><p>You can add new Domain Names on "Domain Names" page. We always provide you with a free domain that would allow your organization migrating to Exchange as soon as possible.</p><p>E-mail addresses of all Exchange accounts should be unique across the organization. You cannot add the same e-mail address to several accounts.</p> + E-mail Address diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderGeneralSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderGeneralSettings.ascx.resx index f8ba156f..e7310e41 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderGeneralSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderGeneralSettings.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ShowProgressDialog('Updating public folder settings...'); @@ -130,7 +130,7 @@ Mail Enabled Public Folder - <p>To rename public folder just specify its new name in "Folder Name" folder.</p><p><b>Authors</b> list contains Exchange mailboxes that are able to post/send messages to public folder. All other organization members can view folder contents only.</p> + Authors: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderMailEnable.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderMailEnable.ascx.resx index 06dbc71b..13bc78db 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderMailEnable.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderMailEnable.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Cancel @@ -127,7 +127,7 @@ Enable Mail Public Folder - To create a new public folder ... + E-mail Address: * diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderMailFlowSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderMailFlowSettings.ascx.resx index e0913b81..b10052b3 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderMailFlowSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolderMailFlowSettings.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ShowProgressDialog('Updating public folder settings...'); @@ -127,7 +127,7 @@ Require that all senders are authenticated - <p>When editing Accepted and Rejected lists of accounts, please make sure that the same account (mailbox, contact or distribution list) is not included in both lists.</p> + Edit Public Folder diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolders.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolders.ascx.resx index 51a809dc..36e3aecc 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolders.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangePublicFolders.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Create New Public Folder @@ -127,7 +127,7 @@ Delete Selected Folders - <p><b>Public Folders</b> can be used to share various information across Exchange organization.</p><p>All public folders of each Exchange organization are nested within a default root organization folder which is not visible to other organizations and which you cannot maintain.</p><p>If you need to delete a whole branch of folders you may check only top ones.</p> + Total Public Folders Created: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeStorageUsage.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeStorageUsage.ascx.resx index 4046f8fd..71773c43 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeStorageUsage.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeStorageUsage.ascx.resx @@ -127,7 +127,7 @@ ShowProgressDialog('Please wait...'); - <p>Organization disk space actual usage is calculated on timely basis (usually once a day). You can recalculate it right now by clicking "Recalculate Disk Space" button.</p><p>Click on the link with used disk space to see actual usage breakdown by all organization mailboxes.</p> + Allocated Disk Space (MB): diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeStorageUsageBreakdown.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeStorageUsageBreakdown.ascx.resx index 6688dce6..c5860ce9 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeStorageUsageBreakdown.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/ExchangeStorageUsageBreakdown.ascx.resx @@ -121,7 +121,7 @@ OK - <p> + There are no public folders in the organization. diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationAddDomainName.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationAddDomainName.ascx.resx index 1b687b23..5068ac02 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationAddDomainName.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationAddDomainName.ascx.resx @@ -121,7 +121,7 @@ Cancel - Select a domain name, e.g. "mydomain.com" or "sub.mydomain.com" + Add Domain Name diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationCreateOrganization.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationCreateOrganization.ascx.resx index 0f6fe988..484c8c47 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationCreateOrganization.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationCreateOrganization.ascx.resx @@ -124,7 +124,7 @@ Create Organization - <p><b>Organization name</b> is used just as display name for references purposes. It will not be used somewhere on Exchange Server.</p> <p><b>Organization ID</b> is an unique organization identifier. Organization ID will be used as GAL name.</p> + Organization ID: * diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationCreateUser.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationCreateUser.ascx.resx index 7754d53e..2737698d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationCreateUser.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationCreateUser.ascx.resx @@ -127,13 +127,7 @@ Send Summary Letter - <p><b>Display Name</b> is a “friendly” name used by other programs, such as Microsoft Exchange or SharePoint.</p> - -<p><b>E-Mail Address</b> is a User Principal Name (UPN). It is used as a logon name in Outlook, Outlook Web Access (OWA) or SharePoint.</p> - -<p>New organization domains can be added on "Domain Names" page.</p> - -<p>Make sure your password is strong enough, i.e. contains lower and capital letters, numbers and symbols.</p> + E-mail Address: * diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationDomainNames.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationDomainNames.ascx.resx index 8775c057..cb83dba8 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationDomainNames.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationDomainNames.ascx.resx @@ -142,9 +142,7 @@ Domain Name - <p>Each organization can have several domain names. These domain names are used as part of the primary e-mail address (UPN) of the new accounts. Exchange-enabled organizations use domain name when creating e-mail addresses for mailboxes, and distribution lists. Domain name is also used when creating new site collection in SharePoint.</p> -<p>Default domain name is selected by default when creating a new e-mail address. You can always change default domain name and it will not affect existing accounts.</p> -<p>For each domain name a corresponding DNS Zone is created. You can edit DNS zone records by clicking domain name link. If you are unsure about the structure of DNS zone, please do not modify zone records.</p> + Total Domain Names Used: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationHome.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationHome.ascx.resx index 9c8ad7bf..7bd2b8e7 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationHome.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationHome.ascx.resx @@ -118,9 +118,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - <p>Welcome to the organization home page!</p> -<p>Using the left menu you can manage organization domain names and users.</p> -<p>Organization statistics displays current status of the organization.</p> + Created: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserGeneralSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserGeneralSettings.ascx.resx index 6946695e..fb511e76 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserGeneralSettings.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserGeneralSettings.ascx.resx @@ -133,9 +133,7 @@ Set Password - <p><b>Display Name</b> is a “friendly” name used by other programs, such as Microsoft Exchange or SharePoint.</p> -<p>Make sure your password is strong enough, i.e. contains lower and capital letters, numbers and symbols.</p> -<p>You can specify manager account to build organizational structure of your company.</p> + Address: @@ -239,4 +237,13 @@ Login Name: + + Set Password + + + Set Login Name + + + Update Services + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserSetupInstructions.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserSetupInstructions.ascx.resx index d59541dc..b6686d03 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserSetupInstructions.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUserSetupInstructions.ascx.resx @@ -121,7 +121,7 @@ Send - <p>You can send setup instructions to the newly created user.</p> + CC: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUsers.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUsers.ascx.resx index 3923f30b..69a7581f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUsers.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/OrganizationUsers.ascx.resx @@ -157,13 +157,7 @@ Primary E-mail Address - <p>Active Directory user accounts are used to:</p> -<p>• Authenticate the identity of a user.<br> -• Authorize or deny access to domain resources.<br> -• Administer other security principals.<br> -• Audit actions performed using the user account.</p> -<p>Primary E-Mail Address is a User Principal Name (UPN). It is used as a logon name in Outlook, Outlook Web Access (OWA) or SharePoint.</p> -<p>User account can also represent Exchange mailbox, which may be a person, room or inventory unit.</p> + Total Users Created in this Organization: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/Organizations.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/Organizations.ascx.resx index f87c9b7d..9a44ec38 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/Organizations.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/App_LocalResources/Organizations.ascx.resx @@ -157,9 +157,7 @@ Owner - <p><b>Organization</b> is a group of Active Directory users, contacts and groups.<br><br> -All accounts within one organization are located in the same Organizational Unit and are not visible to members of other organizations.<br><br> -Exchange-enabled organization has its own Global Address List (GAL) and Offline Address Book (OAB). Mailboxes, contacts, and distribution lists of Exchange-enabled organization share the same GAL and OAB</p> + Total Organizations Created: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeContactGeneralSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeContactGeneralSettings.ascx index 47c26b55..cd5d026b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeContactGeneralSettings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeContactGeneralSettings.ascx @@ -78,8 +78,17 @@ + + + + + + +
+ +
- @@ -121,7 +130,7 @@ - @@ -165,7 +174,7 @@ - @@ -204,14 +213,6 @@ - - - - - -
- -
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeContactGeneralSettings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeContactGeneralSettings.ascx.designer.cs index 6186bb22..60050e3b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeContactGeneralSettings.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeContactGeneralSettings.ascx.designer.cs @@ -1,3 +1,31 @@ +// Copyright (c) 2012, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + //------------------------------------------------------------------------------ // // This code was generated by a tool. @@ -228,6 +256,24 @@ namespace WebsitePanel.Portal.ExchangeServer { /// protected global::System.Web.UI.WebControls.TextBox txtLastName; + /// + /// locNotes control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize locNotes; + + /// + /// txtNotes control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtNotes; + /// /// secCompanyInfo control. /// @@ -570,24 +616,6 @@ namespace WebsitePanel.Portal.ExchangeServer { /// protected global::WebsitePanel.Portal.ExchangeServer.UserControls.CountrySelector country; - /// - /// locNotes control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Localize locNotes; - - /// - /// txtNotes control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtNotes; - /// /// btnSave control. /// @@ -605,14 +633,5 @@ namespace WebsitePanel.Portal.ExchangeServer { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary1; - - /// - /// FormComments control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Localize FormComments; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx.cs index 314bf130..18f4b688 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx.cs @@ -103,8 +103,7 @@ namespace WebsitePanel.Portal.ExchangeServer int result = ES.Services.Organizations.DeleteOrganizationDomain(PanelRequest.ItemID, domainId); if (result < 0) { - messageBox.ShowResultMessage(result); - return; + messageBox.ShowErrorMessage("EXCHANGE_UNABLE_TO_DELETE_DOMAIN"); } // rebind domains diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx index ce2359a1..6f74c098 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx @@ -73,7 +73,7 @@ - + @@ -87,7 +87,7 @@
  - +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx.designer.cs index 4a04d015..4f605860 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx.designer.cs @@ -1,3 +1,31 @@ +// Copyright (c) 2012, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + //------------------------------------------------------------------------------ // // This code was generated by a tool. @@ -182,14 +210,5 @@ namespace WebsitePanel.Portal.ExchangeServer { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.CheckBox chkPmmAllowed; - - /// - /// FormComments control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Localize FormComments; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx index 35443356..09dc751d 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx @@ -71,7 +71,7 @@ - <%# Eval("UserPrincipalName") %> diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.cs index 1fd56a34..bc61fa59 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx.cs @@ -103,8 +103,7 @@ namespace WebsitePanel.Portal.ExchangeServer int result = ES.Services.Organizations.DeleteOrganizationDomain(PanelRequest.ItemID, domainId); if (result < 0) { - messageBox.ShowResultMessage(result); - return; + messageBox.ShowErrorMessage("EXCHANGE_UNABLE_TO_DELETE_DOMAIN"); } // rebind domains diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx index 4ee2563c..8fe84227 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx @@ -4,10 +4,11 @@ <%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %> <%@ Register Src="../UserControls/PasswordControl.ascx" TagName="PasswordControl" TagPrefix="wsp" %> -<%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %> +<%@ Register Src="../UserControls/CollapsiblePanel.ascx" TagName="CollapsiblePanel" TagPrefix="wsp" %> <%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %> <%@ Register Src="UserControls/Menu.ascx" TagName="Menu" TagPrefix="wsp" %> <%@ Register Src="UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %> +<%@ Register Src="UserControls/EmailAddress.ascx" TagName="EmailAddress" TagPrefix="wsp" %> @@ -43,7 +44,18 @@ - + + + @@ -58,8 +70,13 @@ + @@ -67,9 +84,6 @@
+ + + + + + + +
- + + + +
-

@@ -102,8 +116,17 @@
+ + + + + +
+ +
+ - @@ -142,7 +165,7 @@ - @@ -187,7 +210,7 @@ - @@ -225,21 +248,10 @@ - - - - - -
- -
- - - - diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.cs index 627d7d89..3ea2ae6c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.cs @@ -27,6 +27,7 @@ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using System; +using System.Web.UI.WebControls; using WebsitePanel.EnterpriseServer; using WebsitePanel.Providers.HostedSolution; using WebsitePanel.Providers.ResultObjects; @@ -63,8 +64,6 @@ namespace WebsitePanel.Portal.HostedSolution } } - password.EditMode = password.ValidationEnabled = false; - // get settings OrganizationUser user = ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID); @@ -120,6 +119,67 @@ namespace WebsitePanel.Portal.HostedSolution } } + + if (cntx.Quotas.ContainsKey(Quotas.ORGANIZATION_ALLOWCHANGEUPN)) + { + if (cntx.Quotas[Quotas.ORGANIZATION_ALLOWCHANGEUPN].QuotaAllocatedValue != 1) + { + lblUserPrincipalName.Visible = true; + upn.Visible = false; + ddlEmailAddresses.Visible = false; + btnSetUserPrincipalName.Visible = false; + chkInherit.Visible = false; + } + else + { + lblUserPrincipalName.Visible = false; + upn.Visible = false; + ddlEmailAddresses.Visible = false; + btnSetUserPrincipalName.Visible = true; + chkInherit.Visible = true; + if (user.AccountType == ExchangeAccountType.Mailbox) + { + ddlEmailAddresses.Visible = true; + WebsitePanel.EnterpriseServer.ExchangeEmailAddress[] emails = ES.Services.ExchangeServer.GetMailboxEmailAddresses(PanelRequest.ItemID, PanelRequest.AccountID); + + foreach (WebsitePanel.EnterpriseServer.ExchangeEmailAddress mail in emails) + { + ListItem li = new ListItem(); + li.Text = mail.EmailAddress; + li.Value = mail.EmailAddress; + li.Selected = mail.IsPrimary; + ddlEmailAddresses.Items.Add(li); + } + + foreach (ListItem li in ddlEmailAddresses.Items) + { + if (li.Value == user.UserPrincipalName) + { + ddlEmailAddresses.ClearSelection(); + li.Selected = true; + break; + } + } + + } + else + { + upn.Visible = true; + if (!string.IsNullOrEmpty(user.UserPrincipalName)) + { + string[] Tmp = user.UserPrincipalName.Split('@'); + upn.AccountName = Tmp[0]; + + if (Tmp.Length > 1) + { + upn.DomainName = Tmp[1]; + } + } + } + + } + } + if (user.Locked) chkLocked.Enabled = true; else @@ -127,6 +187,8 @@ namespace WebsitePanel.Portal.HostedSolution chkLocked.Checked = user.Locked; + password.ValidationEnabled = true; + password.Password = string.Empty; } catch (Exception ex) { @@ -139,17 +201,12 @@ namespace WebsitePanel.Portal.HostedSolution if (!Page.IsValid) return; - string pwd = password.Password; - - if (!chkSetPassword.Checked) - pwd = string.Empty; - try { int result = ES.Services.Organizations.SetUserGeneralSettings( PanelRequest.ItemID, PanelRequest.AccountID, txtDisplayName.Text, - pwd, + string.Empty, false, chkDisable.Checked, chkLocked.Checked, @@ -204,10 +261,66 @@ namespace WebsitePanel.Portal.HostedSolution SaveSettings(); } - protected void chkSetPassword_CheckedChanged(object sender, EventArgs e) + protected void btnSetUserPrincipalName_Click(object sender, EventArgs e) { - password.EditMode = password.ValidationEnabled = chkSetPassword.Checked; + string userPrincipalName = string.Empty; + + if (upn.Visible) + userPrincipalName = upn.Email; + else + if (ddlEmailAddresses.Visible) + userPrincipalName = (string)ddlEmailAddresses.SelectedValue; + + if (string.IsNullOrEmpty(userPrincipalName)) return; + + try + { + int result = ES.Services.Organizations.SetUserPrincipalName( + PanelRequest.ItemID, PanelRequest.AccountID, + userPrincipalName.ToLower(), + chkInherit.Checked); + + if (result < 0) + { + messageBox.ShowResultMessage(result); + return; + } + + messageBox.ShowSuccessMessage("ORGANIZATION_SET_USER_USERPRINCIPALNAME"); + } + catch (Exception ex) + { + messageBox.ShowErrorMessage("ORGANIZATION_SET_USER_USERPRINCIPALNAME", ex); + } + } + + protected void btnSetUserPassword_Click(object sender, EventArgs e) + { + + if (!Page.IsValid) + return; + + try + { + int result = ES.Services.Organizations.SetUserPassword( + PanelRequest.ItemID, PanelRequest.AccountID, + password.Password); + + if (result < 0) + { + messageBox.ShowResultMessage(result); + return; + } + + messageBox.ShowSuccessMessage("ORGANIZATION_SET_USER_PASSWORD"); + } + catch (Exception ex) + { + messageBox.ShowErrorMessage("ORGANIZATION_SET_USER_PASSWORD", ex); + } + + } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.designer.cs index 2295ee44..8f8af98e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx.designer.cs @@ -139,6 +139,42 @@ namespace WebsitePanel.Portal.HostedSolution { /// protected global::System.Web.UI.WebControls.Label lblUserPrincipalName; + /// + /// upn control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.ExchangeServer.UserControls.EmailAddress upn; + + /// + /// ddlEmailAddresses control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlEmailAddresses; + + /// + /// btnSetUserPrincipalName control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnSetUserPrincipalName; + + /// + /// chkInherit control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox chkInherit; + /// /// locDisplayName control. /// @@ -185,13 +221,22 @@ namespace WebsitePanel.Portal.HostedSolution { protected global::WebsitePanel.Portal.PasswordControl password; /// - /// chkSetPassword control. + /// btnSetUserPassword control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.CheckBox chkSetPassword; + protected global::System.Web.UI.WebControls.Button btnSetUserPassword; + + /// + /// ValidationSummary2 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary2; /// /// chkDisable control. @@ -301,6 +346,24 @@ namespace WebsitePanel.Portal.HostedSolution { /// protected global::System.Web.UI.WebControls.TextBox txtExternalEmailAddress; + /// + /// locNotes control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Localize locNotes; + + /// + /// txtNotes control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtNotes; + /// /// secCompanyInfo control. /// @@ -643,24 +706,6 @@ namespace WebsitePanel.Portal.HostedSolution { /// protected global::WebsitePanel.Portal.ExchangeServer.UserControls.CountrySelector country; - /// - /// locNotes control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Localize locNotes; - - /// - /// txtNotes control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtNotes; - /// /// secAdvanced control. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/DomainSelector.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/DomainSelector.ascx.cs index c56e96da..9b421295 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/DomainSelector.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/DomainSelector.ascx.cs @@ -37,6 +37,18 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls public string DomainName { get { return ddlDomain.SelectedItem.Text; } + set + { + foreach (ListItem li in ddlDomain.Items) + { + if (li.Value == value) + { + ddlDomain.ClearSelection(); + li.Selected = true; + break; + } + } + } } public int DomainId diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/EmailAddress.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/EmailAddress.ascx.cs index 39c9b920..9e19732f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/EmailAddress.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/EmailAddress.ascx.cs @@ -69,13 +69,17 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls { return domain.DomainName; } + set + { + domain.DomainName = value; + } } public string Email { get { - return AccountName + "@" + DomainName; + return string.Format("{0}@{1}",AccountName, DomainName).ToLower(); } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncAddLyncUserPlan.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncAddLyncUserPlan.ascx.resx index daee76c2..df0d9cbe 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncAddLyncUserPlan.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncAddLyncUserPlan.ascx.resx @@ -118,7 +118,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - <p> A plan is a template that defines the characteristics of a lync users </p> <p>The plan name needs to be unique. A plan cannot be modified. In case a user needs a plan with another characteristics, a new plan needs to be created and assigned to the user. A plan can only be deleted when the plan is not assigned to any users. </p> + Add Lync User Plan diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncCreateUser.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncCreateUser.ascx.resx index fd626cd7..1d274881 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncCreateUser.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncCreateUser.ascx.resx @@ -124,7 +124,7 @@ Create - Select an existing Organization user and click the “Create” button to enable an individual user account for Microsoft Lync Server. + Display name* : diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncEditUser.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncEditUser.ascx.resx index efcae705..8405529f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncEditUser.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncEditUser.ascx.resx @@ -124,7 +124,7 @@ Save changes - <p> A plan is a template that defines the capabilities of a lync user. In order to change the plan assigned to this user, select a plan and click the Save Changes button </p> + Display name: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncFederationDomains.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncFederationDomains.ascx.resx index e60864dd..a45d8f91 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncFederationDomains.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncFederationDomains.ascx.resx @@ -136,11 +136,7 @@ Domain Name - <p>By adding a federation domain you allow your users, that are enabled for federation, to interact through Lync with users from the specified domain. Your users as well as the users from the federated domain will see eachother status. </p> - -<p>Federation is a mutual agreement between you and your federation partner (owner of the domain you want to federate with). Once you have added the federation domain to your list, your partner will need to do the same from his side</p> - - + Lync Federation Domains diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUserPlans.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUserPlans.ascx.resx index 844f8e76..ab50c0af 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUserPlans.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUserPlans.ascx.resx @@ -142,7 +142,7 @@ No plans have been added yet. To add a new plan click "Add New Plan" button. - <p> A plan is a template that defines the capabilities of a lync users </p> <p>The plan name needs to be unique. A plan cannot be modified. In case a lync user needs a plan with another characteristics, a new plan needs to be created and assigned to the lync user. A plan can only be deleted when the plan is not assigned to any lync users. </p> + Source plan: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUsers.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUsers.ascx.resx index 748a13ee..8c44e59c 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUsers.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/App_LocalResources/LyncUsers.ascx.resx @@ -130,9 +130,7 @@ Login - <p>Microsoft Lync Server delivers unified communications to the users, including software-powered VoIP, Web and audio/video conferencing, and enterprise instant messaging.</p> -<p>Click the “Create Lync User” button to enable a user account for Microsoft Lync Server. </p> -<p>If you delete an account in Microsoft Lync Server, the account is no longer available for use with Microsoft Lync Server unless you enable the account again. When you delete an account, all Lync Server settings for the account are lost, so you must configure the account again after enabling.</p> + Display name diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncAddLyncUserPlan.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncAddLyncUserPlan.ascx.cs index 82648d9d..58072ca2 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncAddLyncUserPlan.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncAddLyncUserPlan.ascx.cs @@ -158,6 +158,7 @@ namespace WebsitePanel.Portal.Lync if (result < 0) { messageBox.ShowResultMessage(result); + messageBox.ShowErrorMessage("LYNC_UNABLE_TO_ADD_PLAN"); return; } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx index f94d5abd..1eba42da 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncUsers.ascx @@ -67,7 +67,7 @@ - <%# Eval("UserPrincipalName") %> diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx index 5da9df82..9ac249d9 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx @@ -1,2 +1,5 @@ <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="LyncUserSettings.ascx.cs" Inherits="WebsitePanel.Portal.Lync.UserControls.LyncUserSettings" %> - \ No newline at end of file +<%@ Register Src="../../ExchangeServer/UserControls/EmailAddress.ascx" TagName="EmailAddress" TagPrefix="wsp" %> + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.cs index c7b45afa..78dc4792 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.cs @@ -28,7 +28,9 @@ using System; using System.Web.UI.WebControls; -using EntServer = WebsitePanel.EnterpriseServer; +using WebsitePanel.EnterpriseServer; +using WebsitePanel.Providers.HostedSolution; +using WebsitePanel.Providers.ResultObjects; namespace WebsitePanel.Portal.Lync.UserControls { @@ -40,17 +42,50 @@ namespace WebsitePanel.Portal.Lync.UserControls public string sipAddress { - get { return ddlSipAddresses.SelectedItem.Value; } + get + { + if (ddlSipAddresses.Visible) + { + if ((ddlSipAddresses != null) && (ddlSipAddresses.SelectedItem != null)) + return ddlSipAddresses.SelectedItem.Value; + else + return string.Empty; + } + else + { + return email.Email; + } + } set { sipAddressToSelect = value; - foreach (ListItem li in ddlSipAddresses.Items) + + if (ddlSipAddresses.Visible) { - if (li.Value == value) + if ((ddlSipAddresses != null) && (ddlSipAddresses.Items != null)) { - ddlSipAddresses.ClearSelection(); - li.Selected = true; - break; + foreach (ListItem li in ddlSipAddresses.Items) + { + if (li.Value == value) + { + ddlSipAddresses.ClearSelection(); + li.Selected = true; + break; + } + } + } + } + else + { + if (!string.IsNullOrEmpty(value)) + { + string[] Tmp = value.Split('@'); + email.AccountName = Tmp[0]; + + if (Tmp.Length > 1) + { + email.DomainName = Tmp[1]; + } } } } @@ -76,25 +111,54 @@ namespace WebsitePanel.Portal.Lync.UserControls private void BindAddresses() { - EntServer.ExchangeEmailAddress[] emails = ES.Services.ExchangeServer.GetMailboxEmailAddresses(PanelRequest.ItemID, PanelRequest.AccountID); + OrganizationUser user = ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID); - foreach (EntServer.ExchangeEmailAddress email in emails) - { - ListItem li = new ListItem(); - li.Text = email.EmailAddress; - li.Value = email.EmailAddress; - li.Selected = email.IsPrimary; - ddlSipAddresses.Items.Add(li); - } + if (user == null) + return; - foreach (ListItem li in ddlSipAddresses.Items) + if (user.AccountType == ExchangeAccountType.Mailbox) { - if (li.Value == sipAddressToSelect) + email.Visible = false; + ddlSipAddresses.Visible = true; + + WebsitePanel.EnterpriseServer.ExchangeEmailAddress[] emails = ES.Services.ExchangeServer.GetMailboxEmailAddresses(PanelRequest.ItemID, PanelRequest.AccountID); + + foreach (WebsitePanel.EnterpriseServer.ExchangeEmailAddress mail in emails) { - ddlSipAddresses.ClearSelection(); - li.Selected = true; - break; + ListItem li = new ListItem(); + li.Text = mail.EmailAddress; + li.Value = mail.EmailAddress; + li.Selected = mail.IsPrimary; + ddlSipAddresses.Items.Add(li); } + + foreach (ListItem li in ddlSipAddresses.Items) + { + if (li.Value == sipAddressToSelect) + { + ddlSipAddresses.ClearSelection(); + li.Selected = true; + break; + } + } + } + else + { + email.Visible = true; + ddlSipAddresses.Visible = false; + + if (!string.IsNullOrEmpty(sipAddressToSelect)) + { + string[] Tmp = sipAddressToSelect.Split('@'); + email.AccountName = Tmp[0]; + + if (Tmp.Length > 1) + { + email.DomainName = Tmp[1]; + } + } + + } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.designer.cs index 202d581f..3ca9f655 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/UserControls/LyncUserSettings.ascx.designer.cs @@ -48,5 +48,14 @@ namespace WebsitePanel.Portal.Lync.UserControls { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.DropDownList ddlSipAddresses; + + /// + /// email control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.ExchangeServer.UserControls.EmailAddress email; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/CreateOCSUser.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/CreateOCSUser.ascx.resx index 859f311a..cea9a623 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/CreateOCSUser.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/CreateOCSUser.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Create OCS User @@ -124,7 +124,7 @@ Create - Select an existing Organization user and click the “Create” button to enable an individual user account for Office Communications Server. + Display name* : diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/EditOCSUser.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/EditOCSUser.ascx.resx index bf4bdbf2..677e3608 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/EditOCSUser.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/EditOCSUser.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Edit OCS User @@ -139,12 +139,7 @@ Enable Public IM connectivity - <p><b>Sign-in name</b> specifies the Session Initiation Protocol (SIP) address that is currently registered for this user and will be used to route messages to and from the user. The sign-in name is in the form "sip:user@domain" and must be unique.</p> -<p><b>Federation</b> specifies whether the user can communicate with users from other organizations that have an Office Communications Server deployment and a federated link.</p> -<p><b>Public IM connectivity</b> specifies whether the user can communicate with users who are hosted on AOL, Yahoo!, or the MSN network of Internet services.</p> -<p><b>Archiving</b> enables or disables archiving of IM conversations of the user. Archiving can be enabled independently for internal conversations and for conversations with users outside your organization.</p> -<p><b>Enhanced presence</b> enables users to control their presence with more granularity. Enhanced presence enables users to create different presence categories and assign data items to the categories.</p> -<p><b>Note:</b> Some settings cannot be configured for individual users depending on the Global Properties.</p> + Display name: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/OCSUsers.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/OCSUsers.ascx.resx index 31a67e0e..9290b1fe 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/OCSUsers.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/OCS/App_LocalResources/OCSUsers.ascx.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 OCS Users @@ -130,9 +130,7 @@ Sign-in name - <p>Office Communications Server delivers streamlined communications to the users, including software-powered VoIP, Web and audio/video conferencing, and enterprise instant messaging.</p> -<p>Click the “Create OCS User” button to enable an individual user account for Office Communications Server. </p> -<p>If you delete an account in Office Communications Server, the account is no longer available for use with Office Communications Server unless you enable the account again. When you delete an account, all Office Communications Server settings for the account are lost, so you must configure the account again after enabling.</p> + Display name diff --git a/WebsitePanel/Sources/generate_es_proxies.bat b/WebsitePanel/Sources/generate_es_proxies.bat index 0f50b419..5a4fbd8d 100644 --- a/WebsitePanel/Sources/generate_es_proxies.bat +++ b/WebsitePanel/Sources/generate_es_proxies.bat @@ -56,8 +56,8 @@ REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\OCSProxy.cs REM %WSDL% %SERVER_URL%/esOperatingSystems.asmx /out:.\WebsitePanel.EnterpriseServer.Client\OperatingSystemsProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\OperatingSystemsProxy.cs -REM %WSDL% %SERVER_URL%/esOrganizations.asmx /out:.\WebsitePanel.EnterpriseServer.Client\OrganizationProxy.cs /namespace:WebsitePanel.EnterpriseServer.HostedSolution /type:webClient -REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\OrganizationProxy.cs +%WSDL% %SERVER_URL%/esOrganizations.asmx /out:.\WebsitePanel.EnterpriseServer.Client\OrganizationProxy.cs /namespace:WebsitePanel.EnterpriseServer.HostedSolution /type:webClient +%WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\OrganizationProxy.cs REM %WSDL% %SERVER_URL%/esPackages.asmx /out:.\WebsitePanel.EnterpriseServer.Client\PackagesProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\PackagesProxy.cs @@ -92,8 +92,8 @@ REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\WebServersProxy.cs REM %WSDL% %SERVER_URL%/esVirtualizationServerForPrivateCloud.asmx /out:.\WebsitePanel.EnterpriseServer.Client\VirtualizationServerProxyForPrivateCloud.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\VirtualizationServerProxyForPrivateCloud.cs -%WSDL% %SERVER_URL%/esLync.asmx /out:.\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient -%WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs +REM %WSDL% %SERVER_URL%/esLync.asmx /out:.\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs diff --git a/WebsitePanel/Sources/generate_server_proxies.bat b/WebsitePanel/Sources/generate_server_proxies.bat index 8c3cfdee..d4811b50 100644 --- a/WebsitePanel/Sources/generate_server_proxies.bat +++ b/WebsitePanel/Sources/generate_server_proxies.bat @@ -35,8 +35,8 @@ REM %WSE_CLEAN% .\WebsitePanel.Server.Client\OCSServerProxy.cs REM %WSDL% %SERVER_URL%/OperatingSystem.asmx /out:.\WebsitePanel.Server.Client\OperatingSystemProxy.cs /namespace:WebsitePanel.Providers.OS /type:webClient /fields REM %WSE_CLEAN% .\WebsitePanel.Server.Client\OperatingSystemProxy.cs -REM %WSDL% %SERVER_URL%/Organizations.asmx /out:.\WebsitePanel.Server.Client\OrganizationProxy.cs /namespace:WebsitePanel.Providers.HostedSolution /type:webClient /fields -REM %WSE_CLEAN% .\WebsitePanel.Server.Client\OrganizationProxy.cs +%WSDL% %SERVER_URL%/Organizations.asmx /out:.\WebsitePanel.Server.Client\OrganizationProxy.cs /namespace:WebsitePanel.Providers.HostedSolution /type:webClient /fields +%WSE_CLEAN% .\WebsitePanel.Server.Client\OrganizationProxy.cs REM %WSDL% %SERVER_URL%/ServiceProvider.asmx /out:.\WebsitePanel.Server.Client\ServiceProviderProxy.cs /namespace:WebsitePanel.Providers /type:webClient /fields REM %WSE_CLEAN% .\WebsitePanel.Server.Client\ServiceProviderProxy.cs @@ -56,7 +56,7 @@ REM %WSE_CLEAN% .\WebsitePanel.Server.Client\WebServerProxy.cs REM %WSDL% %SERVER_URL%/WindowsServer.asmx /out:.\WebsitePanel.Server.Client\WindowsServerProxy.cs /namespace:WebsitePanel.Server /type:webClient /fields REM %WSE_CLEAN% .\WebsitePanel.Server.Client\WindowsServerProxy.cs -%WSDL% %SERVER_URL%/LyncServer.asmx /out:.\WebsitePanel.Server.Client\LyncServerProxy.cs /namespace:WebsitePanel.Providers.Lync /type:webClient /fields -%WSE_CLEAN% .\WebsitePanel.Server.Client\LyncServerProxy.cs +REM %WSDL% %SERVER_URL%/LyncServer.asmx /out:.\WebsitePanel.Server.Client\LyncServerProxy.cs /namespace:WebsitePanel.Providers.Lync /type:webClient /fields +REM %WSE_CLEAN% .\WebsitePanel.Server.Client\LyncServerProxy.cs