Addressbook Policy Changes. Add Code to Create Rooms per Organization.
This commit is contained in:
parent
d01b735e6f
commit
8a99080a90
7 changed files with 157 additions and 17 deletions
|
@ -408,7 +408,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
// rollback organization creation
|
// rollback organization creation
|
||||||
if (organizationExtended)
|
if (organizationExtended)
|
||||||
mailboxRole.DeleteOrganization(org.OrganizationId, org.DistinguishedName,
|
mailboxRole.DeleteOrganization(org.OrganizationId, org.DistinguishedName,
|
||||||
org.GlobalAddressList, org.AddressList, org.OfflineAddressBook, org.SecurityGroup);
|
org.GlobalAddressList, org.AddressList, org.RoomsAddressList, org.OfflineAddressBook, org.SecurityGroup);
|
||||||
|
|
||||||
// rollback domain
|
// rollback domain
|
||||||
if (authDomainCreated)
|
if (authDomainCreated)
|
||||||
|
@ -504,6 +504,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
org.DistinguishedName,
|
org.DistinguishedName,
|
||||||
org.GlobalAddressList,
|
org.GlobalAddressList,
|
||||||
org.AddressList,
|
org.AddressList,
|
||||||
|
org.RoomsAddressList,
|
||||||
org.OfflineAddressBook,
|
org.OfflineAddressBook,
|
||||||
org.SecurityGroup);
|
org.SecurityGroup);
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
string GetOABVirtualDirectory();
|
string GetOABVirtualDirectory();
|
||||||
Organization CreateOrganizationOfflineAddressBook(string organizationId, string securityGroup, string oabVirtualDir);
|
Organization CreateOrganizationOfflineAddressBook(string organizationId, string securityGroup, string oabVirtualDir);
|
||||||
void UpdateOrganizationOfflineAddressBook(string id);
|
void UpdateOrganizationOfflineAddressBook(string id);
|
||||||
bool DeleteOrganization(string organizationId, string distinguishedName, string globalAddressList, string addressList, string offlineAddressBook, string securityGroup);
|
bool DeleteOrganization(string organizationId, string distinguishedName, string globalAddressList, string addressList, string roomsAddressList, string offlineAddressBook, string securityGroup);
|
||||||
void SetOrganizationStorageLimits(string organizationDistinguishedName, int issueWarningKB, int prohibitSendKB, int prohibitSendReceiveKB, int keepDeletedItemsDays);
|
void SetOrganizationStorageLimits(string organizationDistinguishedName, int issueWarningKB, int prohibitSendKB, int prohibitSendReceiveKB, int keepDeletedItemsDays);
|
||||||
ExchangeItemStatistics[] GetMailboxesStatistics(string organizationDistinguishedName);
|
ExchangeItemStatistics[] GetMailboxesStatistics(string organizationDistinguishedName);
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
private string defaultDomain;
|
private string defaultDomain;
|
||||||
private string offlineAddressBook;
|
private string offlineAddressBook;
|
||||||
private string addressList;
|
private string addressList;
|
||||||
|
private string roomsAddressList;
|
||||||
private string globalAddressList;
|
private string globalAddressList;
|
||||||
private string database;
|
private string database;
|
||||||
private string securityGroup;
|
private string securityGroup;
|
||||||
|
@ -167,6 +168,13 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
set { addressList = value; }
|
set { addressList = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Persistent]
|
||||||
|
public string RoomsAddressList
|
||||||
|
{
|
||||||
|
get { return roomsAddressList; }
|
||||||
|
set { roomsAddressList = value; }
|
||||||
|
}
|
||||||
|
|
||||||
[Persistent]
|
[Persistent]
|
||||||
public string GlobalAddressList
|
public string GlobalAddressList
|
||||||
{
|
{
|
||||||
|
|
|
@ -184,11 +184,11 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool DeleteOrganization(string organizationId, string distinguishedName,
|
public bool DeleteOrganization(string organizationId, string distinguishedName,
|
||||||
string globalAddressList, string addressList, string offlineAddressBook,
|
string globalAddressList, string addressList, string roomsAddressList, string offlineAddressBook,
|
||||||
string securityGroup)
|
string securityGroup)
|
||||||
{
|
{
|
||||||
return DeleteOrganizationInternal(organizationId, distinguishedName, globalAddressList,
|
return DeleteOrganizationInternal(organizationId, distinguishedName, globalAddressList,
|
||||||
addressList, offlineAddressBook, securityGroup);
|
addressList, roomsAddressList, offlineAddressBook, securityGroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetOrganizationStorageLimits(string organizationDistinguishedName, int issueWarningKB, int prohibitSendKB,
|
public void SetOrganizationStorageLimits(string organizationDistinguishedName, int issueWarningKB, int prohibitSendKB,
|
||||||
|
@ -618,7 +618,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
{
|
{
|
||||||
Organization org = item as Organization;
|
Organization org = item as Organization;
|
||||||
DeleteOrganization(org.OrganizationId, org.DistinguishedName, org.GlobalAddressList,
|
DeleteOrganization(org.OrganizationId, org.DistinguishedName, org.GlobalAddressList,
|
||||||
org.AddressList, org.OfflineAddressBook, org.SecurityGroup);
|
org.AddressList, org.RoomsAddressList, org.OfflineAddressBook, org.SecurityGroup);
|
||||||
}
|
}
|
||||||
else if (item is ExchangeDomain)
|
else if (item is ExchangeDomain)
|
||||||
{
|
{
|
||||||
|
@ -738,6 +738,12 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
ExchangeLog.LogInfo(" Address List: {0}", alId);
|
ExchangeLog.LogInfo(" Address List: {0}", alId);
|
||||||
UpdateAddressList(runSpace, alId, securityGroupPath);
|
UpdateAddressList(runSpace, alId, securityGroupPath);
|
||||||
|
|
||||||
|
//create RAL
|
||||||
|
string ralId = CreateRoomsAddressList(runSpace, organizationId);
|
||||||
|
transaction.RegisterNewRoomsAddressList(ralId);
|
||||||
|
ExchangeLog.LogInfo(" Rooms Address List: {0}", ralId);
|
||||||
|
UpdateRoomsAddressList(runSpace, ralId, securityGroupPath);
|
||||||
|
|
||||||
//create ActiveSync policy
|
//create ActiveSync policy
|
||||||
string asId = CreateActiveSyncPolicy(runSpace, organizationId);
|
string asId = CreateActiveSyncPolicy(runSpace, organizationId);
|
||||||
transaction.RegisterNewActiveSyncPolicy(asId);
|
transaction.RegisterNewActiveSyncPolicy(asId);
|
||||||
|
@ -753,6 +759,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
|
|
||||||
info.AddressList = alId;
|
info.AddressList = alId;
|
||||||
info.GlobalAddressList = galId;
|
info.GlobalAddressList = galId;
|
||||||
|
info.RoomsAddressList = ralId;
|
||||||
info.OrganizationId = organizationId;
|
info.OrganizationId = organizationId;
|
||||||
info.Database = databaseId;
|
info.Database = databaseId;
|
||||||
|
|
||||||
|
@ -904,7 +911,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
|
|
||||||
|
|
||||||
private bool DeleteOrganizationInternal(string organizationId, string distinguishedName,
|
private bool DeleteOrganizationInternal(string organizationId, string distinguishedName,
|
||||||
string globalAddressList, string addressList, string offlineAddressBook, string securityGroup)
|
string globalAddressList, string addressList, string roomsAddressList, string offlineAddressBook, string securityGroup)
|
||||||
{
|
{
|
||||||
ExchangeLog.LogStart("DeleteOrganizationInternal");
|
ExchangeLog.LogStart("DeleteOrganizationInternal");
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
|
@ -986,6 +993,18 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
ExchangeLog.LogError("Could not delete Address List " + addressList, ex);
|
ExchangeLog.LogError("Could not delete Address List " + addressList, ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//delete RAL (Rooms Address List)
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(roomsAddressList))
|
||||||
|
DeleteRoomsAddressList(runSpace, roomsAddressList);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
ret = false;
|
||||||
|
ExchangeLog.LogError("Could not delete Rooms Address List " + roomsAddressList, ex);
|
||||||
|
}
|
||||||
|
|
||||||
//delete GAL
|
//delete GAL
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -4730,7 +4749,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Address Lists (GAL, AL, OAB, ABP)
|
#region Address Lists (GAL, AL, RAL, OAB, ABP)
|
||||||
|
|
||||||
private string GetAddressListDN(Runspace runSpace, string id)
|
private string GetAddressListDN(Runspace runSpace, string id)
|
||||||
{
|
{
|
||||||
|
@ -4824,6 +4843,99 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
ExchangeLog.LogEnd("DeleteAddressList");
|
ExchangeLog.LogEnd("DeleteAddressList");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetRoomsAddressListDN(Runspace runSpace, string id)
|
||||||
|
{
|
||||||
|
ExchangeLog.LogStart("GetRoomsAddressListDN");
|
||||||
|
string resultObjectDN = null;
|
||||||
|
Command cmd = new Command("Get-AddressList");
|
||||||
|
cmd.Parameters.Add("Identity", id);
|
||||||
|
Collection<PSObject> result = this.ExecuteShellCommand(runSpace, cmd);
|
||||||
|
if ((result != null) && (result.Count > 0))
|
||||||
|
{
|
||||||
|
resultObjectDN = this.GetResultObjectDN(result);
|
||||||
|
ExchangeLog.DebugInfo("RAL DN: {0}", new object[] { resultObjectDN });
|
||||||
|
}
|
||||||
|
ExchangeLog.DebugInfo("GetRommsAddressListDN, cmd = {0}", cmd.CommandText);
|
||||||
|
ExchangeLog.LogEnd("GetRoomsAddressListDN");
|
||||||
|
return resultObjectDN;
|
||||||
|
}
|
||||||
|
|
||||||
|
private string CreateRoomsAddressList(Runspace runSpace, string organizationId)
|
||||||
|
{
|
||||||
|
ExchangeLog.LogStart("CreateRoomsAddressList");
|
||||||
|
string roomsAddressListName = this.GetRoomsAddressListName(organizationId);
|
||||||
|
string roomsAddressListDN = this.GetRoomsAddressListDN(runSpace, roomsAddressListName);
|
||||||
|
if (!string.IsNullOrEmpty(roomsAddressListDN))
|
||||||
|
{
|
||||||
|
//rooms address list already exists - we will use it
|
||||||
|
ExchangeLog.LogWarning("Rooms Address List '{0}' already exists", new object[] { roomsAddressListName });
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//try to create a new rooms address list (10 attempts)
|
||||||
|
int attempts = 0;
|
||||||
|
Command cmd = null;
|
||||||
|
Collection<PSObject> result = null;
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//try to create address list
|
||||||
|
cmd = new Command("New-AddressList");
|
||||||
|
cmd.Parameters.Add("Name", roomsAddressListName);
|
||||||
|
cmd.Parameters.Add("IncludedRecipients", "Resources");
|
||||||
|
cmd.Parameters.Add("ConditionalCustomAttribute1", organizationId);
|
||||||
|
|
||||||
|
result = ExecuteShellCommand(runSpace, cmd);
|
||||||
|
roomsAddressListDN = CheckResultObjectDN(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
ExchangeLog.LogError(ex);
|
||||||
|
}
|
||||||
|
if (roomsAddressListDN != null)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (attempts > 9)
|
||||||
|
throw new Exception(
|
||||||
|
string.Format("Could not create Rooms Address List '{0}' cmd = '{1}'", roomsAddressListName, cmd));
|
||||||
|
|
||||||
|
attempts++;
|
||||||
|
ExchangeLog.LogWarning("Attempt #{0} to create rooms address list failed!", attempts);
|
||||||
|
// wait 1 sec
|
||||||
|
System.Threading.Thread.Sleep(1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ExchangeLog.LogEnd("CreateRoomsAddressList");
|
||||||
|
return roomsAddressListDN;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateRoomsAddressList(Runspace runSpace, string id, string securityGroup)
|
||||||
|
{
|
||||||
|
ExchangeLog.LogStart("UpdateRoomsAddressList");
|
||||||
|
|
||||||
|
string path = AddADPrefix(id);
|
||||||
|
Command cmd = new Command("Update-AddressList");
|
||||||
|
cmd.Parameters.Add("Identity", id);
|
||||||
|
ExecuteShellCommand(runSpace, cmd);
|
||||||
|
|
||||||
|
AdjustADSecurity(path, securityGroup, false);
|
||||||
|
|
||||||
|
ExchangeLog.LogEnd("UpdateRoomsAddressList");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DeleteRoomsAddressList(Runspace runSpace, string id)
|
||||||
|
{
|
||||||
|
ExchangeLog.LogStart("DeleteRoomsAddressList");
|
||||||
|
Command cmd = new Command("Remove-AddressList");
|
||||||
|
cmd.Parameters.Add("Identity", id);
|
||||||
|
cmd.Parameters.Add("Confirm", false);
|
||||||
|
ExecuteShellCommand(runSpace, cmd);
|
||||||
|
ExchangeLog.LogEnd("DeleteRoomsAddressList");
|
||||||
|
}
|
||||||
|
|
||||||
private string GetGlobalAddressListDN(Runspace runSpace, string id)
|
private string GetGlobalAddressListDN(Runspace runSpace, string id)
|
||||||
{
|
{
|
||||||
ExchangeLog.LogStart("GetGlobalAddressListDN");
|
ExchangeLog.LogStart("GetGlobalAddressListDN");
|
||||||
|
@ -4945,7 +5057,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
string AL = GetAddressListName(organizationId);
|
string AL = GetAddressListName(organizationId);
|
||||||
string GAL = GetGlobalAddressListName(organizationId);
|
string GAL = GetGlobalAddressListName(organizationId);
|
||||||
string OAB = GetOfflineAddressBookName(organizationId);
|
string OAB = GetOfflineAddressBookName(organizationId);
|
||||||
string RL = "All Rooms";
|
string RL = GetRoomsAddressListName(organizationId);
|
||||||
|
|
||||||
Command cmd = new Command("New-AddressBookPolicy");
|
Command cmd = new Command("New-AddressBookPolicy");
|
||||||
cmd.Parameters.Add("Name", ABP);
|
cmd.Parameters.Add("Name", ABP);
|
||||||
|
@ -4991,6 +5103,11 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
return orgName + " Address Policy";
|
return orgName + " Address Policy";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetRoomsAddressListName(string orgName)
|
||||||
|
{
|
||||||
|
return orgName + " Rooms";
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Active Directory
|
#region Active Directory
|
||||||
|
@ -6596,6 +6713,9 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
case TransactionAction.TransactionActionTypes.CreateAddressList:
|
case TransactionAction.TransactionActionTypes.CreateAddressList:
|
||||||
DeleteAddressList(runspace, action.Id);
|
DeleteAddressList(runspace, action.Id);
|
||||||
break;
|
break;
|
||||||
|
case TransactionAction.TransactionActionTypes.CreateRoomsAddressList:
|
||||||
|
DeleteRoomsAddressList(runspace, action.Id);
|
||||||
|
break;
|
||||||
case TransactionAction.TransactionActionTypes.CreateOfflineAddressBook:
|
case TransactionAction.TransactionActionTypes.CreateOfflineAddressBook:
|
||||||
DeleteOfflineAddressBook(runspace, action.Id);
|
DeleteOfflineAddressBook(runspace, action.Id);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -84,6 +84,13 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
action.Id = id;
|
action.Id = id;
|
||||||
Actions.Add(action);
|
Actions.Add(action);
|
||||||
}
|
}
|
||||||
|
internal void RegisterNewRoomsAddressList(string id)
|
||||||
|
{
|
||||||
|
TransactionAction action = new TransactionAction();
|
||||||
|
action.ActionType = TransactionAction.TransactionActionTypes.CreateRoomsAddressList;
|
||||||
|
action.Id = id;
|
||||||
|
Actions.Add(action);
|
||||||
|
}
|
||||||
internal void RegisterNewAddressPolicy(string id)
|
internal void RegisterNewAddressPolicy(string id)
|
||||||
{
|
{
|
||||||
TransactionAction action = new TransactionAction();
|
TransactionAction action = new TransactionAction();
|
||||||
|
@ -241,7 +248,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
AddMailboxFullAccessPermission,
|
AddMailboxFullAccessPermission,
|
||||||
AddSendAsPermission,
|
AddSendAsPermission,
|
||||||
RemoveMailboxFullAccessPermission,
|
RemoveMailboxFullAccessPermission,
|
||||||
RemoveSendAsPermission
|
RemoveSendAsPermission,
|
||||||
|
CreateRoomsAddressList
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -770,24 +770,26 @@ namespace WebsitePanel.Providers.Exchange {
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteOrganization", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteOrganization", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
public bool DeleteOrganization(string organizationId, string distinguishedName, string globalAddressList, string addressList, string offlineAddressBook, string securityGroup) {
|
public bool DeleteOrganization(string organizationId, string distinguishedName, string globalAddressList, string addressList, string roomsAddressList, string offlineAddressBook, string securityGroup) {
|
||||||
object[] results = this.Invoke("DeleteOrganization", new object[] {
|
object[] results = this.Invoke("DeleteOrganization", new object[] {
|
||||||
organizationId,
|
organizationId,
|
||||||
distinguishedName,
|
distinguishedName,
|
||||||
globalAddressList,
|
globalAddressList,
|
||||||
addressList,
|
addressList,
|
||||||
|
roomsAddressList,
|
||||||
offlineAddressBook,
|
offlineAddressBook,
|
||||||
securityGroup});
|
securityGroup});
|
||||||
return ((bool)(results[0]));
|
return ((bool)(results[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public System.IAsyncResult BeginDeleteOrganization(string organizationId, string distinguishedName, string globalAddressList, string addressList, string offlineAddressBook, string securityGroup, System.AsyncCallback callback, object asyncState) {
|
public System.IAsyncResult BeginDeleteOrganization(string organizationId, string distinguishedName, string globalAddressList, string addressList, string roomsAddressList, string offlineAddressBook, string securityGroup, System.AsyncCallback callback, object asyncState) {
|
||||||
return this.BeginInvoke("DeleteOrganization", new object[] {
|
return this.BeginInvoke("DeleteOrganization", new object[] {
|
||||||
organizationId,
|
organizationId,
|
||||||
distinguishedName,
|
distinguishedName,
|
||||||
globalAddressList,
|
globalAddressList,
|
||||||
addressList,
|
addressList,
|
||||||
|
roomsAddressList,
|
||||||
offlineAddressBook,
|
offlineAddressBook,
|
||||||
securityGroup}, callback, asyncState);
|
securityGroup}, callback, asyncState);
|
||||||
}
|
}
|
||||||
|
@ -799,12 +801,12 @@ namespace WebsitePanel.Providers.Exchange {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public void DeleteOrganizationAsync(string organizationId, string distinguishedName, string globalAddressList, string addressList, string offlineAddressBook, string securityGroup) {
|
public void DeleteOrganizationAsync(string organizationId, string distinguishedName, string globalAddressList, string addressList, string roomsAddressList, string offlineAddressBook, string securityGroup) {
|
||||||
this.DeleteOrganizationAsync(organizationId, distinguishedName, globalAddressList, addressList, offlineAddressBook, securityGroup, null);
|
this.DeleteOrganizationAsync(organizationId, distinguishedName, globalAddressList, addressList, roomsAddressList, offlineAddressBook, securityGroup, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public void DeleteOrganizationAsync(string organizationId, string distinguishedName, string globalAddressList, string addressList, string offlineAddressBook, string securityGroup, object userState) {
|
public void DeleteOrganizationAsync(string organizationId, string distinguishedName, string globalAddressList, string addressList, string roomsAddressList, string offlineAddressBook, string securityGroup, object userState) {
|
||||||
if ((this.DeleteOrganizationOperationCompleted == null)) {
|
if ((this.DeleteOrganizationOperationCompleted == null)) {
|
||||||
this.DeleteOrganizationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteOrganizationOperationCompleted);
|
this.DeleteOrganizationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteOrganizationOperationCompleted);
|
||||||
}
|
}
|
||||||
|
@ -813,6 +815,7 @@ namespace WebsitePanel.Providers.Exchange {
|
||||||
distinguishedName,
|
distinguishedName,
|
||||||
globalAddressList,
|
globalAddressList,
|
||||||
addressList,
|
addressList,
|
||||||
|
roomsAddressList,
|
||||||
offlineAddressBook,
|
offlineAddressBook,
|
||||||
securityGroup}, this.DeleteOrganizationOperationCompleted, userState);
|
securityGroup}, this.DeleteOrganizationOperationCompleted, userState);
|
||||||
}
|
}
|
||||||
|
|
|
@ -176,12 +176,12 @@ namespace WebsitePanel.Server
|
||||||
}
|
}
|
||||||
|
|
||||||
[WebMethod, SoapHeader("settings")]
|
[WebMethod, SoapHeader("settings")]
|
||||||
public bool DeleteOrganization(string organizationId, string distinguishedName, string globalAddressList, string addressList, string offlineAddressBook, string securityGroup)
|
public bool DeleteOrganization(string organizationId, string distinguishedName, string globalAddressList, string addressList, string roomsAddressList, string offlineAddressBook, string securityGroup)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
LogStart("DeleteOrganization");
|
LogStart("DeleteOrganization");
|
||||||
bool ret = ES.DeleteOrganization(organizationId, distinguishedName, globalAddressList, addressList, offlineAddressBook, securityGroup);
|
bool ret = ES.DeleteOrganization(organizationId, distinguishedName, globalAddressList, addressList, roomsAddressList, offlineAddressBook, securityGroup);
|
||||||
LogEnd("DeleteOrganization");
|
LogEnd("DeleteOrganization");
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue