From 20f64c90b556eb066b512837467b4c78ba6f9b58 Mon Sep 17 00:00:00 2001 From: dev_amdtel Date: Fri, 31 Jan 2014 15:46:30 +0400 Subject: [PATCH] Add CRM2013 support and update CRM2011 provider --- WebsitePanel/Database/update_db.sql | 296 + .../{ => CRM2011}/microsoft.crm.sdk.proxy.dll | Bin .../microsoft.xrm.client.codegeneration.dll | Bin .../{ => CRM2011}/microsoft.xrm.client.dll | Bin .../{ => CRM2011}/microsoft.xrm.portal.dll | Bin .../microsoft.xrm.portal.files.dll | Bin .../microsoft.xrm.sdk.deployment.dll | Bin .../{ => CRM2011}/microsoft.xrm.sdk.dll | Bin .../microsoft.xrm.sdk.workflow.dll | Bin .../CRM2013/Microsoft.Crm.Sdk.Proxy.dll | Bin 0 -> 194736 bytes .../Microsoft.Xrm.Client.CodeGeneration.dll | Bin 0 -> 44168 bytes .../CRM2013/Microsoft.Xrm.Client.dll | Bin 0 -> 300168 bytes .../CRM2013/Microsoft.Xrm.Portal.Files.dll | Bin 0 -> 142984 bytes .../CRM2013/Microsoft.Xrm.Portal.dll | Bin 0 -> 484488 bytes .../CRM2013/Microsoft.Xrm.Sdk.Deployment.dll | Bin 0 -> 79536 bytes .../CRM2013/Microsoft.Xrm.Sdk.Workflow.dll | Bin 0 -> 48304 bytes .../Microsoft/CRM2013/Microsoft.Xrm.Sdk.dll | Bin 0 -> 410800 bytes .../HostedSolution/CRMLycenseTypes.cs | 50 + .../Packages/Quotas.cs | 8 + .../Servers/ResourceGroups.cs | 1 + .../WebsitePanel.EnterpriseServer.Base.csproj | 1 + .../CRMProxy.cs | 322 +- .../HostedSolution/CRMController.cs | 258 +- .../HostedSolution/OrganizationController.cs | 38 +- .../esCRM.asmx.cs | 32 +- .../Common/Constants.cs | 7 +- .../HostedSolution/ICRM.cs | 3 + .../HostedSolution/OrganizationStatistics.cs | 48 +- .../CRMBase.cs | 2096 + .../CRMProvider2011.cs | 1977 +- .../HostedSolutionLog.cs | 152 + ...el.Providers.HostedSolution.Crm2011.csproj | 59 +- .../myorganizationcrmsdktypes.cs | 202 +- .../CRMBase.cs | 2096 + .../CRMProvider2013.cs | 46 + .../HostedSolutionLog.cs | 152 + .../MyOrganizationCrmSdkTypes.cs | 185223 +++++++++++++++ .../Properties/AssemblyInfo.cs | 36 + ...el.Providers.HostedSolution.Crm2013.csproj | 100 + .../CRMProvider.cs | 7 +- .../WebsitePanel.Server.Client/CRMProxy.cs | 101 +- WebsitePanel/Sources/WebsitePanel.Server.sln | 14 +- .../Sources/WebsitePanel.Server/CRM.asmx.cs | 11 +- .../Sources/WebsitePanel.Server/Web.config | 2 +- .../WebsitePanel_SharedResources.ascx.resx | 45 + .../CRM/CRMOrganizationDetails.ascx | 5 + .../CRM/CRMOrganizationDetails.ascx.cs | 97 +- .../CRMOrganizationDetails.ascx.designer.cs | 58 +- .../CRM/CRMStorageSettings.ascx.cs | 13 +- .../WebsitePanel/CRM/CRMUserRoles.ascx | 3 - .../WebsitePanel/CRM/CRMUserRoles.ascx.cs | 34 +- .../CRM/CRMUserRoles.ascx.designer.cs | 2 +- .../WebsitePanel/CRM/CRMUsers.ascx | 86 +- .../WebsitePanel/CRM/CRMUsers.ascx.cs | 39 +- .../CRM/CRMUsers.ascx.designer.cs | 74 +- .../WebsitePanel/CRM/CreateCRMUser.ascx | 3 - .../WebsitePanel/CRM/CreateCRMUser.ascx.cs | 23 + .../CRM/CreateCRMUser.ascx.designer.cs | 2 +- .../WebsitePanel/Code/Framework/Utils.cs | 13 +- .../ExchangeServer/OrganizationHome.ascx | 42 + .../ExchangeServer/OrganizationHome.ascx.cs | 43 +- .../OrganizationHome.ascx.designer.cs | 92 +- .../App_LocalResources/Menu.ascx.resx | 3 + .../ExchangeServer/UserControls/Menu.ascx.cs | 17 +- .../ProviderControls/CRM2011_Settings.ascx | 16 + .../ProviderControls/CRM2011_Settings.ascx.cs | 59 +- .../CRM2011_Settings.ascx.designer.cs | 30 +- .../WebsitePanel.Portal.Modules.csproj | 12 +- 68 files changed, 191845 insertions(+), 2304 deletions(-) rename WebsitePanel/Lib/References/Microsoft/{ => CRM2011}/microsoft.crm.sdk.proxy.dll (100%) rename WebsitePanel/Lib/References/Microsoft/{ => CRM2011}/microsoft.xrm.client.codegeneration.dll (100%) rename WebsitePanel/Lib/References/Microsoft/{ => CRM2011}/microsoft.xrm.client.dll (100%) rename WebsitePanel/Lib/References/Microsoft/{ => CRM2011}/microsoft.xrm.portal.dll (100%) rename WebsitePanel/Lib/References/Microsoft/{ => CRM2011}/microsoft.xrm.portal.files.dll (100%) rename WebsitePanel/Lib/References/Microsoft/{ => CRM2011}/microsoft.xrm.sdk.deployment.dll (100%) rename WebsitePanel/Lib/References/Microsoft/{ => CRM2011}/microsoft.xrm.sdk.dll (100%) rename WebsitePanel/Lib/References/Microsoft/{ => CRM2011}/microsoft.xrm.sdk.workflow.dll (100%) create mode 100644 WebsitePanel/Lib/References/Microsoft/CRM2013/Microsoft.Crm.Sdk.Proxy.dll create mode 100644 WebsitePanel/Lib/References/Microsoft/CRM2013/Microsoft.Xrm.Client.CodeGeneration.dll create mode 100644 WebsitePanel/Lib/References/Microsoft/CRM2013/Microsoft.Xrm.Client.dll create mode 100644 WebsitePanel/Lib/References/Microsoft/CRM2013/Microsoft.Xrm.Portal.Files.dll create mode 100644 WebsitePanel/Lib/References/Microsoft/CRM2013/Microsoft.Xrm.Portal.dll create mode 100644 WebsitePanel/Lib/References/Microsoft/CRM2013/Microsoft.Xrm.Sdk.Deployment.dll create mode 100644 WebsitePanel/Lib/References/Microsoft/CRM2013/Microsoft.Xrm.Sdk.Workflow.dll create mode 100644 WebsitePanel/Lib/References/Microsoft/CRM2013/Microsoft.Xrm.Sdk.dll create mode 100644 WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/HostedSolution/CRMLycenseTypes.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/CRMBase.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/HostedSolutionLog.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2013/CRMBase.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2013/CRMProvider2013.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2013/HostedSolutionLog.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2013/MyOrganizationCrmSdkTypes.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2013/Properties/AssemblyInfo.cs create mode 100644 WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2013/WebsitePanel.Providers.HostedSolution.Crm2013.csproj diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index bafb3077..9001eceb 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -2797,4 +2797,300 @@ WHERE AND (@OrgID = 0 OR @OrgID <> 0 AND PA.OrgID = @OrgID) END +GO + +-- Enterprise Storage Quotas +IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'EnterpriseStorage.DiskStorageSpace') +BEGIN +INSERT [dbo].[Quotas] ([QuotaID], [GroupID],[QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (430, 44, 1,N'EnterpriseStorage.DiskStorageSpace',N'Disk Storage Space (Gb)',2, 0 , NULL) +END +GO + +UPDATE [dbo].[Quotas] SET [QuotaDescription] = N'Disk Storage Space (Gb)' WHERE [QuotaName] = 'EnterpriseStorage.DiskStorageSpace' +GO + +IF NOT EXISTS (SELECT * FROM SYS.TABLES WHERE name = 'EnterpriseFolders') + +CREATE TABLE [dbo].[EnterpriseFolders]( + [EnterpriseFolderID] [int] IDENTITY(1,1) NOT NULL, + [ItemID] [int] NOT NULL, + [FolderName] [nvarchar](255) NOT NULL, + [FolderQuota] [int] NOT NULL DEFAULT 0, + CONSTRAINT [PK_EnterpriseFolders] PRIMARY KEY CLUSTERED +( + [EnterpriseFolderId] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) +) + +GO + +ALTER FUNCTION [dbo].[CalculateQuotaUsage] +( + @PackageID int, + @QuotaID int +) +RETURNS int +AS + BEGIN + + DECLARE @QuotaTypeID int + SELECT @QuotaTypeID = QuotaTypeID FROM Quotas + WHERE QuotaID = @QuotaID + + IF @QuotaTypeID <> 2 + RETURN 0 + + DECLARE @Result int + + IF @QuotaID = 52 -- diskspace + SET @Result = dbo.CalculatePackageDiskspace(@PackageID) + ELSE IF @QuotaID = 51 -- bandwidth + SET @Result = dbo.CalculatePackageBandwidth(@PackageID) + ELSE IF @QuotaID = 53 -- domains + SET @Result = (SELECT COUNT(D.DomainID) FROM PackagesTreeCache AS PT + INNER JOIN Domains AS D ON D.PackageID = PT.PackageID + WHERE IsSubDomain = 0 AND IsInstantAlias = 0 AND IsDomainPointer = 0 AND PT.ParentPackageID = @PackageID) + ELSE IF @QuotaID = 54 -- sub-domains + SET @Result = (SELECT COUNT(D.DomainID) FROM PackagesTreeCache AS PT + INNER JOIN Domains AS D ON D.PackageID = PT.PackageID + WHERE IsSubDomain = 1 AND IsInstantAlias = 0 AND IsDomainPointer = 0 AND PT.ParentPackageID = @PackageID) + ELSE IF @QuotaID = 220 -- domain pointers + SET @Result = (SELECT COUNT(D.DomainID) FROM PackagesTreeCache AS PT + INNER JOIN Domains AS D ON D.PackageID = PT.PackageID + WHERE IsDomainPointer = 1 AND PT.ParentPackageID = @PackageID) + ELSE IF @QuotaID = 71 -- scheduled tasks + SET @Result = (SELECT COUNT(S.ScheduleID) FROM PackagesTreeCache AS PT + INNER JOIN Schedule AS S ON S.PackageID = PT.PackageID + WHERE PT.ParentPackageID = @PackageID) + ELSE IF @QuotaID = 305 -- RAM of VPS + SET @Result = (SELECT SUM(CAST(SIP.PropertyValue AS int)) FROM ServiceItemProperties AS SIP + INNER JOIN ServiceItems AS SI ON SIP.ItemID = SI.ItemID + INNER JOIN PackagesTreeCache AS PT ON SI.PackageID = PT.PackageID + WHERE SIP.PropertyName = 'RamSize' AND PT.ParentPackageID = @PackageID) + ELSE IF @QuotaID = 306 -- HDD of VPS + SET @Result = (SELECT SUM(CAST(SIP.PropertyValue AS int)) FROM ServiceItemProperties AS SIP + INNER JOIN ServiceItems AS SI ON SIP.ItemID = SI.ItemID + INNER JOIN PackagesTreeCache AS PT ON SI.PackageID = PT.PackageID + WHERE SIP.PropertyName = 'HddSize' AND PT.ParentPackageID = @PackageID) + ELSE IF @QuotaID = 309 -- External IP addresses of VPS + SET @Result = (SELECT COUNT(PIP.PackageAddressID) FROM PackageIPAddresses AS PIP + INNER JOIN IPAddresses AS IP ON PIP.AddressID = IP.AddressID + INNER JOIN PackagesTreeCache AS PT ON PIP.PackageID = PT.PackageID + WHERE PT.ParentPackageID = @PackageID AND IP.PoolID = 3) + ELSE IF @QuotaID = 100 -- Dedicated Web IP addresses + SET @Result = (SELECT COUNT(PIP.PackageAddressID) FROM PackageIPAddresses AS PIP + INNER JOIN IPAddresses AS IP ON PIP.AddressID = IP.AddressID + INNER JOIN PackagesTreeCache AS PT ON PIP.PackageID = PT.PackageID + WHERE PT.ParentPackageID = @PackageID AND IP.PoolID = 2) + ELSE IF @QuotaID = 350 -- RAM of VPSforPc + SET @Result = (SELECT SUM(CAST(SIP.PropertyValue AS int)) FROM ServiceItemProperties AS SIP + INNER JOIN ServiceItems AS SI ON SIP.ItemID = SI.ItemID + INNER JOIN PackagesTreeCache AS PT ON SI.PackageID = PT.PackageID + WHERE SIP.PropertyName = 'Memory' AND PT.ParentPackageID = @PackageID) + ELSE IF @QuotaID = 351 -- HDD of VPSforPc + SET @Result = (SELECT SUM(CAST(SIP.PropertyValue AS int)) FROM ServiceItemProperties AS SIP + INNER JOIN ServiceItems AS SI ON SIP.ItemID = SI.ItemID + INNER JOIN PackagesTreeCache AS PT ON SI.PackageID = PT.PackageID + WHERE SIP.PropertyName = 'HddSize' AND PT.ParentPackageID = @PackageID) + ELSE IF @QuotaID = 354 -- External IP addresses of VPSforPc + SET @Result = (SELECT COUNT(PIP.PackageAddressID) FROM PackageIPAddresses AS PIP + INNER JOIN IPAddresses AS IP ON PIP.AddressID = IP.AddressID + INNER JOIN PackagesTreeCache AS PT ON PIP.PackageID = PT.PackageID + WHERE PT.ParentPackageID = @PackageID AND IP.PoolID = 3) + ELSE IF @QuotaID = 319 -- BB Users + SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea + INNER JOIN BlackBerryUsers bu ON ea.AccountID = bu.AccountID + INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID + INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID + WHERE pt.ParentPackageID = @PackageID) + ELSE IF @QuotaID = 320 -- OCS Users + SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea + INNER JOIN OCSUsers ocs ON ea.AccountID = ocs.AccountID + INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID + INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID + WHERE pt.ParentPackageID = @PackageID) + ELSE IF @QuotaID = 206 -- HostedSolution.Users + SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea + INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID + INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID + WHERE pt.ParentPackageID = @PackageID AND ea.AccountType IN (1,5,6,7)) + ELSE IF @QuotaID = 78 -- Exchange2007.Mailboxes + SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea + INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID + INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID + WHERE pt.ParentPackageID = @PackageID + AND ea.AccountType IN (1) + AND ea.MailboxPlanId IS NOT NULL) + ELSE IF @QuotaID = 77 -- Exchange2007.DiskSpace + SET @Result = (SELECT SUM(B.MailboxSizeMB) FROM ExchangeAccounts AS ea + INNER JOIN ExchangeMailboxPlans AS B ON ea.MailboxPlanId = B.MailboxPlanId + INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID + INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID + WHERE pt.ParentPackageID = @PackageID) + ELSE IF @QuotaID = 370 -- Lync.Users + SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea + INNER JOIN LyncUsers lu ON ea.AccountID = lu.AccountID + INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID + INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID + WHERE pt.ParentPackageID = @PackageID) + ELSE IF @QuotaID = 376 -- Lync.EVUsers + SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea + INNER JOIN LyncUsers lu ON ea.AccountID = lu.AccountID + INNER JOIN LyncUserPlans lp ON lu.LyncUserPlanId = lp.LyncUserPlanId + INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID + INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID + WHERE pt.ParentPackageID = @PackageID AND lp.EnterpriseVoice = 1) + ELSE IF @QuotaID = 381 -- Dedicated Lync Phone Numbers + SET @Result = (SELECT COUNT(PIP.PackageAddressID) FROM PackageIPAddresses AS PIP + INNER JOIN IPAddresses AS IP ON PIP.AddressID = IP.AddressID + INNER JOIN PackagesTreeCache AS PT ON PIP.PackageID = PT.PackageID + WHERE PT.ParentPackageID = @PackageID AND IP.PoolID = 5) + ELSE IF @QuotaID = 430 -- Enterprise Storage + SET @Result = (SELECT SUM(ESF.FolderQuota) FROM EnterpriseFolders AS ESF + INNER JOIN ServiceItems SI ON ESF.ItemID = SI.ItemID + INNER JOIN PackagesTreeCache PT ON SI.PackageID = PT.PackageID + WHERE PT.ParentPackageID = @PackageID) + ELSE IF @QuotaID = 431 -- Enterprise Storage Folders + SET @Result = (SELECT COUNT(ESF.EnterpriseFolderID) FROM EnterpriseFolders AS ESF + INNER JOIN ServiceItems SI ON ESF.ItemID = SI.ItemID + INNER JOIN PackagesTreeCache PT ON SI.PackageID = PT.PackageID + WHERE PT.ParentPackageID = @PackageID) + ELSE + SET @Result = (SELECT COUNT(SI.ItemID) FROM Quotas AS Q + INNER JOIN ServiceItems AS SI ON SI.ItemTypeID = Q.ItemTypeID + INNER JOIN PackagesTreeCache AS PT ON SI.PackageID = PT.PackageID AND PT.ParentPackageID = @PackageID + WHERE Q.QuotaID = @QuotaID) + + RETURN @Result + END +GO + +IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'AddEnterpriseFolder') +DROP PROCEDURE [dbo].[AddEnterpriseFolder] +GO + +CREATE PROCEDURE [dbo].[AddEnterpriseFolder] +( + @FolderID INT OUTPUT, + @ItemID INT, + @FolderName NVARCHAR(255) +) +AS + +INSERT INTO EnterpriseFolders +( + ItemID, + FolderName +) +VALUES +( + @ItemID, + @FolderName +) + +SET @FolderID = SCOPE_IDENTITY() + +RETURN +GO + +IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'DeleteEnterpriseFolder') +DROP PROCEDURE DeleteEnterpriseFolder +GO + +CREATE PROCEDURE [dbo].[DeleteEnterpriseFolder] +( + @ItemID INT, + @FolderName NVARCHAR(255) +) +AS + +DELETE FROM EnterpriseFolders +WHERE ItemID = @ItemID AND FolderName = @FolderName +GO + +IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'UpdateEnterpriseFolder') +DROP PROCEDURE UpdateEnterpriseFolder +GO + +CREATE PROCEDURE [dbo].[UpdateEnterpriseFolder] +( + @ItemID INT, + @FolderID NVARCHAR(255), + @FolderName NVARCHAR(255), + @FolderQuota INT +) +AS + +UPDATE EnterpriseFolders SET + FolderName = @FolderName, + FolderQuota = @FolderQuota +WHERE ItemID = @ItemID AND FolderName = @FolderID +GO + +-- Enterprise Storage Quotas +IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'EnterpriseStorage.DiskStorageSpace') +BEGIN +INSERT [dbo].[Quotas] ([QuotaID], [GroupID],[QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) VALUES (430, 44, 1,N'EnterpriseStorage.DiskStorageSpace',N'Disk Storage Space (Mb)',2, 0 , NULL) +END +GO + +UPDATE [dbo].[Quotas] SET [QuotaDescription] = N'Disk Storage Space (Mb)' WHERE [QuotaName] = 'EnterpriseStorage.DiskStorageSpace' +GO + + +-- CRM2013 + +-- CRM2013 ResourceGroup + +IF NOT EXISTS (SELECT * FROM [dbo].[ResourceGroups] WHERE [GroupName] = 'Hosted CRM2013') +BEGIN +INSERT [dbo].[ResourceGroups] ([GroupID], [GroupName], [GroupOrder], [GroupController], [ShowGroup]) VALUES (24, N'Hosted CRM2013', 15, NULL, 1) +END +GO + +-- CRM2013 Provider + +IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'Hosted MS CRM 2013') +BEGIN +INSERT [dbo].[Providers] ([ProviderId], [GroupId], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) +VALUES(1202, 24, N'CRM', N'Hosted MS CRM 2013', N'WebsitePanel.Providers.HostedSolution.CRMProvider2013, WebsitePanel.Providers.HostedSolution.Crm2013', N'CRM2011', NULL) +END +GO + +-- CRM2013 Quotas + +IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'HostedCRM2013.Organization') +BEGIN +INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota]) +VALUES (463, 24, 1, N'HostedCRM2013.Organization', N'CRM Organization', 1, 0, NULL, NULL) +END +GO + +IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'HostedCRM2013.MaxDatabaseSize') +BEGIN +INSERT [dbo].[Quotas] ([QuotaID], [GroupID],[QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) +VALUES (464, 24, 5, N'HostedCRM2013.MaxDatabaseSize', N'Max Database Size, MB',3, 0 , NULL) +END +GO + +IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'HostedCRM2013.EssentialUsers') +BEGIN +INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota]) +VALUES (465, 24, 2, N'HostedCRM2013.EssentialUsers', N'Essential licenses per organization', 3, 0, NULL, NULL) +END +GO + +IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'HostedCRM2013.BasicUsers') +BEGIN +INSERT [dbo].[Quotas] ([QuotaID], [GroupID],[QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) +VALUES (466, 24, 3, N'HostedCRM2013.BasicUsers', N'Basic licenses per organization',3, 0 , NULL) +END +GO + +IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'HostedCRM2013.ProfessionalUsers') +BEGIN +INSERT [dbo].[Quotas] ([QuotaID], [GroupID],[QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID]) +VALUES (467, 24, 4, N'HostedCRM2013.ProfessionalUsers', N'Professional licenses per organization',3, 0 , NULL) +END +GO diff --git a/WebsitePanel/Lib/References/Microsoft/microsoft.crm.sdk.proxy.dll b/WebsitePanel/Lib/References/Microsoft/CRM2011/microsoft.crm.sdk.proxy.dll similarity index 100% rename from WebsitePanel/Lib/References/Microsoft/microsoft.crm.sdk.proxy.dll rename to WebsitePanel/Lib/References/Microsoft/CRM2011/microsoft.crm.sdk.proxy.dll diff --git a/WebsitePanel/Lib/References/Microsoft/microsoft.xrm.client.codegeneration.dll b/WebsitePanel/Lib/References/Microsoft/CRM2011/microsoft.xrm.client.codegeneration.dll similarity index 100% rename from WebsitePanel/Lib/References/Microsoft/microsoft.xrm.client.codegeneration.dll rename to WebsitePanel/Lib/References/Microsoft/CRM2011/microsoft.xrm.client.codegeneration.dll diff --git a/WebsitePanel/Lib/References/Microsoft/microsoft.xrm.client.dll b/WebsitePanel/Lib/References/Microsoft/CRM2011/microsoft.xrm.client.dll similarity index 100% rename from WebsitePanel/Lib/References/Microsoft/microsoft.xrm.client.dll rename to WebsitePanel/Lib/References/Microsoft/CRM2011/microsoft.xrm.client.dll diff --git a/WebsitePanel/Lib/References/Microsoft/microsoft.xrm.portal.dll b/WebsitePanel/Lib/References/Microsoft/CRM2011/microsoft.xrm.portal.dll similarity index 100% rename from WebsitePanel/Lib/References/Microsoft/microsoft.xrm.portal.dll rename to WebsitePanel/Lib/References/Microsoft/CRM2011/microsoft.xrm.portal.dll diff --git a/WebsitePanel/Lib/References/Microsoft/microsoft.xrm.portal.files.dll b/WebsitePanel/Lib/References/Microsoft/CRM2011/microsoft.xrm.portal.files.dll similarity index 100% rename from WebsitePanel/Lib/References/Microsoft/microsoft.xrm.portal.files.dll rename to WebsitePanel/Lib/References/Microsoft/CRM2011/microsoft.xrm.portal.files.dll diff --git a/WebsitePanel/Lib/References/Microsoft/microsoft.xrm.sdk.deployment.dll b/WebsitePanel/Lib/References/Microsoft/CRM2011/microsoft.xrm.sdk.deployment.dll similarity index 100% rename from WebsitePanel/Lib/References/Microsoft/microsoft.xrm.sdk.deployment.dll rename to WebsitePanel/Lib/References/Microsoft/CRM2011/microsoft.xrm.sdk.deployment.dll diff --git a/WebsitePanel/Lib/References/Microsoft/microsoft.xrm.sdk.dll b/WebsitePanel/Lib/References/Microsoft/CRM2011/microsoft.xrm.sdk.dll similarity index 100% rename from WebsitePanel/Lib/References/Microsoft/microsoft.xrm.sdk.dll rename to WebsitePanel/Lib/References/Microsoft/CRM2011/microsoft.xrm.sdk.dll diff --git a/WebsitePanel/Lib/References/Microsoft/microsoft.xrm.sdk.workflow.dll b/WebsitePanel/Lib/References/Microsoft/CRM2011/microsoft.xrm.sdk.workflow.dll similarity index 100% rename from WebsitePanel/Lib/References/Microsoft/microsoft.xrm.sdk.workflow.dll rename to WebsitePanel/Lib/References/Microsoft/CRM2011/microsoft.xrm.sdk.workflow.dll diff --git a/WebsitePanel/Lib/References/Microsoft/CRM2013/Microsoft.Crm.Sdk.Proxy.dll b/WebsitePanel/Lib/References/Microsoft/CRM2013/Microsoft.Crm.Sdk.Proxy.dll new file mode 100644 index 0000000000000000000000000000000000000000..cc98c30144684874f6d2baa0df624fb4d297cd60 GIT binary patch literal 194736 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괺 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 bEBvgqqcVQPZg0Syq0GGqozHfknV9|$bWoCf literal 0 HcmV?d00001 diff --git a/WebsitePanel/Lib/References/Microsoft/CRM2013/Microsoft.Xrm.Client.dll b/WebsitePanel/Lib/References/Microsoft/CRM2013/Microsoft.Xrm.Client.dll new file mode 100644 index 0000000000000000000000000000000000000000..8f9629aaecef0c90c6def727923b517e33936246 GIT binary patch literal 300168 zcmcGX37lM2mH%JAs(Mvj-5sc;>Fy+ugeBooRUIHf42u|$P4<1?Hvy4{Rf%GXYNIH) zghdowK*T7Bi0B}qqB4v!ii}Hi)N#Rxj-!tIFplG>6aL@dxo@lLP5_;MKIwPwJ@?#m z&pqedbJu$B$kT503ZCZ``Fr|l&-)~y{;jm6MKU)lbX14n#i`x7p{ zq`l~hR`inAxi4FE{<)W59<5q*-i3==t1n-4$>oa z*L&X9_CE{bq#=9WG0;6+ap*oKK_vf9Dtd3&kHj5CZ_Qd{9W|8J4!owKynZk-R%c!Nie|K2frWdBwokfp5)FN;7F zuj1KgoiGjWfUJ~@t(9E)C*FLopto;g$kxTf_dM~q-A9kFF8}kg?;g1Q zM>mZA;LIoPzWJq-^%qzDdanhO_5XVM zhF3rE?!`A;e%=ko4P5l|$Gxu}@Y-T{)aQPD^OyeX^xL02r?cjX7oK$Y=N^9P;d=*l z&zrMb(K`?(2RyIl7mB5b#srfqTBNU-dmYb#YA{w>H$jWn2jj(PvFBCS9SeAUFj0(_ zkXj#vj}*M1y)*GO_4&|S3O&?QD@Gx(p~lwbXcr}X7=X+&u+a0~C7)W#b8tLVshJ)5DaNnqn=Qw>~0nBSE`VIg~{h{<%PR}MXV@&;yFZJfW8mZpO)PJ0snA#-`rPG&j z&)>)L=UTp`xp26*{JxeyZ~4xYkATZD_yX^ z3+R;szQ_d_yi&N+YWrXwiSC}MsFaZ_$LZ*@&y3^fsbf=gcqSIXtG1gs%lIgDG zbT=#0-61q+2HoMbtew)0+TX967hAs5oy63if0*Sv-AS7Lx?^B~zSCVS^jr&iba#YM z(VgrMHEGzYwO)n836CUa^=!Pr;>lo1`(0{O`xU+yj0^_RYQn*xDf~xqxYDdtM$6Gr zpqHanWSA}Ef$$z)&2Xy0P}vWU24fY5J%9MsDp)CpIHpE5C@+7~)jvZSyxW$`%%z@+ z2}2tBWUxmxRX?DMTmmbiB|d zG?vu-1ph6w;P4iB9PtO+132Kyc*Ix|%qiB2sRusK z?|d8|?ROrq=Yu>$WE{(}j zB5D}%J4m`X7@aPmE{an#(TL6fBf&nCc)dKaeE0AyV$FJvq9jraCbz1UHwA}lq&gdn zIYBK5Q3u^+2KMHZY9(iDMUNrH8$m{e=v_24Hj_f6hBmM{0jqvcjLMK6kLJ;Yp+d17 z-2q(YV}0>@Xy8aP`?(pkLMb{IBG}*E8R2qto)LDy;UIcDn3a+yRn?JV`_*7dNyTUt zv0Awt-9s3?B2Ii%i7PEJ7+q!IoT86qFlh|tl*+XdQ-}M3tNHc)n3fpZC1cxoEqWh; z*RArriUSbE0ldy~=6C_ASQbui>M{b3R3^9cI~Y02pR>d-4@UDSv3O3<6^vRd=zDPS z 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%0DkyjL9uN0 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∧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

Od4`Av(F?6|V-lT3AE* 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"&q1-_EbRQCmdS;}TwSf@kt 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 QS`5ikoKUj+4@mQW0jJMkm;e9( literal 0 HcmV?d00001 diff --git a/WebsitePanel/Lib/References/Microsoft/CRM2013/Microsoft.Xrm.Portal.dll b/WebsitePanel/Lib/References/Microsoft/CRM2013/Microsoft.Xrm.Portal.dll new file mode 100644 index 0000000000000000000000000000000000000000..33eb2197335f4a7000ad28077e820b4b102651b5 GIT binary patch literal 484488 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

r|*Hs)o-gXbm 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 v_!wKYhta6*cOS$mU1g)gLqizzM6a?w8Xi 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

jy=`}jw;wN37&+?DT&!v zGHOD8nN?0HzQG}>g8Xc zQMB2?o}S1ckHeY|a_lWE>k}PB@?%)B!f|6dbd_53XIhF}8uIsKIfU6;7#rNsy_XfW zg)Y%J;A`y3hPt32|9dv!?2K_%tr!x=M~K8RN*?&9|I;1U;`o1+@!N`FVIHvu*dNj@ zQA=yl7(ibm|Ltw3ZdZ;Jx~edq;T9i~+iUQxXiV4< z;q;GCR+7&`%37GFc@>`Czf&z{`gn`CogQ}G?l;zgZ~f$r7Cca8Viz}8_8qkTI*?=N zVo@0_cwK#0sBp(tJ2^haqbXZ94vnk!OyOkA{mb`6wZD<3Lccd$8*v&NGJK)Dto@je zpigg}M6zS>$t){MQ*E;c+-s^QGlp%$;&P9o-c~ix-B(jCX5!)Z7Pf2;BporZHn^?o zPpxy7FISIiK+!8c^uxl&b6C__brS3SeYpZHHtp?N#)t1R3mhbbe|#^MSf}`@g*RC; z=>sd1ivK8su6XZ>&Z6gG>DCj>w)R{4#ji_MOy1pPk&>~7K~keP{!;e3J46y|j9}}B2Z{j+`kr)>6CDZ(Ok95EG0;LjVwY`Wf(>lYHg;pR>kIsHcJ4aGUKw+8 zcfEtzj7j%H3M%VyN8gCg-0Yz5!2xrK@63}NPE~O;L=7I0NP(QnBVH{cUjE1JR`no5 z1z@+Tq9m(tV5ssJ?N;+hOs!xNGYlBsIV~ycv_xsLvQF_!-}1jlS%+2Fl?%Q%Ov1R5i#!^@M--$u)R zFdh#%RYLmAAKmsO+37JnHLq5oxuDy9r1VKR@Z~); zif>~0Dn^dCY7EQkUpqbZ(zC7z*&sxFB&PLC?Tvf-E?YUXk(8Dq=1V-w5Gbj>KUGy9 zd#E|@#iUN^ZHqVLZNm9(-W9az&x}p}x~ls4ll}ceZwj2>s%K>@@9E`@j|`0X3py&ioa%>;3NHowOFAm`&>m~XzT2-ewTNLT&78t~;gAdO zPPI&9uD4V6m3;f`5VRJ$aI?w#o`28u@OVt!oin-O{d2XW0d@{F>#a%pZ1Y!b_qR;B zvF(j&(bm?x;OMBcB91CP37|6E)O2W)wsK! zc;TQu^0Do>ck2EHfA@s$rj7K6*Y&BsU%N5PBWIg%P-AvsfyU>A?Z^C6V@?G2)KuF!kUPR9@hPvp8+KiV` z%$wOW#^+{U5q97MLZVBE_fON7s@A-}eg7HhBB7Oks(KevAaR~IMcPiaYD?E$#!biL zc89Ce3}wo`J@6VQ$0jv>L*7n8c;;@YMVDlCWyy;Bs&ffoDc2wQP#`XTjIU9wu(*j<-mVG(k zG23!A<<=eEy5UQm^P}h6G2bS=EA&xa$9-rv*GE!`u%>kQ*tC3ZPg6E{^Z8>PuCpb) zzgoB`k7N6N`CBN;F0EtXolb+9=JfW-@;OEip19^59=VhBJUswwb};~9^IE4>6Z-&N zwa=(AtYiQ1g`o=DoS*pqRr{@f(`XxL8eq8!Y_z@Dy8y-?^PlQn{vhpNss4Xu3`6Gs z!8#U_$mA7G&mC;0U)FtjJ#eMt)*1`iZ|Ce!JlLFh>iT{ifuk3(*OM+@F^K9PbK@4< zeWrcn;sZOW+U9}#Y};;pe8hATgX3k@ic|0IrZ~&p+^q5WSbtzmdCk3~4R@X~?7B~& zNAea;V^~=j42m}!AK%e+-5~ktHS+=DLZ>5Lloyqg{HL3`?dW^wct7KFrYAE^LMu%= zJZ}lV`QXN7yW<^2mv8#MX*vz$i^5BpYpf%3ZAZEYncjJ>QtgMz1xeYR?}k2_@!HM4 z!M<$ZXe^Zuj-ce+*{`2@^8VNxC^n(ordUm|$Lr34ZxYXp)~3;1+^2BRPePf8;?v;^ z=^_g>#?s&NNvJ45%x)!*!29$6iw6h=;&fmj{$sWt#etY~xhQbQRo&adi|JJ++V&I2 zX+ixw;!TKHUqq~hh*$p>)%%xK6~8avv#_&WT)qckm1Xsm3{_+?`YI}z^^nw}$}aM= z$}VI}-uzL>93Kug!V}U94Dkq9+2a6H0SZdQ<7OvSNQ9etarlQ-1q*!?v6#(E5jg03 z1QY?O{TOS48Fd**8lwB20O01~u_9O>%JS{|4_>*&v-i(lh0iLjxR(M0W}TOt_Um;91fR1ih7*h=^vl5|~IW-T>#&qV8N>D439?dmA-Zc#t| zurjxPlY#q=gw5^JNxXY?{VX^G<+VLs)F#HdmC@gqoaVc z-(#w2-gNUE@v@{m@(bhM7OZ=X$KB@xPLyjT>l43mRN}PHiJ1aS4aRwiFw^Y(=lywP~rR?%GPRiUpG0Mr+4bgal#SS(b4yK2M7V$#fX`-h??6U zy7671Uil@{UrGmMOpCQjoNTS}HNfa)8nnER&@n(uK8MN!?~0oUtXy!T8}(j)b!Ot6K>| zIUF2Yo7Y3FvUVT(2hTr0g-JUc{{+&jNxrMQ2J@gk@Ycoi!;RTx^#NDA42Y#%1(&z( z8sN~^c4Z+w7HG^08{S%bH@D}FCEavfT8+RdS7Gt{&k_5E4|Zfo7`}dAaMrc!mV|0M5|bL z9k{9#SKPLaYOR%Gt8uh-wN|D6KF{a8=iYO3v-&Ij?`z8^&*$?z?|#od_dWBEzeEy5 zBoY69`blID{_20zi7i7d-06osmM#ybzA|8snfJcfFAg`19aMBYjnG>wj61sxw6j_#98#5mo+eRp4iKMt$L9TTyTCe_1GfM7T0s z43Tw19VHp0EB<=^n~vI#2>XK}1ZrKi&e{jkJ1%a9y1oCc*M7x+S~s60Ny>PUyS^7m zr5c4rS?Jm*ZPvQ&n2r9;&wPK$zTz7P_)bgS_QsAoPCb9vtqZ4|wQ$Phv~hpx@Noa^ z-9>Ml*#C=fA3QsB-6y#{emnJuu3J8yeB1Y#XHKm7>e0V#dgS7>FP}aBr2hZD_}kU@ z)peM8{V{LVW!;`qa`ZWS!+qZxHt@jq_7grny<_;@S5Llh)s&~6&mB2`%7fdtbv)s& zp@qZ7_)bHE60_0#`>$&faza~P~5JPlBp0pTQHC=-89>jKE` z3K*WybExT+mfXFv8(8~xq3-w->H+8->IsYydPN1ym$V+CKCwdg5ax}W#EIyqLPDrN z{`f+N0kg3QCU@|qbiZ&ks#=)^sbjm;$^kw$qR%Lwj7F8wri{}Dz?aswy)V29)z3a0 zta2crLrOL_skExGNZ&CvG)Qd>rRkEGkr)~bmVG3kOHxKsC>uui&=6n{{e2X! z{z)hP^wUoWNpnIvW^_bIM<*mX`xwokUvjucOPdHXEHycM68^Ry+AcZ!ST)+|955IF zpIjs}e|l1ComisJI6r-0>;r1Xh6VtIs%Po z(nuB5;Mke&_E<+jw8^3fEnZnG$3F$IRXs`m^O|;0|MrgBhY|=Y2yeqAYke^ z0u2b5LykZL0_Kt<(13s$;|Me$OmPJo5T?2U4G7rXI7w(gnC=QRJl%ll3S5B(ghE%K0b!{t z(15Va6=*k2d=taAk# z5Z1c_4G2Z9Km)=CSD*m_z3WbOjm^Hn{=~&ybe74jPCIxB?AN z(15VT6=*;Ry8;aem99X;Q{yVv zK?9N1u0X>Rxz%;hK;((8K*JNc&2`W~WQ{A(@I;>EI%pvBWLKc!i9E%1&_Lv=u0X>R zd7A5>fymQcfrclt)^*VEIJUbE8pz@dSD*o*&J}1tIMWqqKsd`4Xh1mI6=--$JI8g< zK;*fuKm)=KSD*pmJXfFr;e1!10pS8ypaJ1RSD*pmB3Gc{sn5l(g9aimaRnL>E_DSO z5H52C8W4Ww3N#>G?g}&@T;U2dAYADRG$35%3N#>G?FuwJHNM7m&_Lw1u0R9Ab*?}I z!u75|1HuiiKm)>!u0R9AO|C!#!p*Kg1Hw*MpaJ0)SD*o5mn+bKaH}iOfN+~D(17rB zSD*pmc2}U`>4rO82Mt8-b_E&`?sNqj5PsnbG$7pN3N$>K-|aeRcpUe*4jRbfURR*u ziM-Es&_Lw=!Y^Hc280J)fd+(!T!99Jhh2e&r}#%)2Mt8-aRnL>9(4s8 z5FT>{8W0|L1sV{Za0MC=o^%Bo5PszfG$1_X3N#=*?Fuv?>~#ei5Pt0nG$8DA1sV{Z zaRnNlRzK@HXdv=ASD*pmc~_tT;RRQq0ioU%Xm~Pz(RI*371418HpaB85Z=47k z(L7H+%5~5{^dyI2&gzI`I zfCjP};|es8;!ztp)^*VEIL5gS8Xm`Z*Fgh$PjCeq5RP^Q8W4_g1sV`0x&jRdlU#uY zgkxQShNt++u7d_5r?>(QM7o_Y)pgK7Vfxlb5;)X?PO4 zbv#bDecXP@o~y=SUqWK`yofbFVl7Z>k}rE9{w5@bdTOx~EDiNi7IpTHarTK}eU*vG zjDq7ZK@2SC9_rR{BSwuFJ8JCciK-+?5ctUok%6a)6t2YW;Ud@tRpCJSrb>;dz#;Ek z{2jQoK)!?BS?$?N^Jn633XXoaP6MA23~d0{|9rSDwfwMKQd5?cN9eL>!jVDJ4_Jr>JrqFj>~7LP@=Te(Qgc|dvQtX3Bp?6r%48XKeDC9vC6Bn4SVO#wcrWn<;sK(p z()b>$w8Y`7G=~MNj$L)WY*>Zkj9j{E%c^9#pZI&mv|p|D%v`PIW)X)I^ND4|n~1Lw z|4K|=qw!nTbV}(iSFO2VO?TN%+(UdFm@J>J`EX5dIeKl6wY_B_v7C51@oM4?#Cw3r z^5fbDVEc6qYx~ROb)(nym)XRH!0ysv{Wt5Pp%V!_Jgv*K0jLApQ%e*tV(`G_B`2E*+=#s z**1BB>mI`(y*%4%avTOp`Czj11OEFI507Wz+0Dp$`i`>fL$XokVfy|B_A+|xQL@a$ zYP4>&d5ml{*;w-w*&?!W=GSBuWaG`VWEX?IjGlgz>;|%_=3TP8$)=kR$et$4G5g70 zC7WSBBKr$juKAekd$L*PuVlTGw1j-~E!i<-$C>Zg+T+1eWv=;wzA#u4X1BvG0PA2D znSaxFon=3f-AA^>B>J?ke`{G1*`F*+Ci|MKz@(D3OV&IKO$V|p%Q})x0vl$Qn$Bd$ zTb4m~l4Y4>*ICwu>~XLTNY|C@eX?byhi@nLGe3ZdEHgdH(%U(#A0xBD(&6jp>n;zc zB2U9)-CZ&E9Q9`t9Q+r~h&Zqs?)KRdV z$bVBQNz?cmqBn;+DpwMB6EAH)2Wf9?ukl|KQ#+`ASciPzB-%@8m(o6o=;V0;?Hh^r zcUX^n_R)T=Low|4Xn#uF*-7*C*5uw!x^H-`!?i#s#_RoOCoTPm&WicOQ;EOGROMyj z7nxdO_b!UFh}FdNyJ*aV#E*z+T~!%EoI^Z`cmwh2uA0LiY5z#f>Zb9FiDBa9#683} ziQf{tb=SzL#I+6%P$fwGgxKkDRVENu5o?LNh_4X8Aod)nku!*A9H~8a`;l6=3$j&z zjCjTnRdy2R9i=hrh<`asW73BzP9CPXikLZE?MmVW#GS-_#P^6l5T6{WxxGjHnwUIF z%j!N#_hiFHsdpN20dc?>&3PJe1+kQPG4Wxdld7KfAI4}7-_w3zyrzAf_zkhg1XZR^ z_yfw?Nc$Y(oy3=kU(ws^XpNjmTtqA*UPv4=Me96aik7vQ7@VT<=Mo1`Q?C=Vj`oAo z)Vq)P9`PGu`{}9=Bjyvw&QN7F@qFSV#0Fy5T=nJ=Pas}Fe1Z5avENLMnM%jaqQy|mvVUbf&1D331q68QE4JqCP6`?U_=!%kfI zrE&Lr!9_jIvf3(Q4RJeh2hfeVc+nih+(5jO_z>|ipd0hlqGH56GF9;f+OHGe0lF~< z7F_}FC&aIaKM^}GR($|*1aTrUm$;a?inxIoBA!A#lXyAtYT_-#2Z+xR-ynWS{DSxs zvEvdg_Xy$`;ymI8;>pCbfYJJ2i})3RcDlg-hIBapLh1~ z&c1!~(#{D+&S0w4WqQo&wM^5-+ovx(29b9x)BN`@({lg1Ol$ZP?JJkBgZH-O>UE9+ zr!T97qDMWqPe!choUp9+SYjT~t@)A_=fGaK;v%3^%B?G2Q|}5rZfZWSXW~*ATFIPH@b?G2C zT3@HM@uq|P+_L^@$AaB!nYOm0JYt!)wxc|4+3>W3INN%`vMFiCq{|x)V+oz)-59pt zM(#nnPSRl6%ShKrzOw8?_&Uq?mNmfFSrU$553=Voq`hTYmkjA@nf839^tDWTK2ru+ z_7(E%BEv09Y;Q~#nP6G>_6KndGu5(e_`1q$%O=6sO%_@<2fl8y!eMM*cUf9S;? zWmDiAAVV!%2;Tr1XIWAD7IU~vwk(`p4VGtF9nuYy`IcRTbOU9XW!I#iWR8%vmhDQf z1>0oV-AFe`^sO{(n<-Bq-5}X!*-P*ZmRif+fp4(va2QAINV(Md9_w^aj+ARGd%lw~ zN6Iah>6Vi%cUq=BkuATpOlRv5dE7FctwZD)%iipClQ~LWw(NsWw}HK7*){2RnW6Fr z%XXzd0QMKlwARDqua;@8hsi%3###@TpR7-7HeA{bcG|8r8!nwK)0&Nto|b9NM#un% zF_)1tB!-Q)k-z9%YDUUL%iif61e;-5LPn_>CC6EIWJVCIz_PjUjh0oGod(}%DY5K+ z_{K=kvJc=JBh?OLUB=3()^|?#QZrW0vh4QmL9mM~dmg@Va;0S-!#7TDvaDT?EoQvj zZrR8l)nNBowj90*vd6Ns;hP|PEqe&Qqov-m1MnR!zp*T%=N5B}yl2_qp4DInEIYPm zshKFBSytRL2=4v@E?>5UjgpV|$gF$Id* zveV(4Dfe1-FMN6Oh-I(AmnTnK_BZ%u$qSZs?i&Pq!?MwROU-O~*Rn$RX3L)}I}yG) z@~LH)!8b>~w(M^B^5qB1UV$$kZ}vK4^aXs!Ne9b1^b3M@vutR;QZrZjSylkwTp4WH z$?(mS5tdyG-#j_mvPa>YFVigB58r&5<1lUk3uKY?ojIV?ERYqJT{<8LR%F?Y@GX>p zWe>r(P{IylE{o(O>svpt)GU%SEIWH(5bS)*?t*Wz{LHf7z_(bgx9mIkmdLG^^*tg8 zcDH5Ik0><-@{naE@D<3fEISvzLV3=zJK-yo*DQM(zNPYxW#7WLR6ew<|DaN{Og^z} z%Ag?FmzJ%DZ@K)-va{h^F1{ho7~Kco3Q4o}s$D4r4B>WtsK8l3i+6%Ua96&kllZ zvh2tqrDlzUESoqa2)4~(%w?_ATHl@_Tg+NH*Rr>VRD)e=**Ea5lWQzXJE|J&7KbsH z^>U~6Z9VFstd|EYJNGDK*309TT?=24?6d4X_=@CZhcTB8@}~7o8(L~M$orOU92x}s zvt<{;S1eyx_9T48@(+hGmlFB6^;HimH6_j?FdUhGHY^C%Ngs%T-4CB%dRX=%e16Gt z7<1Vu+158~c&XVaqb$oC9t4}{iQFVP*4KGNso5m?mSv9!f-SLZI((&ayk&*(l}fQ? zrSJu0vt>Kr3rLk^cfxmqoMPG2@SPxMS@t%3o8>~w{sG@+xze)kBTG$CZnW&EkwLKA z9me*R$-UNBGU_0nPCQ~+Ep7&u$wVA+H4mCGBJy$oMS-nHxl_(Jk0%lZ)LE&FLyHQ3jdrH_8mY>^)<8#wxPu*9Lxs2nr;poFD^Wyj%xLs+_5wi>=l>1Wvq z@KwrS%eKK+B_k}m5WXro+F@*MwM?_VZevUFykxdzW5(+9nMIZ@gm0^?uxt~2Tcyad z)8RW&0+w9_--!~o><0L@$w`*&gKwMES=Inwjht^;r*T2B%Pku}uGE|)*IPClzLVrO z%d{s>mb)#}o;X<^wrnNRog%-oEQoZc$n%z+KJK8LDz8~~-8f@TmET$R2-2M4mR$hf*-~NI-SC|)HI}^!-#N0~vajJgN6xdX=cEtKxpJ9hQzv}{cAaG< zlS<7F*=1SXq#)Q`mfZs1dGerTd*C}yp0w;$_|BJSE&CL{^W{~`l8-Gl7s%U|4LUXm z_D9QR!gry3Y}tDFE|kAJj3aiDd}n?4PuXHF5}bbHzq3=GoKg*zYFYi1gL1KCSax8F zF&9g3%MQYKi5zZOkEzC7B10`3J+;(aDq}61H#G=0*|JUWT_!UvyBNO9WWK{#v!BUQ z>zgobi}{(Xu`F*|HP}W^4#5vPa?jx$Lp*&+z?R_F9%Pr_|go^_CqoCkXZ%%hthn zhrDOm1@PS=2P}IOzTNVfWgo(~TfVWZU4E&#Q+~8;Tz(KNX(Y#pqw)*s=&+P$=Wa2- zkZzX!c5XFTf6MmIJt%j{V9WkK*Otvu)eS79hCbdY+1MY#@r|R6DFSbpoIIS&N40Ge!0N1 zqvs!#2jp_gjzhW!>uDYsd6;{0l`dn~&Y=^m7aEqfU09+amn`#pRQ$@7+d z2j4^Ty2DuOhvj$H*K^@d=3)8JvhfQOeGf~6WlI*O`5uukEh}Hx3G92z&Rf{cw?}-V zoc7(gun$;!%N{_wNAWvJ$M+)AJt}=IyC(f`-(zxwWxLX|!G>G*C!~8^##{C+(mgIy z9mZNeA+uuG0y5`b>=UxgGQAi3gsgKSQ(jq8YMzu$mi>N75Uj$oh9xiiekI#1`+mu9 zz_we~zTludB|9wZftM+slFJ;%x;!n{#;{w+oVq+McUq=(d0KwyM5fdgl$yQrxMdd? z1i_xM>^hY9YkAqSJ5k=Repa^k?KBmTBqF$WJz% z_QbQ&ZnQHh+7r)8XUnuFo|B%IX-_;S11!6}u)+7d46*Ft!oPuyu}pjE1({@-_RadjFOC{kYIm@!4 zOOwDZvTX9wgLuQ@O3UUiHRffx$zd%06}jE|UP%4Pydw8n_Ihff?-kkOiF{R__C&ra zFL)wfl{Y+*ugSaCr*~gpll_+I-PhOTQ_J-3>+ABBWqSAZb@{?iY%Y_V*`vP9oIa+1TC%kSh2 z>(g9*C+AtFx%^IkW|`*lu3TrC=JKxG>M-W=p4?@9n#+6gpkDQB70a$%mIL;-C-Qyy!20$qJBat2{$knl%Zzzn{^p7NgZ$I_(wC?C{vbbD)_Zv; zu#~aRhz(voFX02}Y}th6OTcg>}iLkoUr1m zguloOmTg^e6WAM;ow4GMgpcK2%Pv^)0N9@##uj}dpT@ASV%YaKoz8+!#5c|vBb^1G zNPCAdmj>x#eGjjAC!s<5SoZvi55bP`M1Cs6V%Rtv`HvM}$)_^evgDQj1k3Y8ekSu{ z*wPrbCWiTASee68bi_WBYRh!QK9kctk)O-iF-+Sk@?6s4E5AB;#YE!C(p0t$_O*&Yq=@HdM17&yCbZB;y>h<5jH6CJ9(1q zFGlO~y}WFh*5yZe&oZscL20l|>++NQ(=x3K9s}e5e!M5`pie4kpH4jQ|M35M;QxBy z|9as6dfLALIe0473xE6J-vIm@gnw!HHypoxnS-nCg4AmBDA3@VOR=8#2Jv0ueqsZ# z+I&g-UqoY6Nd+2{0UVw<02nkwfXR4f@Y<@k6Gy}DnHZ2SR~?jq{J82PnP^^H^+93| z^pAj(SAU+k*sNRqRpLr>_Ui9|kF5R)O8bK3q#7t4lD3$>YpP9+nF!o1E7o*LN|n+z z2W2Pf&?{-8Iem@hdDfaSNdeaCQgh3iW0Ed4&#alAw9|aKW>(Up=D4*>fkkWAChav_ z*OnyJn~T&{Ke@TrpO)APKE=7e<@ z!QQfN3*HT{TlX{Am#sS}|1vj0St)m{OEweDee144eSU?=8mV75O={%#z%8iN^GUsY z+7APO$z}*~G%*!kq@|q$9Mf(w?GDse(k>zfh+BYT+V!PZ(csM%%~`QOaS*U`(Wg^V zq=PKNyH}lMDX=S^>!siwoOQsyQUc7vc%;Y?c%G7i_ctnm!(Qxb0lc1YX}?3{QHuxsKkfjtxV0Q)9B2|Ob4*TC#V?U`YT+B4&5A47W)?Lyis z61B%xCu)zaPt+dUM(-)~*3x?>z30+<0k*~zxg=4?{qjT|_p1}NH?B|AalbiH$Nkns z9rsa5TKc#oE&Z6Jn<{Q=Lwi{)$cT~e`pW?sd%tonB9bOBIdEIbCFi-xr_DOg_^&btdSGjDV7s&CB8#UV!0EEr764F z>b-2;KIXHJ`RqeJ4|c4lcR#%cpd68YfZhX)Y@pZR_b|BmWBT~sX{UH;N`m>?+?cNR zMA&_NrNktl)-%CqZ>O3rzVp)uFzrAp1L+-zw7yP5;9V*?^ybo=3%#gQE@SeUwus(h zdW)$SBj&kI0jAwfZyl7uo$DA=$Cw@T?xc4YytSQoQQyUw-SqCIcOPoLCQb3HRK?3^ z?{gI5;P$E?Pdu0SB=HO4!%VfhgT|aktfSIEyKhI;=Ml4++feFzfZ9v@Sf72U;b)yS zGMQ=fQtMg6{jA{uc$a4!VEh5bH_&T*91$OT+o!#q;QQJD@)|F6f_k-^G~S^zNm1AC-OZuIjOmk@fT*pnU-PlRXYFrh$4wB3qaEwdvb4 zA(3rN)HV);a&pgsR0c9;2=!blxm0oy^M{`K)Qe%~^eU#enBD;OIx2Nk>JW2FuN~BP zQP~B>^xnmo-PHF{-v>R|yPnDcdJiNH^u5{p0KE;=6Ovf-q_0hJpVTDQ8TRXa22vkF zB^S!5zPVI#lg6T5`P7T46vKO7-vE_5*#GQXM|}sCU9@*$rejYC?}mQ6sqcgRa=(4_ z)>An^`#{n_--P}L7~eoWA(`7tGV7WAwRxg{YBK9dWgwI>hYg{UOC=Y|uETPfDxZ3B zavxvq;ff6d6vG3H=`Ch_G2%OBsa``I18*PSx3niPejD*o;)B%tFte(YuS0yQ%Mke)$pmsPCg*PyGOu z15^$mCV5Z;^@MippLSoHnn4NeI0M_UmuL^9cObl<4H`l{mwGPsTcxx+P_Ls>2XD6{>!|ObzKi-UD!bs_dgN~E`>5=rcOUfqN7hq6K;;0v2cXZ%ZlIo! z^0j$9J0XQ*ouX|?O=10M52QX2F~f!op`J@U7s}2d`BaJ-Q%t=WdWWNmQ~LNGAEsD0 zT=7mS`-y{xsVUa|C{#o;Q^La$5QH0$}_|3Sndw$yJ+u%K6u0~ z#_XoPkNQ3;`{2E3L_PHb)DJ*O9C?7=2I>i^?1xm2Y3kQzIbMFpmG4-k}(a`6VlkCw6D!OV-nIhOVijcD09aSq%x2( zL#XGb9qapGY%Y{1$L3QhrX8SNN4t)xc2L<(tS2@QQ`>9)Lx}mr0C5L#H?f}BKuqnx zcw#;=K-@vxO{^z25K}uco|sPz5O)xF6YGf$#ME@g6Z44y;tt|&Vm+~enA(Z)#C&3a zxP!QxSWj#qrgmmLF`pP9?jY_a))O0usTqtX<`Vpc;%;I+v4NP{ zo$jLCXY91|sTa`> zP~SmiCzai__tLJXcR%e0>ZUJq?yI>Cpq)>~dCz}2mIe?f$EFx|v?j-Id?kAeV7*EV077@1-cM|s!_Y+MPNzE-{B#MBGl?N!&}^ zPc(xVPuxC)r4aWLC3miG@_5P3^_7jwf_>Q0S+ENyOouHKr^6n9%zD@dCas6veNrv# z*CyA({{GlONjE0x1EeHL#BcqQ@C&~b{35SC?hj@HyW$SgK-@zdg5R_a#eJlak|D>z zGY`KxTL$k6>4v*X-EqIC2UZ^Gi90^MWP|j^b$lP(Tk4BDU;S`5pue1lUrJq!`%RbN z{^MnGxLku=Z^xadyKpb^0o;e&Bct$M${4&4GFG0G@mL{cg4AQxofmQc=_Q$nJ4KV^ zP24kh8+W4K!5S>Tld1BqOv6*@=~z1?NAL_7Pk!_8Om_~R$mZke>RkB??n`})XLc)7 z)9`$3Q)(yR38`Iyj`BO&AEh1zSEOm=vi6D_iQXJGQ>h`IL)_o~ctkeP zK9H`dz9A-cItO;2PO6NcJ&pD}qLb%J+8c>goz6$(cG~B5x)}CFw67t4LiE<;%T8Fa zOwR4}6wrzBdfR7e>0^ln#50Jg{Z$`C%;~Qs`iYkiA0xg*@85{M57YQ#iA#wg;`PMG zh`&2b^ZAN)T9(ESAuc6uAznnhoA?azL*fs_!v<)oNyL|lZxJUCR(&n8mUuJqY2pXO zgd;VkKXE28KwOlqJztTnb(=dxW2%T*N2xN2_}oz%^Ct0&p&HY9nBoEALE_rss!ScJ zxP-WYcslV?;@!ksMr&@55nm;~KU&NBc=S8K@2Dh?(U{J}&&Fw~=`O?3tFLE>+S-yGWjy~kwrjwLQ8mJ=_Ytls-+zfAmq_zz;n6ixNW zRIT$xlKlFNs~}YUC8+dgAzbTAyk2w6@0)ow^my)5vZMRCkoIv}Y{P_!YEk zh$)LkVxg}Ai^c&bE}96;r+sdxX|UJOcJ>LK`lHnMQgOD^`1t*W z|A?geyim(>V$w|e1kCWIn%k$TS`!Do`wD0O;OrTkeZnV84@au+nW}WzSlE@zG;O@S zbJ=Wo-(IHqZ&gtVux}iddf1Wl^vQIjGdPMJ4SNRC z863?f!k&qASc8K&8|i#9i#P}Au#OCIF4FmMOjewSbVlX_eX;=Q^jj-=uoug0*h_#u z+_TSzT}WJpqofbdh7^}0ox$;3@pz>3$x7lXq{b>CKp&3q1+doveX<_u4DQ-1`jOg) z=RC_{Z$dhsY$TTAX@S9cfZ}FZ1N{VI8S*fA>a-3@2zeMh5h{Yc1?LS0zqV1VLaum^ zg;Hay4=h(1){{?XWKa`tWqD z4)$fl%aNZ?en!Nv1fX9@yc+rWAs~Z$_>@xd~|G z7Ubu{Q%}WP`>5~IMgR{j~VE>u;F-kV_3Gq|BbLx`@;^!#e$QMAL{8iq9{WqXb{?4`Sz9fE) z@_q6Z@f)n|XXIO;PyT_r82KmAC*Pq)M*ao#$@i#{ksp9QtaNt(_P>EX`3ZHwj@A4b zwlN>W_5tygCDQ;qk(g{ggOWsSXTE@*LQFG%gPuxkkLUIHrV`L69r0!w)>Hyw-)p{w z-5Kb^ntK0)-G$iA{0mA~Vt4Zc^d7`s<{O3$9@yYDZW#*nVTH8}*u#k24x-4 z$Oe-GyNFn9a-ozEH<~=?e&QxG8#;a!4kcjnVV?l>$!3F}fe3!D4Jr4^!Gl^%LV(4cP&ozGNJAghp&uoHyKF}u@m;mexf%wLd*$n$);-#hx z$|c0hObGhVh*y~{(61z3Z7QK(1N6zYrW*EjK%ZQ1PK12}aVOq0@yX3VBfHGWux}yW zYEFf68}W8?I`p3tcbo0d?*w9hYwBR%1;qZ=oCW(H;(g{EDEAWYH#?v|0L1>*oDcg! zpidq)7s7r7=#$6H#jqa-`s4|7DeNbKK6%Rg4EEDNpZwZf0ec@1`&Dxl?B|Ftm}{Us zPpmiBL4T3>vbh2JOT<^WlH{vE>|@PN#Jmo~n@DCC?B4*fcQv=cev9~yxgE;e#CN&2 ze8}WYxVjpYnh5aX>Pd+mD!~Qez6Z1 zf5ZBe*t-({ZXSpJB@la5^CWCMe}nxk*Qxvm@n2>yl<$Z?n0<)(5s3XK*Q*rYv#^ct zdFVbMmLK-j!)^z}9@6&`>@*Q9r4n}~B(nvG4H9~U<-DPe7V8Kc*!#{VYI50z90{ZnOr zpg0_=3~j6$u_9bHqM&5+h?)M1V5p|dUtTq$Bp8%M;n234++YBFjz3u854W6z;S$Xw zue>TyRa00~;cqdWIC1&ql~qOM#s2&fPZkR|oZv66k|q8v)&9z=+){t><|Y2h>R^@R zhRQbvHdTjMCkIbDE9CmaRe_Cx;-V_Q%nKCz%Pak;BpOl`@K?&h@TQ{jz)8$O z3jE=%XkfJVIVEL*@<3%3N(gy%r{DsARTWp6o{!1|oZ=Q&2Z}e(3Y3>boKB_%ff9c~ zO?h!%Sy3Pu@huO9H*XAvPK*e#!8y5w5zqXh@MeEiMX;#YAJszT0aOfih)B8Bl~tj# zTztzhBCRYcEAxjVw9sEv79sJ~omo^_x*=2)jy7Osbwwn8xqm}WNlDmWSs9UXD$%S6 zi*3N-YJYXKBDuk$Kv^_l!Io$}@~WbCepy8*TouW&urwU1stQK4DGYo2Ab+E$rv8oo zaM)k65TnZxEvPE0s;=}5XkIuR3eWRz^#>)V3TuRKsIKzohJry%FiatLesH>aXNKnE zx6@-uD2RDu+ezK+k>XN+nIDBUsszi7mz_N6oawK^tnk#sTlUgQe>lH|vCe@|$|{RP;b35c6x38!`OCx}qVmeC%d9kFNi~jq zW&RN;Bv2G|k1+Xp+p2H`3Tz1aXBJfz*>rISVNqvvf3SYEn`>0795LHpj=YNnGk#f7 zu-d<;uJiisL~I|(r`eWeT?nLLiA8UMNv5p|0NZnKzUVuiJvD7 zGTUDjr(w^kd$$6Ad5Iq(v}|Dgh33(wm%xg+&q*8N0ZP!&%-^T zUfFZrrH3k~XdNEMDnNHZ#85_@l;(w;`Q?dQuOtwi9d?K8&QmSY`dJ~@Ry`6*Pn5YaQAIbw z+-jU1l^56O>7moVUNzdyUUgB}UmVb_C_X_!P1%M}FsjchD&JIHvsdIomzM-oGTI1G! zR&~&`f955JGrzUDu9NMJ5cN3MCfaq56>&PWsq564{!L-Of8oYOMd2b`2L%I_Wll*= z1v}Tc^8#gos^){{7j3g=!^XH*9_yLQctqN?K3g1|}k(B4!$ z2c#r`Lwc3XHNPa-Qs;WzO>}L3d2tAL$TqPNZh=mVoQwFPV53^aq_D%Ob@uF2+z{(! zcDg6Yttk%Lw&6T8@5D;?qI6DGRmB`XZasu;qwH+4(_~?}y;`ulA7?5>o#7%}C16tU zR!mHcUTH+)3aU4h1uFGqVsUk-stB$1W904G2IxMPLB!(7eBRbUvGP}Uy~6(bK;u^@n(Beq5}i)t#lX}FEmZfPl_LfochE;09K znm4M2F(X}b7=Yi6_ZCZA(}(nAN!cR1vgW- zeq?mAX+xam*ZcvL*|gx+)NMGtGMl!V4cbY6Q!ErlU*W2_iwD}!m z+#bx{K#$X7_iWbPro9xZWW(dmfyG~^hvM8%CVb#3)?fU`C2>6l@>O@ zwro^r4;~yIlYmY7_m%0c|}hKCdRawTZl%iqgEi1Jqot zT8n9%Pg7;Jcv|apI!`_02HHCp?1sUcKaneO_i~;c-gF*KOqQmzYAR4$hpkG_hMJgE zHlJqQp42T*Id4X-M0)aUac+9EY&lSKY;F!Smu8)<&)C?ArshU#^ULdRDt*gyCeGW` zAh$5U*44_G*r=Afx!GRit(S6t6>gD~J1-yMz_hI<&prot_R9sKV71=Esr0=374r~G zN3oThIGC-)Xg)0z#ync`x0ZiPX+2L(=LI(UtFZYm2-!FG^!`;T?xB^2g7!um?up?Q zfXc$qT))4<=_RdvTQgxx+8pd`B%T88mf=;}oLNlGoipB<{^B4WyXXyW_f0^1a=_DE zeVHI!UWCV^?(KQ+-EASYxB&S%<`}FNcJxjp7`skh0qHUyj zAJpBtaA;{VWpu{1o;hpXhA?e1!rEE|H`_MHx1kFEN%4_aMx8FqFE8B$ zH(cWJXged`#);Xg=Djg#JvqlF^E#T(E8_8nqX+bOuP;W0@j$3iwVU#~;}Dn3z1WG# zOZcb;H|2|~8a)x2ua9ktv5C*~mv4$(G`J$BY9(Gk##rtge)f@1*w$xv; z1g~=29f#F&Dsc+C2rstcK7DLD8?XqE5u(o(w0oPVAe-2f?o8R3dfV=Z)nekBXi99N zrUINC8a37J`q&QOnP3a;XR4O`T2`a(@uqRRtf`^In8&s}!kcPT+}KG=)oNTN&r69V zo0o(_RWn0nMFIPMPULA|V~4)H?>thCyf(8SxWV1u@$I;1k^;WUY)?Ys3n{1!I?vmj z2z@EMq9U3)x|3|Cs_fO~d^!qEw8BYapL^Cs3*)HAG>(z6isl(@EdxAMz0nMvwlgM9 z)JXhBBC0biR$+|WL5@Gd)YrJT7!oHo*E>!1Ol(^{4U5*(HY&EJkztg$;*Se$uvb}l zS#7hwBz7Ny`HO(OZFnRe`-l+^=ZrV{)RV8cC{$NEZ|2$(v`Po3xps4qnssW*Ci;Yl zn$m5&?J76SrPkYW$GM4GiPF4U?Oo>8dX(lBGXzW*t7uH@m@uf3q*2X`62qJGF`aXJ zAa+_hshadOJ7`S}jGdeM!yuTg^lj@s7TY(CI-$8nHaSCu*VK4N)L%JMe+N~9!%E&( zzqWNdz$SYiviX>Kp%a~rBPIkLpr8(_~cZdFf!bAv1=>kVkK<2;YC zxxFj(fT2RutJd zZPI4ln!1@ymr0xRMT=^*HCsn>TVnHWodYr6xM9m(gf;Z^5ftuuG(GwpvY3!Y1L7UZ z_-Wp(SL^0=Hd(b616VU}MAH@X%m*7BH{P~v+e+__SehHGnCqjw^5Sp}f5qdu>F4aG zXW>;q`|c)w%UOb-Jw&duqAuLw-HM+9hdsY|!5t~wahMyI<(ne?%o8=FP{^t zcHd~!$!6=q$>rLP-bA%*R8t;J6Ri|}pXk-?0YLo!8AHN=~E-R0HnG>>JdliPO%bk~^xgmKj&hREOUYvH4y1&4Sykxux zzjmL8`%{g|(w>S)Y+;nCFRt>8iC3LiTqibakqvLcp()~8%J6vA#x~b{H&wHKP2WuK zFl}=_rfb}BPKr1++Hdi_)6`h&bxZ6ptI})}nyX^mxZ=eaz1sKl#v;pbpIbSnv-)!_ zXIJPA#K9C-No@(|?*S_GU365xm8{*^Hsn4Fw?IQD=9fEbAheiyY-k(u#t*y$`t+~G zT-~5H<+n{Aac>Ia#t43wUS49~5Za>4UT80)D}l~UJg2WwbjwM+!3#HT#O+|NLeXNC zJ#lTQ^}_0^U?{Y?)sFDQwINsCM7$HJnF@2GX-iz={93F+T&^ugd-8T?W*e&8T4)ow zwpYB?kHmc=Xwzkc= z{?>A7WyZ#A52$y`TaTUJo(a}mQ#~Oq*RTx}%M;RaUb#iVAZ|13l2N)oMJ`@c*n|b0 z+^4xS`BOdI#5MY<&9ddt6(P~wqt%pX z!bn`?5fz>)Y4>9llIVjd_Z-oAv&H-55)X0ko|eDLc~2we!U;njS){A^Or3{V?z3FgqOv&C`a z$|m|Ul5Ka>&1kiD%@&?hSs5x0=zBVOd^5*g3C@`>xPI~LZE;?o!6{WQ$~xzN;%QWF=2DQ*mTif97W?DEjBLF zlty_+b&Zd0AwwHU%{C`md~8#qx>Kzvj~3mijDl*uc!l3JU=6c^&4G#vKbC(k3YTLL z#mS|h47^6fCOR7z$&3sOkz`-%hxEm?!I*<&~&!z-EZL z;n8(8TZhLM8h!51g(NDY(X;)bDDk{X;Ovd1AW-Fx`U{GSg8tdK>a2*VbU{&h34U^K z>l4jneo;Bz9n$q73qyEQN*0#uRb>tas|LTTcRQr9>Mn&L%PK3E<6bA0S!5qa$DkCy z;ueKUXI4btdgLT=*2r_;D?rbq63%9?Q=K7^q z9@uoP=}Zhu@^Pmp%q0t*q0~KbWmQp`=gr<|2>ZfAwWlHp=!`N?SXA^Lot*Np@ELn3 zc38Y|%r{2RV!i1Y5hKKqxTOG{l0EW@GW!F3&Do>dl>_yJ8ZUdcUe>~sxviIOR(4ItXmC_x0uS|= zc#mGs8Jtv}1v4Fi$Ev7bTVWH}IxsPJ4W6|0dAX*GWJPb3x%owvxJCX(VBZn0!Tv&T z$`|-`Ia_NvwRCp*F{|6g&eKRd%Z@UwS2Kxir02CLXNb5UQgdnaRr|bcxXZ7{vKciv zLDyHeVBv~Rm$=l4(zQ&F$mCw`we=~8E<$RT=fvJpPd44V;8={V9#XE9C6*XbJe^k|!s|?FN>Ix{%8oc6WrdN^8mV}iq)gPaVui_L0 zHkCK!imbgD?<@>pVd1EpJFkF8??6$xr_Q=)WHiS1>C8aUrt%OriDF$|ctiE3O}aK+ zG|bU34RircEEgO*5?Trx!h8AdP(a|~KTGgh(KcF@(d_JMqM8n_4S^u`+EH()VqM;r zYOFF^RUzvoZMduH>WpINM0q@E!21G-89(Zbiq_sc>!+G;QR`w(9VVwO;5KzxzTfu z5SAw`4B76rTc-2YG|qf0FjB}9Ph8!pu>c1ETn)JE2qROJz`paSH0?sRv;9@>0zuI* z>$B4>f1wU9e(@rnV5`^=o%9J-3!P z%k@jXF50W_Zs0Nyz2srq24}_0$RO#F4*&9ky#7&hfo>u8uRaK8BXdgw!4mc0QbxDS zN~&{;Dm@O(eO4f>3)&;t=^H&8)*|L(ZLbA7-Edusg>+HLO5L0nhMkGSbBan_3zpi| zbPFoVBMav`6KAPM8BxroY3+dPMG~$aM!35mG#aI1uHg}XiFXI)Tp;6~T(M_gsNI7X zOE=)S7TI+>yE^R5s{9rD+CufFQjZhaG)^#Aubgxb5Dnx0AUZNLn=E`*5T^psGxo@-;h$w!q=v7M23a^75}`W-4abxurLX+I6$jjDte6v@cPUq4b-;rmoo_=c3UFGZe}ut)L} z4QnQJIQFntHZS-^{hrbN$E4tcJ&&BUdReb=AMQvQ{nRnb?w+t;2Z3Y`@)6fzaMD0EfmrqErXheA(< zUJAVx`T!D=GjmXF&iNO$k~vSGit9+ zLTK&P$r=j+SMAk_$(gm+LkFs^1nFw8*Z7+mf3p*RGvjaeCHvHMD@sVwqEcY^)bKI* zRwwvY6q$m5J|?%OQ6$@($u%8hRhS_c`ACsNd&H?ug<#YH=Nr zdq;FgXLLxuHsV1|v`71;GyA2p_Deqd1&Ag+s9E6;^WEd*yGJ{zvvyKGN>HbEisphY zpRQ1=fUl7NdQt` zLYBhx#Gmk=w&;l@t@aa6wVz=9p3p`iL;x?Pqy0>*$wsw2RaW+jcvcA`?9zp6MHbWXA1om1WD&M7ts zK3`_nj1HNd+hzHT{!PikX5AsP_GM(Pg=Kcurus~Jda`2XVhzk(nz`6%+J&_@%Mloi zT9L~!0Ld6<bHL7)GMF4 z%-{dq>-SFU+U>K4rrnh>`kwZ`9sBHG*ALh<{HmUxj=tlbCp+HUZseffo%&d)zSF^# z7rpu3_>bmIydW>P-6sc*J#%o^DfiTWdu3hdsu%t_d(oe-T3zy|o;T%v@Xh9wYO!~?#!H$xfpq-BTwx3YU@#g=J^Kk-IV*LtvfyAt+Yug>ik1y z?Yq?XBj3#0KkKZ@tZg9q!Xe*MI+&0pm8JQE6q7j|mlr%0_Mrm!Y`Pqer^O+scv6lo6Gk z3*JLihR%}A?SsY{X|cH@>^XO?=gUI)Hk^!VsgH2}6n7Iv@Qpbc-eRg~OPzkj$6<|R zx0uB9t}#B)i|>rK7;W!Q;VP-Ze&Glo!IL2^rir<|DcSf4UyI>--i6!u_)MORYcVj| zSkG-}oMz+GdNRI^DV=V{-7)7&OEMK7OKmYJUy^V-H}XU8X!0re#$SucoyIl&wWijG z*ImUSTHvwxz~FySp!bVUtUUZ(EA0f*1HOq&-QXZIw&KJ9Mxi1+2@n)H2)9hDW5_` zOKWvt8hweY^&aqktE=^B@7KIqpCygH_tpAVX5WpEei2Ms?OxoC@_aX~^%i))D%O@A zU8Bz>;R;>9J0>B|ku)>@FylSW9g-vWMo)QNnm9sv3;Zt*-kEylSm;a3$1>7es_~9e z3BJP_Jxl2v-SOMA6wevTe^KmOPZ{k!hs8tGsuEB38F9zaLsZB*Paz$=2i`-J|4L8( z$uAEKf*dy48AEh_e0;1HGN-9-DgbnB%7~Bj{;Tuh=Ge&Swr$VKKY7CQg73Q89i`n=<3inEn@~#GhgvqEd=HZAp(k zCp$zX#O&3)Cvk@;|Cn8K+*#lMqL8@L#6wg_%rVS!UU`VJkD0ddC!&X_l=Yqo)iLJG z^$-=%!cH>gRQC`S7qfxHo*N&c5@Lqkb29zE$li1IeTcG;>7Urs^+Qxb%wekW`TZd( zBWBjdTo4?h0%8W)a|LmTvTt+(*5oC}Au4KN14r?yHtj^P9 z2lWgIPs_c>%na|9fL=WMy+w}y|0>dZCD7hEE8|z-{`;I`y2+mJHLmj^>n884@95rF z;qr9eh8&Ws=YVI{cW?SL-rh3*i!0fdONyHS|3yi)XL`1t=!RX zDjK{xvnq%=???E{d&lzPKBq`F1o{S^!0Raq5q2sR1pl-=&M+EgXg;k-ZKA- zVQuCL*_LGQG##R{+HkkN(Xq&uk4L^nj&1R_XS1IR-=aTyZ)*n5>JZ*}6{$gvk;$#s zpve!C|3_75>Wk$zgH~@&I`5W7syy1ruokQAzI+-<(dylMHw9i-jU;NdT28M<;#+;( zt$Aiu)40?f7X%Cbig+PK|S#OP_0GYK!S{IEvn# zin$RMX+@(AwdoDz5N)X5C&m3+-m?B@B{sV$9-niOi#t^untiH-qX(>&FtY0QBg5> zHk;Tb9-?AmwxGzs{J-|D1FVVc+s}lADiMsJA|*5xB`_%zDbhiZ4gzWv>C!QD%L)Mz zMU)k+D2Aq@fGGA}R}mFdEGugPQ4mBBL_t*EorFLlD7)X{=l{L`n|#U4opR2(_niBi zbKA-A7&uBSc^xsiAA;^EF^uA|Z^aQ&dX$**nFz{lMX~Pithwn{(3>lo|jgEw%)4T_#a_j!Xu2{`}!jZ0cNxrFH=%~k!CqP>d zaUm0Kal{csgC(PX!p1+XJamL^;Q?7RhmzLhD%lk;<_uOkgZ1Pn3;NGs!3FL_X&9pZ z&;uD#0_@&ebZn}>2*Q7ce8Y3??YE zp@{>23(-72%nP_)k(Ww|X3ln;6~|! zM}zI5AtC8t5>0qm0Fccu*e^bk?(Y@sN4IlvS>gp&2G|CAyV#Qv3QZ$2EEqzw1u}+? z%yA-r5ZUoOh#)c^PY$^GBo1nV2qrTU`#oF;;_DC_C>FF(cpvG%oyf}xg22j46`B@} zqU$|Vo8(K@p^|7i+GLV0)r&&X^(Rv)K3ZBj-ZZfC60EsLSIn{x&_(bNB+ps+AnnfZ ziU2`J2I8xrGuC23O9tJxzTfVQ?$JkQf^Rh#Xswon!Kzzx7rSv6vlVS5EDna31=3Tu zfpJ?18c>6V2bd=W{-IA}FxMIpzTV)L5jR)R?aAH3&|@Mu#lK(7a~}kOAW;nSkPtL# zA`}YZo-+LWG<-ooBXsLig^0%NqyPW;PbdKxU6l`k&1O8rs5_&C?eZ~)p0JOrv6)t@u z(Thvvi#=-uwSIpWU=@w?@RX3_w{^T_1}g0-g>Ad$c6J)rkf>#tH|?)Xc(^sAUY5;GgH)5ugR!Z|lAwK8+8^=}5Nst(}yD zd~hrUf{fXE=F}Z7y>GSsBVFr);36<6D>RCZAJCvT$T?aAzfS|ToB!esysObLI|={Q zh4A02|1vZ>5(WbyOqo1Ek?AS3Q$C8rLKqfPCKH_6h=F0U7$PEwn}HX=$lxHvR#0?? zAdH2XIv5zsnuQo36L`*yMMMN(h=t9=BtVEF&vV%ENAzy$q?Er#wp8TJKXooPY{Js< zbQV*Ji7>I35vITamH-CEU|(9tq5o4vio>nwcQ-6U50>gi6r?;Z1ZYTJu4YhG-8Yk;L+!BAGZMhDs(zz}h)D zI+Ld&s+^>Jm|0-N5i%1 z1r>B1(>RovG7o-Z9ioPn@6t_kpV)PQBHl{Nc=LzF%hT&bRrj~$E?@KLT||J*t)RbN z9mM@^*oup2F{wImNY(%JfxP1rd*TRj(YMm5^p&jvS6T(WOe^+Sd~x~Ngmh}Am$&et zjZWkIHk$l)<-Y1`lE2A4Guo%EiQS*qVN-25;=Q15(46tZ8p9zbA62T#Iph)HLSZVBd&pD<~$DGt< z)%a_tyY)uRv-VG%!L}heW$Z*mI$^vrt@}@B%Lvg{29waUjLuITd$SUY46 zV$HH*S)`ctcQ5!bLNr4820S8y12w@}%?M6-;>f|#6;z9CvjkSD0d7G&1cgDZ#NmWs z7;B5zAhWq?1e0RW&mcB7b~pwge#`eMM9a;C~ zOC}g8i0+x8vo64cbO>?KZ@c6k_{Q&^?NvucN2Kb9hGfjuXxXJ6W(VF??BDS0M!1K; z+D6S=%e3D3KfJ%_)P~*eDOnP%7AKt&_YYH-D?3bj^gJ{MtBQDyD=FNNKjql$mo6O^ z_E%4=ohq@b=tY(C>-dn;%q4mkk0(3tk=lvSHW3 zwZ<#UH&9=>8x=Z9(Oe6wj-(YC?bE3vIksv^+qc;*t0lywmZ`VTqZhT*JyeTsn7n#w zc4s#!$3%OEm~rnp{Zl9D(V5cDb8b+t>Xdc1{I;*lM2ar#C#R^>u6{~MOyZElu2`kj z$txUAPR=On%Kw`7e#{PgR#%0nV*UOXu(s6~O=eJ{Kv$90Us>+Edgs*OnYFqb$9;YA zU|CeEZ=LrQRgLMTyCy2&<&RxDsB#4Fc;=~WCf#~Z{Ly2zw|gR%PlJIZ3VM+EttDO;eNa{q~2M*k%ZK$iZ*vRW2|s1|>xwuA&O?pw+ykd*)N^ z9&Zy$=u4JAx2A_dG3h{@(8?`|1$a?liI|hW(GL|Nqo#x-OsA5yW@^o#`Fr^z-a2HG zmoHU^MDy~ZlDxD*Qb*g{2hpNXX*4fiJ^-wgY`Ssxh_nY>p`$^SmOg2_LsS8ALwPD- z9S{J4EC7Ki7XJtUfh_||2Ds;m=#r>p66lpg*bq3Mi%$Ro?GXTi+%$l|S$_`#ze79f zo0`kUJMzP@>Eqm~iT8K?(bA(=V{Rv$^LEj*pasX{t1vsy#4O3l$lWP+c~#!}cXp>X z&+HX{UYGrTp~~3F>8VnBD{4z_msfQ!q5AS&azzrK zWXqyD90G%Lid2#xw{BrQi!5jhk}00!o%3$Rh4HIq-?BSw-qUW78EX2dX~nAvtn4LA zM5gs%wzf$MoCEx8anO2^yNN3jUnhSBtD&MlwX=*OxBH_wg_8f z8TzVgS-kOCg#uQ)QdU=btEB({7qpYo@@tARAkeXwV562zVIYz0T8y0 zJPGw1c}|K9y!*%`WCjPqR0bgo{huWwPcRmuNp#c_@E2B5@ocXQ_+wNug+iW5r2sHP z-7_>vL6g4{XGe0a4m0M_Cn3J)<#sG45>2b6(c04(i&|r*IG1MfcDP7aCH)K%^Gj8ST z3a+NxyD_It$5D>YdFbHNc$eh;&cd*i>Q2JY{`ISlHteYr!nzc*#w=DKZ*_4kp(_ZXacL_#JF+%z789V0IadVHcm zuYnn4!iQz}V&-CFx2aoSsuDg=uM>6IJg=buapYi`HDZNWu*_H{DMo)E%LeS70ZiKm zcwuZ5bLFBIK(W~f0A+3(pcr?m&fjw6&}%y~5;15-|eqYzPpjJdHT}OY?*G^c9#bMH6&*@gr>wFKlC)pSab4}0pk4tNql(5eQn+XjqfsI9Z>gTS{kih$G z*k0R}_i5Y|5kK9mcgqxPPT#3>YpRahGLc@PCGGhnQ_gw=>0AlTT=uPmlnk`+iPi$e z+uN>*yj_i7?+}V7*c+};o4u29r!(Zn#WxZ8?wj0KW~H+x&lZ^fu_`}6G^$X$m83c0 z`YVRcxcA|Q3<8)v&WF>f(th&zbx$Oo`o0gpZCP_~!t3}e*dzCP)t@P>%PAJ^B}_Fg zY3QjdT4i}!Xt9;wVq^O<(>M0546Aa01Dd~`2{y{oP`l{G1ZzyH zJ6r$a>UJk($CBGmCfciveS2r`9ov#9gech}bl-Kely%l*(@mw@=*X1EP;k@ovv1Z4 zjs1wnZfjqAQ=yWovSwGu`v6(>&&wNA<(eDq^K&mMyWB|sWKktjz35OS-O;^RKJ{NsWG)U#bK`Vm<9p$-k^*OBy3IRJY?6W-yUo&Z&KX)TlZZ;r|@x? zQ0F5S8M|jgHdg+UQ`P+UZEd(Gm}ryNle|~bYP<+@cXI38xUcXIIY;5ukOX4cdi<%f z<>@OV*WCx@<4nl0H?yDVCuQb(VUEg)ANu?;`!IZ4X^v}O5AO0Mq8Jyw4*>Mu`y=!o zwjs=i-Vy^K4A2|kIfNu`L$OsEo0x$lrYDRa4t{fe3cP;0d%={5FOkl*VHK9xMtZy# zB53&iuR;C4)pQ4CEwOdoWx9a5_LJ8~N@8no$2-}Tt`~<8-4g~{ke^zxa;Y&>)TzVo;V!X z)X(|&D8?0f1j?R6w&+Pb3@#A4e^gc^$}+#+V9#BEXvq?B6sG_0Mb<_ ze6u&*NP1fu(WqWXhSGDBY!gE^oWT&g-W*}rw_23&?2@S0hW3XiCbZb6t-7i;V^RM3 zmNP5GOqbWVFcjY+H%`a-(HFoIM91UrJ|4fV%iyHHM>$Eev1fJ4O((aeT@hI!#WQVd zKE$8jKXIA2T3cSW8ci@(#=F8$K2(9(E_O}*bd_28%bqtYkG?3_7o~N={_0ZYaZ_T% z44l_5oo{J2{!Dp!nO(s3-KKpB@rnsKQiy+(>9|EQ*K?EM>W@toi6*0$&A_FXsh!p|m7jS`f68>4tWn|X1n>#;*YhHGs8OQ+LCW5K4_75sMzt=`uRuLFMO@o%IksGUxhXA-Flm> z)`!2kfd0sCa_*x~nmI-qbEShT2>D;gOzd9JeUT6PdJ$0FeqFx=r}y{UZj-^zXIA0` z)LrZEq!tk%kKyTh#)AIc!LDgBG9KZ*Dup_O+y}8_;0$($2&|B>v`>;R)mY*G>B2MI z+M-@$F%O9`WM{;YrIDaM%sAO_qqgi3tX%m7+3z+seHfvF`q3_KwO4I)U6UymbxqQdrc3>OTZtJ|Y-C?|;lSPsv6MNP;hW3jDz^l< zs!wkIbgNWl-TR9CHx4#QcTcT|Eqml6pZ?*c*@h6CK*mltlSh4@V~>r!d&fFmYsdX4 z{m*c|*oMwTfX6C>do z$_pbiYyI%*@I|}F)D>sQRi|Z7sbf5rH9MVq*X(IY@^=4N`Au23R(+i^e~)&T|MB~6 zlOK}1FHt95dT($TDiHRE=M`TttITemEU{hpnyJr~1#uTu)YQ-D{^8ivy(wNnIG2f; zhA=TIgZdF9Gci)&lqB0CH~caWVEEAp9(!DfOdOP2fGjqU5Q2d<4%i!xJQf`}AcMgJ zvNobc)1E)X8rxlLUsqmuJ=Y1c`f4w2Yrg1i;K5kaF2D{y4J@ZYL6GG-8=KhAZW{1B*`m! zy=l~gaHl7-CY5^3vHHymn*;Z@VrBHb3+lXL7pLmgCKY-vev)b+ur*25LaKA}!)vNK zu}(K-GU5t6OK)#)GnOuQi&mKO#Qn3OaF}$XyJ>xfQ@d{JrI^|UV%cvcK0Iql#>IZU zavU#NVJIfJhLxgTxF{hj@5qM4Xr~Kx)8wosMs)WuN7Ub9-M$`!LCte~tVFKG8>; zDk}U{wi2%`P+ej3RoDtg6x+)E9&cK7w6(KpdgMSMhAKue_Um<{wbYIZLvo~I5n?SQ zIMC;k2SIH3?!%Y7v*BQneuHEG=_rK4^60S&^40$`A!7Nz;iy8XEPBH32;%n%ag+){ z`)m|qXB&W{LPX)P`vD=6w6MQ(wCS$1wgq@dNW8Qv@4PDDrK>>@#(714LO(Vkrlkdf z0XKx~+deR1_}+wX$frLFBrV`A^Fxt*C7-EmL_NMCpZ-D&2!YH_qjJTEd@~5MxFrYq zyhMlymZGfeLR=Xx#7LVEwW{pT4v*N!E&knCf9bD=5l4`#WBBZ8v5})%NBNjeRuU~aVE9HsaGy}sN}$= zFC81kn=bGE@{}IGU$WznyYtn%e_uOu;j6v24Q=(X>$O{VzMb*ZH}hZW8auo7#HU|) zbIA22mq+Yc9y`YnOc27l2-!Cog3XCV^EMe$T7d1|-mn05Z0g?8U|hru1QbjG6r;OH zu!o6cWDu<=&gcj2VGT1H7JxAseh))q3=6h`CI9WVLA}@{YnWRDgMl$sVHAu={N($T|Kp9L)RRN`(0?#;v9AH3YMP=LvM>NB@ zATnvS277`=h6hmw)+kGuKMhAq&<>U8h%m~s)t>df42 zNP$L}k>XhWDC97|6I`!2V*m+MwhU$hrDTCnjUtyaE;A6I4y1q?2+-f8fEftTE2MxK z2-<1_W+1@uE;X3xEjyASG39(XqxYw?+TSe{hPY_QGA=WEZ;|a5H80RxQO77f)UiJs z*$DGvq_qZfK_U$)11Rs|{ydq#l-_iN2Pko?!I;vQAlWhqs$cRU>YC)@m!9>c2EH|`MIuD`TP3YdWa-AoFY zIY-)OwbxtKw9zMJJZ4}BolgpwfdKtb3YdWa-BAjdfdD;H3Ya-Z+L((V-za&R@0--L z(TQa|W?%^2K?<0G06jwrn9(h3$!Mg2+NxCkAU^$3zaNC6HDx~1IKa$#aA6P9 zLQYW}?3#K^d4yaD2_Hz|X)oi9r|>XExnmg_V+M)tr$_?~MpMcYWYxR~*(7d2lo3peSk=6Um2N^JY}+Jlo23$po3&z8HOf=) z8>+($aON0O@LK|RG!rRjz~G=Ld@#y`Ssuc1keX<#Mx5JF9{fQTD4t;frS0qoNbwB| zD1Xj0K(b?4Ksj`F03>^c1>}-57Le>37ElI$SGp&5&o&r0V*oIu{76n+Ev-spE@=b@ zii`tAa&_<8Oc${3)?c!ZI2Whr9; zqv8$Hepw1ylr=gYmlKpuS;}}onC0;ZW>mW^q~VJ+%fOWJi!|H7Wc(uCIt1iC1gd=q zC;BH4mJA*=?FHt6bK_VG)L49^Sj-?69k1$*riOlS$poaCl1ed4C0Mi& z!FtjJC}}>DkwyY7ep+b!MWOKtP<%d8{Idj!DbB`TU!q3fBSl~aUei(Ll{(+$;X=Il z+!v22;IG5CthgpvfuPS{(JwR2 zPJcaZ1=VF$)d6q63U75)z*W}MHnO^;%;&z)TQkN#%UjW}Bqzs}<<81>Z}+*vF9KqgC>3Sk<_eGSilFe} zLazc`K%|Kh;S%KtrBCvjFu7(jOcY~rBwq{@Lm{4~e-*5XVO=cAD}+n+F5g|{o8znU zp)5uQyg_e8m8%Nb{$I$y(@|3D%+1Pnd7RmqUT0R@xntaAfnF7^a&NHG<@Wae^A!8I zf1OW{VYzuYJ-XPix^SJ~5pue;#Z9U}lO&V` zUq$J>^bET_JAIz3yez#kq>CG|>}A68O48^sFuMYH2BtcGKhv&A!Fi|P?~f{ahb*qDDf0#keK>9SD_nt^4$b)t7G3O}UG1%KdpW$* z!7~@()E55P8RMsCgvnwu8N`6%3kFc4^ohcE4xLz?cBcc=Sz6_zQt=bdm0uf%a{ zC-B8p0bj**OsCN2F(3RD$4+C5MJr4NF>e)}29GVm>_^bl@Y}Ay1Iqj*!1O`-%J>c& zBO`F(D1PqZ6p8XwI|VQwUnC>4;m&(FM&OGn4zFLPKt{Gx@vXr35q!z(IQ2-ngtaf_ z1+ybHXJH~L>}PYBXbWl;xnYj5Fpa6Pv@y+Vf0LF^#d1#KCkMXrkC-IfGQ*0&f)`SRAlsiXh3L2-18T z)QZ(L@?@5kB-epjMPX!@$S^S_k|Zmc-pjOOlsU>O>Z3@%Eaqo(yr_#IKPSbK%@%PK z_h^en;a2fbOY-(m()J{)_$KKXXjD6*U6}S~I+5udrq?jNo9Qd<_P4W&ADG6pC%%1q ziaV)&pY~QUw>?>|Z@;qr32}dWD%~epeuAmep-=lZVn~OK4)DLj&*nB_F8DU09yDI; z>+pJ58}T-W4zN+~#@ozMVZy_FHS?>OzmMsMkXS`dvIDUuC6k>hP^(x0iB;Uj^dSyC zn*3}sd`@18)SGuC{Z^pu#lVi)9XpCkJI?HA6~&2;u&(0%j%zx070-YsijO){&Bk{k zYbl+mtj=TF1)9`ys2vf-pAw5!*9Uz;LoT2Q;0O+@U=$$|L@hKI07auGwdJrC94{Iz zn5QI=T7Xb_`ZakZ$2SH%kEYNEHek8t8pA#8^=RWEEq9sE+0U37{j4R;%b3tO&6es29SH zvz1qXqH#HLTx>wRPg%26MZc=(B&XiOOq!+Q6l-<`5@LqWYK=D6p3(J;7Kl!awlP{rOE<9c9HT{|7o+2hE)f~X zP;bjv^u0pMM9`5I7w9C*OwfxW4ub|F-UGcV0(lUdB0gn#U&IPT6oQguRPCt<(%)iz z29iD2=Rx1Gz6Lrf@>|duk-vh@k2D$-Q6Je1RBApFnE-xKlo#}(i2FhFqxXVNiKbL! zTJxe0Kypp=3!uGXegmBsorSd{>6_G%9(HUt3i9)sQM%H%iz3KRNu}gp%_uLwG$Z?M zVu_cbjZ+N5j`T!Y4o&OE*fj{fhiPc)pNCi@d7L;BH_a3$ev0#$6p<58A>Fnx>ZXQ1P1?Je#!jjKJM>2RhlrgNEI z&2$6P-ArEq4GU|RNU^#kTFm2W!>mMmF`vb>4^vYF$qSe-Vmc|7Bp+Ca7PI6cw&P{G zfawyZSAuGJceEU1&K6az9>GFiO)HYuGF{H}YNo3|HLo6P^*HQ51*(YWTTyAe&HSgW zsFc2MMWrFjEfD_{bd0S@9@&~SwGt*tAf7D9($?q;hL>&VNMc#5g79S6`CKAPQFs@i z?^WauPX#)oqV3^nm|H;|pJkT4;kiJujGhw5!t;Upt4LS|VdYasCmTQxa;?zirPo)0(x9UDG`t2ob-%} zav}}@y(|&u&nn(xM1H=AImNfC<`b4gB~tvVqC=JrK<17zf1g-Vl_(Ldq8}_7K#3}% z^rA(36;XQ8qMJmVUW~9alIg{Wp^R2rzK&R-G!w;Yyk^$xfF`LZ*?JR@M@3HS?HG^C zR5ZxC6{uPwP9aX*%;+i0MC$`eoLH}FF0?)jbe9a{T8R@+F{%?cSszp4#W7X$KxC4k zg*c_6!;xKpzEaWg$aJ7zCF1m22tQ`!Ldf)5hybHy7D}&$Sjb4G&_diUH97TG;srJA z`^aIUwfI5}qZZOuq;w{m*NI+HnT90cXCzx>l9(%z#T_*oVT)B%88r!LIV0KX+KF9i z*b|mHhW28QiVj&813jgp%~2~19mESNxU6d&^q(Abc8UB$GJcwNN}Az|Ib%{q!Pb`x7wO<`$nOc5_J`cPRH z)7F?OURBZ7n2yHo;vH4C*+pduO> zGQ}Yk(a4Y~-jIlGW{IPWq|GexYe>9oVd^GJiQ;98XcbXJUD3XZ%94y8#l70>rm8vGC zH$==+5v4ao)TxN_P$X8Ui1JV*u2<2^v1`Ny;wBXxiLD3PBoU`~q1ehurgx!uR@J2X z8!BE_5!K&N@wSS{mto?VipZB?;uDG3=5X;XBWY8+Tluv4SoqyW+{5J$p8MMb$>i2i zkGRJaua3@-i!#m7(XsFZlTSzAM|L-r>!>s?&oo;{$HM!YaKny2Pn+p{R4rm@u}7@7 z)Wlt2nk!nWXm#8Opbje96*ty2Pjpq$!MKZn(iqWLo+@fYKZz_U5nXT{GEff-nC6Q~ zAz=%JTSW!&UBp5$OV>;Vs@74!v`AbT5^u4%K}AQRx`@T%W=2an^~K_DHLM0UYsGyM zaagU`6N2i*Q#wi(OT=MDA1b%R6EbzDk~pU9jGt#(BBB{l3dv%rXrZH2pw5hzSw2B} zmx-P#`ZYckNPeD>}>bQBlkFrUrCzBjj&6#e9$0FRh?% zeLz3zsM5SuwChQRsBY()cZfnptHr*SwdVW9a2>5MKO`pU=tlEiv0TOzueQ9^{HQq2 z=xLza&5wyMRrEG|d0aH_MJcSde9&@>`Ek)+MPC8!7d;s*6K7iPGCwJns>s-Cm-#7i zLLy64tM#S>;{-!GMUxSBP^7D92Eq=CTt?Tmn%C*0*ylu%8rG)uC8p=ZC>8Z+9R+leiuxk# zc~PRG;Rt(P%u>;`*3Xz<5J44Hv_1s1P(=${KcE~EOI5U@^$x=!u~J2=F$sTBtWwb( zty6*4tBA(Wm&6?^dJthRi5)6B5_Q=8vUo^Er=s2h+NYw&k=`rfSrt8p^j;CKsEE!8 zuZp)-MD6ocaaqi#5RY`uZd3@g?*!=9fsG0A)Pd7?)`vrSXfnbDr$$} zut;F^VFX!uUD#w8r|`N+)zKk@<*M~ zQ~OdP%dm!PQ1VxY@LNLo-68zJKj7aDk$)P({}RHtXiKd~rj;JTht_!i5c!%YY6$}& zF^O?act>r=w_CO(z{vzA(lTD5{r0) zctMvN#5+wwNn#W-cQP#*OUh3p)WkPbwZ3+?jv}Ofd=izRu-(;B9ApgRmJn7MbLU9;9K-vUXL>0!`Rv7dDg8h-BhiK#hMguMHF>< zIrbGXn(5?DZ-DnOEeE~Vu(;Dqfi-V&F`jm{E03BiB2#$+G*@{Bw6F34Xn*Au&_d-6 z&>_mZphK0Tpd*zJKqn~CW{a52ai?)y567LsamzSvCC9DexbryfLXKOj#3Sxfj=P-W zUd3^*<+wL;+`VjnA9T{NjWWMWnz&Rv(Utf^ozifByF4xpt4Fn#I!m;RC(YR%(r`_9nC-Y&@>9Ds(MkLqnf80-g)HIE09n%%!1SBgk3wj}J z1537m|21qs^9RAV3qQvE31L*$Sx$&ZWsBt$QsuV=|V zru&&5L}vxkado-{20?y2rajsV!1F<>I%~cBl}={S3F~lFjCxPmZw5;!kWsG zRMyF7c@gtP2+fTw;!qdMYnj$DU4hU`BUi9yJxew)-N$r4(}NuMAnP22{;!coS$>S^ z31eG>r`ahEJ%!MOs8g)3n8&9d zAgPQh;^hx!oudQ=@tE@jCINKQwsVEqj&-(>1xC~vlfYK zeJt^Ds1Nd4(RD0e0se$_1e`F@rkWd0yR%dN*)a*B0MLGo*u z62_i~%`%k78pGU%QLzzW?~1+AHkKzdO@-w9=+rREMSqs$Gc96C5kiwqD8#&r`C8`dnQjViYd9UdkNGE=Kg#?G z=8YB#?ZmXdh0>kIv^K(MXkpoh`?!yqjxrTi;%!X(Go8k?mT5iHeN2xs6_KpZw3cZ- z(|t^jGVLG5DKf2PTF-PJ)1yp9G}~d?pXoHF`iNX@92EnAS3_XS$E+QKtQy zak@-vnbtGi$Mh&u5z982_Gdbc={}}MnTj~pVcMVRG^YEQ9%U-xS%;};*#|XcYe{8m zWB#GAXTsKp9}I6BacRVY$j>5whU<1Tk6oaejXiM;O6NXHJ3Oc5_|7Ylc!I^Zm7!%nGW%oICf zme>`u#BQPhPwN(91~~{Z2IKx=5$*+Eh1$s>w zr6SXMG5R6_G%9!_gE5%O8hD0S(Z^fT1k>{!anfLO9Wl6e{0 zIK}y}BR!FpL(_UPwjQAenTDorjU&s_nv_Sy&%i}mm-uqf7bB=_CH2HN@GnLaznmrM z3B>nHSPK16x|-$nQFlW=s5$9OVk&iR4B^c!D6}=xwHAX}h&C+;fXZ|qkC*_yt|jSQ z*^;c?!gNbZH{|PEk>qx!_b}bb^g*VtwlctLy{M{?lhj_YCOd~7f%*QZon0tk^7Dj9Brqk_l|^vM&M6DzabihzGJ|bXf*y5 z^q*+(&G4t74>bdyfPSQi=1dcT4Cr|YkhH>)o|Grr7DoemVr$6Tff~@~u>TXit}Xav z$PDOp9YE>2&4Aw53A7uK0llvqXm=b9=y^R5D+APkzS|3Y7SkN`W&`>p(OhUL=#vic zy@eBeAEy1FYd{|*dLH_&f<8*L0J_-a4XU6|_W?hg=}7ct?0*9_ppTyqzL@D)^l5__ z!*m>CD`GsT0sF8Af}hBA3PuZqn9THIj2c*L0X2vcj2?<`Gxg%WrU4@c(Nd(WVAL1^ zeg@K1FnSQ3g)|LfCesQ*d;I*MSeZkbikQt5Gk!<{Osg;oDY!2<36eQt3i!E97a)BD z?(Gp>C}@A+B2WYNlDok#W?F}l%OGl*E`cwKxD?cY{jWaomxCI_a(JYO6-=+h$Y#Jj zta3=MfnNsfjU{?5{8F$hhUlFl2+19w*f9vdu!_L+9{6Pt+i>sEAhwGIp!dQfgSZdA z7{vXe4sB2Jsl~%^Ac#cwrDvB7H?1!1ahhJjL``u@aJlpji8XFN!$C^d)#< zzzR9h!{P?e*TpK(x5OIIw{b@b>qFvZ&?Dkj#5&6KW84oih>t)OJj=EL{3lF56`LUW z4AdY#7n?!9K>iF^OV|SX74F9v#2MrX9ZcB{H!w9R_d;T1YQ|Lq9ts4-ZZriu zY=wnsr1B6XR;E$P!;nXV8bpk;2YfT8amu5R#4?Rn9)~;u)F7HG`@y$h+ERHEl0>Gh zlmn2r2E}7d$}`~Gf*P>%^dP8Bc^;BvQ1m|Bb3pG?UV@}6D0(063ZUO9uR+oS)F65) zuY;y5Z$e@RMSoP@2F=8^4|*af`k?YYdTl^4Vhm^_)`YDOdo28<<+SA+%TJb=h`tep z5kn(NB4$Ot7Wq!3sTL3QVw|E6N=2+rIlezHE>$HciW-?c+d`2nz9wQVYfS>qnYBOG8tSJ7i>E5dR zDpYPsH7e(iTd~lU&W=;)Ep_3kWj$PsbkWm?XgLj{qKeAu5RDPlRgJLbt@ilkpZK9a zBZfAwrBmpwM0-T9s-fp8#ZbT7Rd$X*A)EJE+KrliLm0}4TC(TtII0oZmOKM$LShtD z2dn($O(N)}5Tc6bOCtQZK9zG=*s#4p^XEaoaRMwmA6u}PyMzUy{ov&AArwV6Du0;@>LD@ zSNTePZf;##0LhE1OM>ozuaevnMVeL3K|HEE2G6J$SGp?n3>NwVYW6g3E$a>Ob&1A| z#sh(f=h4f!skw6md3D#C2FmJdDnGl`H+ia23`Zf%@oI%83h>%S9cWMd3mHv}D4B`O zVqzMqg<-ad)iioowg}Hw;{A}aEXTRZs;LfSm6nuw8^()Z6&`isqQ!;najF zH7&0Ch;rI6oMfsi(dhi;bcU&@LM>Lndw-y5Hx-4hDpx~Got7br^aiI@{=kara>2Ra z7MI4BFbYk@z|YU-kE+IiRqFG4=+q{He;A_r+>l%_ZLk-QbNk$);n7jJpfwi3iD>Wqp8V; z&ZVHTRMIM2R1u;%xZ39l(JS(Bok&dp$>^sP)*LYx^}uS9qmq|;dYy*A&`zKgd|w&f zB)_V>$kQ~0lWHn%NT^Ae3_>2HmkpYtsG@OcP4&pL9Oq6w;|cwU69tWD9H`C2#$wJ^ z#zoLrLPdcmh~2aFj=@T2iAbx!RZ&#osdjsdJY`;?&G!miWo0F30i0M9p(eoTD~R)k z4yTr=(?vac-$rgVDVn~G9cmKZD7I*Vn0PnD(ESREvlAnC=Blr>;Fh9; zz8cr0a~vr!R)o%|jrCHk|HwwAH7BvM6xA;e>h2=HfwT#}swOc-1ZB(SvEG zze1mM1v$dsQ0v>^Nt0ak)!k|u#J)5Y|8(xNZuCI1-Nf_04R)G@=`oR{&a;ONk;Dj|I~RMa z8oHglfTk8EIr3heoNGeN)BAE@lSElu-Lw*IsQ?{j8+csos0k^#&9LT2*m%Wu-qrlP3KlwqZg|j;h0F!ne>uX)Nm__-sw~V9NfQ+^##YH^nOYTHT$5bA&ex;sc{^u7 zNDP_E+3F$Esd&LWEg>{Etw}=^&zX`c3{j)BL)REM>8b9JRR@+dQK5L+LW8<2$BK>Q zXF2InmsCRaF$b1Q6AddlZ0B6Iby;J(cs~~|Sp06EoE$Y?sll~M$SNeSk2Dr(t0rej zvGggG8x@%pg%$>;>pofz!>mmADpaOkddU)((TnI}6-%IU7CP8lbzy~nZo@Q(nv!~M z)UVt06RO~zI&~_|+{?UJ=_vHNedVq)F{sS%s=}a#i+W6ChvAyKhSsvGYKG!8iuF-? z8xewW54`-d}UcD`9 zr;q}4n(6*P4XbEEx>jHTO3KS?5d3ox4Hh&-J+>y`n2lrUi%)VHFLXI-;B2fu1Zhot zh$}dQu1tl$awd zEp*jL88ajqg11FVk>oh8uL8@mYGjqa$Q$sBsWqI^)N*Njs)x)?#f%Onrk1Ok(g!tB zPDffEriSyXtdNVb4NDJleAE^q8kXfSaLL6sfq_6@K@(G}pz5s>Q|avE@}X_90rFm3 zLtp`)l+|9MYvAk>5{Fb8OUO!t2Nd3bC`?=bQ!h7E|2S5NiyZGPthYKj|7Qa#+sN(4 z{xqbnr;H^ueW6n|5Sn*6d(%uxBv0W~Ui6D5SSpu`Np7ug>+47QRWEr#y4qE|aE06# z(k31vh^lCOYef%o^Q|Kt2Gp@Z7vPZk^Jaex3-5bDqpqq0BBP-Q;wvpEN_1beV3S7 zPXv6fijcxo^HS(@O|L*l^SOhVa+Fk0pH9=4hR9NesRErC<*Jzv^HlTHVC_>IEa~X4!2JxIMAX$qb|0q&jJW#A)}fo! z%8e&2NZsf5p-rkIsg^Fs9pb9M60=;eAK>@!mH?j56!_6RLlPVq2;jC4a?{|06jA9k zn!fXZ)Q$;2)8hwp=QmuD73SR+O52S;r@!TK`$2F zaH~%b92@Wnd@sZsesQ7F@V0CHoxECV>Q%VNucW%+W`TRxE?%tWzM&~jXt*f{Hmy;s z7myTHxXY?TT~M>54fKs8@Ffftc7w|eEwvEm9%@xIqiqP+qXaRy&+*|U=K9qI2l2Fq zOj5UKxHH*c02ehlB@A`d_(Qh=NX!L=CM9R9VAKgKIG(fOD5tFyq|RK^+a1FcLi2K z(}!aaIu(%EfZdS#u$RxrM|z1m9;%M0z%IHn{E4~g*gxolRsi}qJ7Xtd6*MNWSM&ss z2OgwhpJ3zHvG?H=%dwA;()DuM=}r7<`qK7!@JM@U`|8>|Hcg%W(V%th`@P-HyM4Z} zI3CX(w=H{kmgS-OlgG8rJh~#RMSPr+AaLknh)FWqgo1C3$)+eV5jN2xKFbgjpJ!3I zBs1jk{fNfphuaL`;|ChU;)}u&ADT%Pd5q69gvA(BL`+1AZbIdf*w!#5epCdkw1_8; zMPrq?iBd$IDvFSSVdigcvq085ood z3?jsz&%1X}p@KrMw)+{`$Tv(GlTQndDi1~7#T(UD^j zL+uAGA2hCZB@Tx8+UszLk%t5k??M422xC|Re!T>Yn%8#d806qsrCp44uAOXUERc;< z&BItFN!Cx2S}iChHRG!qGQLX7+A2LCt1Q&HYS+a_X-uKU#A=LPV{$bnQ)BvT%n*&~ ztTBDnZrh6TjY3bfnW#}EapNE&n?{T(jvvSYP>wH(w?xPmSQJmc2^n8y7BEpoY#Fm< zXi!!7mf>+r$U(}?$VUu%szI?}@IXsiVMeo|x`rG_Qy54X%*Mo6(9kVZ^_;@eVqC} zQ&?Q>3lv|NpeW!>+{CzvG`b~Gmp2lMiJQpd94H)qPsV?b;{(9^xQS>UaTASUU{b)a z-ceRKO4@O?8_07DJ~lHSEEZvmt33&URhT6MUO@9C{t?H314_V<6d?@6OKF@h&PN`f zB=WH#j0zHrOygse8h4Z=qzowvE=h*GA`c(b*5kQmVX75)fe`&z5D4(-;(Q0~omKGn zz^~VSWLP}?^7eCkU-PdOxzDycYUwYc<+toVzj=$(51hX>&apl6 zHRplPrzKDCwWif4j=Q!$8eJcr-sP=DkN6KZ`)%UYhu_IMIW+I8fd%0opXjr+Yx92F z4}Q1$QvaG~e;7RSgEf;q$6MVt@L%7~>fR%M@U|ztJ-&O=VxF=E9g|KT;e3eCGvgQd z+M{OBwy5DGwK9b>i^f(&(xHThrYoYmytcNO{M89GJReu2UI$Xbag0?F9 z6-T`2zK|xo=Qi2XRvq+uY^DByOazx+wz=x9bDOpl;KtSiSfXr=p=^z5gFWJEwyON} zlfVrQnrX~2kZKvJmYt863e%FNjjkojY;$M$+%shEHIMZb6Yc6ZN4D>JlH z#fBBG8Ga9Al*8N^-U^$`rY&XJP_igZEVGk=W_X%Ky+onC7@{}!s{hISPP@Kq`U@V& zl|0>{F;%1Y*P+mG*0VN@Z2IZ#GF9a=D$zD3F% zcwigu)~@66+kl6r=_FCtr3aooP+MmyuGzFU=eOaKkK0P6y1QI;PF`r)s&I{9^T~e4 z7Y#Oj)y-Dn^>TmWwl4Q7ptVo~L_bzLsb-Z8;kP#xk*Hr}kgB$>iB!kn2_er=NEA_=P^%T>E$!ZrM@<8!Xjs(7Fg5p$3$#5RPLadnIfIiF z(NeDq8W%$=<08C{d;AOx1KO~x4NP3XRkV{tYZlY7iMB$^y2tMg+A8pq=w9Apl4iq- zoYz)TgTae8ox^X+*fh%6v=(^EjUP&|$#S(7QI*Bx*&HdAZmUryQ?Ta#Cf;}iD0v8hO3H(Y&h(b=QLMCx3Y0O)!UKe?Z_NOWQ3-9R@YY`8$G8{YAZ9ytr?RPF-~(!whPLwthKX;3SX72(KtYw zWM1?3>~py6cKvWVt>x2cCyY{|3qkxu&KOs4Rxn)s-8Y_jVj@{LEF1$Y&Ll-<5AQ4lk{Y(E8ts6jURpBkr-=u=ej*EP}T-9CdNeN zouDmBhCI(OCMJS{`1jk=|MUl)<^{^}J5vrvy0%0Wlw~~|6ZANrg=w@k+(Z*)`orY` z&1%jprg|{*O@*r*3*}F2w-t;YCTBiRY_TB?r>#K?Km3KANOJyYv*lyP z!?!Vb-h#)I_{>0q!#QKf4wX$m?`O9=K(ZY|T%d@7?%tD2swU@TW@KbfuH;|&o6K8V zvF1M+tIYn2>F~`v%UctiTKf6&>F$miW_;hUU}!0v+b9n> z>U}Vqy9^UODL)K~bc8|G`;FB~GD{p`pT3dwHI%;iI# zL?|*leqD?{GCV6I%bDqLIv|i5#Nk_#RqD>Odvoj=Ii=Y-xj7DRPL9)+Tk7%V<~eiS zxekvf)1Fb{%FZguLlt|n?OAzFZ(g=LGcO}M%i+z<&2zgQ&QeFFBg#$_{S&ZPfPw&@c)s5pMioeX5Cj3+0|IzXepnaD$wC}Tjz&C9e_RR*hGRJ10|KAft zZ(fGS>n_R5%*)KoF3rx(b(Q3mX6NNNGo9J)EN2#GQ+E7hs{<3aTzh6-mdoXJmgeT* znCZMr$^V3KEtYK9y0I!sk_>`?dQI7Zq=_Zweoj|TDW;STM~2;%mz|ZBo0FSWnwg6qDMb<CDT> z!(19Alb!9&DRsCUC@z;f+nepA^2sU5aXCFGG(;}NG~G$F?2^o^QdEo^W=c!#F0a>_ z?Q-OnI!kGijrp*rv?MDdH_MJ|hg@fgqcq3ub>?My^PEnvJqL4nM|P>#gI^Cv;iI5( zz1bzMypmF{+vCp3%FA+ky`>rUtjx?@Pab}0JTu!3_q^~37le5k4zIg3E60_Sk!Qzr zJTEIZBg2*Lb~+s}mz$U8%*k|@WaKz1ohOdsRLV^sgi z_Wn<~*PY`Ws?E#)8DIVj6h5L7{?pTLTW|riJJU zfqlk-!m_eqSb!D$<`}Oxjb0)~pEF&Atv_@BkpB}(fZnVr@cvBoUXSjQ+)II(U#%`; zMz+Ht;3w=8g5D;oeU{=E0tDVpTZ|p5V?e;>_GLiQfH1e2B9uUg9vx=9#-0M zDnC0-C+Thqe5!&L?R=en4omx3$By^&%fC$QtVJ1!wfr{D0;E=sKe>k$cM0$=&a?N@ zHr*j>gVt#5oV7LC8EeCPJ)7>iwQ(Li&<`LbnG-Me*3!;hLU@`Ea!Os`*T@r*C+Sxu z$E!g})4o|Rho9RU+Mi3iajCRu$FD4|B-?s9dSMw-vta~i+)^5BP<#33 z^S4T1r@*_GF|cR_WZ4hVO1PnZNt+uWy2hX= zj!1h%n7K!c(a^>$>_fw>J;D@|vLwf#nCj27_qDeSkuOE8Qrb|l#2!T>A@*71189otc>{1uK^dkhJ~6T(M(J$Q)J z<7jVBB8fHO+#4Gl$@UHuZcGT-P(j;Jdtnz)d8KV+LB73x%V>ww?##%+f@p3=)vsKDJd3tRl4p?#rePySj&^jjcagAtMS-u9_MjCO53~&|9^QLE?!baxPJ4c4 zuN+5arlX6!lgv?)KJmAO46{Yxx(7z?k_ehxcsfJDyLs?Xy$t#?l521?=y4d>HL@OxwlK{o_jVv z)as{s3G=ECUFn>>=(FiheP;YEW$T1#`xiV~yV7}stHg5eHKXFa*W_RF)azYN^(xJO ztswK~HFZD!dijRW@lC<^~aX0>t6eaK3_aB-uJ2ZwV?+_2EGn<`Tpcm!-49g z*%J!x`Rd@^S08!KKcVl6kJ1m#&-%3V&DSq}r5*{MymP)z=1w?ofW{9QI4=9&7I#`@;O&KEA&9EXRV{Z(`Puzw)6E%@5{vxoORk z)a)yBw{O3)&DPI9`ZVqF3)41-XVra^VEg3$3vO8d_$`-?TfD7B`sCEvkvC4y{nh@s z_oMIf{`E=6&n~~}p8NVdpgghd=&x6IX%W@&vD>0PYlmU%Qw(E=Lx!=PaXYM6zTD@w z_c3`9V&_?Ka2$+FY8(OZj+p6ImE1LU+ws7Xjfh<#p_PR^| zE54mIkf|fG@efAizZ{r8-Z6QjE&9ilg?r5l7H|9f^qj3J#pm~axBsGDS35r(fBxoC zEi%V!e(C-zx14`h&aqx2Kg&uS{>8BQ?XU6R>vr=uKlWOm zpWP#}|1XdAdF0{A)i)%LzVJEcft;P+oWA6)@A6wrws_km=X}}ok&cnE_r~5jx8r3? z7mj$i?X^3<+w}XD-$vauy#Bj`*5u=NpHQ*~|CYXFW}Wf7Em`l~IR4gOE<7Bwm4)$@BW(U&-)8u3(nZZD^!7k0kcc?i5n8=o)) z4!2_v)G&s?^Zwot_y@MD&g!{5-Z|c^=pH}bS@-&_PoMs&_u;}}mi3=sd}QXNhiYCj z+_HDhjP=)UxFzz*#T&2sYS<&I@_vavdhF(Jr*v-CcIEOGy%)Z_?ZsUO%O1(=IdDu;VhBO>J|!0)gUBNqEbsxIm z_<1M48UEXu4M+DF68cQB{cG&`o3>xu-;rCLaSiOm#^$>|KW?wm)-5|9WecZmLz2t&tWtflQ9%zOm&zXV2jHYJ1DZzF9#=?(PUO` zzR#EbPV30uudhlyJ|}(5`_1hWe|&Xi$#2geoI1!c^5Jd?C;Qu93Z%xSbbKafc)$9L ze%Bt_kQ;W{+hdCd2`G4E1!?MW?bL>TO+0#U(-ggi!p*-WN$_zLxQ55F`4Z~970B~bB-i5 zD{j}!WWt5RGJAYjgnC`lLNS@yFs8q{%s?}?-(GPHf352ktB$Rm*5@vV|Bk+U-|A&= ztt&M*n4;QSu_joJ6@~(l-)Jn0*}7y}|8d>ce9$G~*Y3xx#j7Tsyxl%hj%7vm!S;dm z1@-yM&j0&kncm(5XxeVHY#znNXrmTJu_1O0${NNfmizZcF*$>z4nzF~R-2Ar2K-u3 z-g%3=4%%_r-~Zl>2WFm*Nw2u8=!er&t3Mmsr`MYW+aiB|{!}l=rcN&`9J#hOdCJy) z=|dmcc-OdFPE_vMegBU&4-^G{IPa7E#m^m!YUz7^^DVYsKSz#yYTTh-CoXt(Z{fraT)zkO%>;UyUrzuvwo;pA!GM_V@beC*jCu`%AO*S-7Q#-HQ6MtE~?{AzxO z3--KnY~05$&s*JU^1-acsqf#=uITDsk8R5=O!_>wMH?~Y{j5pJFRpzi;`7U5t{PDu zlQ6vB!qg$R1YY^3?797)R&E-9{rE*UuB>l6#CXvUFKwD`t=gRZS+De#&wd!liT~Dr zZ{O)lej0t>N@t?Ceasc_$NtOnt^dVAhhJ-Xs^%%v{jdGf^GJs))^D}`lF+UHwv#^{ z+p>7jp73ddz0>*+-#OsZ;h*iAQ}dQJGon1H*3sd3%$WB-*zn5-gJZXO)}9%en6~h7 zbMpM-tMa?~p1k3jRR>qTb#wCe=*hQyxpDil8J9-Q?6qeOeoJ-rwyzTxe4lt}=ZBZS zH1n>(j`W+}J2AW8o8pp^!LPiy{NV0ZKgR@C?%&jJhoS$>GrpTwACJ8&_WqoamN%a4 zXI~N)j`8~oZTwE0LF@JS`RV_O@!Ot*t?wAIvz&ICjAF+LL0oDB{?A?R|JCSy+lI1x zkGwnN`tA#7rL{ix=G0RbtZGqoW7`4O zZ(lpv-t`?Z>*EEFe!3#O*$*+MwO_7yp~Lge&X?c%^|#ZLdj7iLqvh>B`Dpm24f{J4 zKezJdfiFe8eDRK#cMdRZ{OOLe8>YXR^4_50oy%VSAZ1Wmx2?-Yj2#_y(%AEtnb%%x zueki1iS}E6zT}NHyFN}{bIFgdCVXRgsJMLe{R6MPZHTyFaA{n()Y7}woO~^;?t+a! zExj{taPx>Iw=Ml_?7ZKVo7#=ETqa`egFbucU!4Z+d8*f#+jg{{m+zSS!p%qeTzbO> zm*IhS(f9uP!_D_8FLu0e%$c9ePd;Ib)JE@nFnZtlXQTHyFN7P7-m&^1jL{q8xvsqR{P-OAeL=Nf)DxNmp;*QXatVr#Y~Zn&U+^R}VE3Eze%q1zkllfZFAp!v1ZgT<=(Wa*^|nn67G5Nu?5%cPCFdG@v8EY-Qx|<54RR7f*)id!q+{)rWn1^m`})e4KkcJ@e*Cd(tmbD|4mtj1af|my+;jcOk5|bHH+~(Kewp#qb=^C6to-HsUr)|kmlpj)`0>iUt%l!v^(<>()$R>>w@mMKU{uT} zC6mujTzjSM{Nv$mGJbl&alsr%zaD|eXFsXzcjhu{!jUJeuB*R%b9c+r!>?R?Agjm4 zn;t*CcTwbk1&50R$)DSw+cVEQd6Lr7+C1jfcbc#LuJ6O86L$4V|LCX7mc1})+{d?8 z-dMIZZ|LFgYaYM5)%=pwFE-wsni)2?P07K2?aMnX`7-jEo_k&@*!96rpDudf#O-%g zW$hk*V0NeYu5%*$j=pO4MS}{O@7=X)=dkI|-ZtP&ZB26R`WE)mj|aqG+~(Q!9g|-! zIMw6So^OY|(DU$H8MQ;Zb|2Dt>P4T7`{Is&t-JNP-u_4Hx>be6eLg4o@tc?I?>6Sa zduR4rv0;wu{)!C=cRYUg;4kC-zg>}0cHi$uMm>8~r-P-B-rDZ+c#ol9uN@Pw*?ltk zg9mm#=e~d581v!$w2@nH+_`z)J-g~xSGRfl`pXllJEmvcWvQs2bXAwf>%Um~T=E;I z+mASS)8|D;e^9*s6_Jac^*#Gx#V2>JdC`%2Cg#AT$!`s7yWy>$)7PJ$Ha2nA!Guk} zIhL62#PY=^to7Q_-Tvp+CFJVw*~=yki_i6S`)InRE>cGr9Z?}m&nB$zHY`m?I%4dh zp)F`Ks6{k6Fd3Y7LC)QC#pOYyxYhqaq>V7YP1 zi|N1R-SuGZfeGbp7Cd;MGOGDCujltQzklag^YDp@&6oeYHgd$b<>u`lU-rvGpC5dE z`KEDQKY6eItuIe4|JYSoVVqLGcG~ef;)WdQv~cHvr)RAE=$F#T3o9beKQ`c+M^;Si zJnR{7+l>!Tc&&KJ@QHhdINo2;XZX=qd)|HVB@4gxp6qj;-}|Mxcun6Me+-W8+Q)Km z%#OwP?>^Gv_G?`^Pw(CI)4up?9-d|y_o?e?*PYAXU%da8g+c$q!G$m6jjFgR|C!TI z^t<=zb@}!lKZI2}z0;nEnSb;Dx1yPAWxNG~E;DSoVXhcgKPBMgmj})v8ckoVCLCDU z#H3-+#H50VA2!1#CQ+b}AUH+#4Oj~R`)mYKdWfnX9T83czRn9bbnuo0G-1!0%Wl2^bbCy~sB?p=XxdKe@L zl2L?36jxCMK|l-`!6)XhfRV7EBBGcuJ>&5Ieos|(-|lI`1K;QU-|zQZn66W&PMtb+ z>QoMQpF^*<9LusI_N97RcD@2 z2~MaSbK1<~jye7GVBO4PkDpmtfBMXmPM^8Ues7$4TJYxM7xwfd=W5pb?`m0lcRAJ` z4{umwQhVC6XQjI0mNnD0EI9l(u>;_l09L}KbcAgsHz1Lpt~HKu;E&J6kgt^&SyrF? z-*mNCh%M_j@O>j;@V%N!F#ig!b@vcFN4r)xoUK7O&4j%gcVNwxZVF4|ZA4og1+df^GinKNG5LdS4Ry-H&Jd^uQagJ1F`5nv2gb@A8FM z`O>Aoc4A>6Od5c@ZzpR3aNzI;(6! zD#E*2vrbU(kgzL2kG9o|FqDMn_**00r0x1sS#pwx{Sbyi@$4Ei<^eguJ{|6H&wMRH3~ z_sWyXT?N|-rhu0di~ya9<}&Wc&4}eiJ$GYDiYP$YB{Q+&$^9{Z1;FlDzwK`aAQx

%U5hk_s1r3$n(@-XCR*N-2B>%>$zU^%9D0n`{Ii)+Ch$*NX)l`Jb;Ozf-0k3 ztg}8V=8U||wjTJYm4MxKv25l61C#gsUBEEd6+fw5cd<7X-)PDyo?qJ?k6n4v(&r0X zY~KTUbvKZWqjl1D-2+JC+Y>JMxz*jtYY+U`{&e_Zu2R+q!iD8{V~pwqdxD_Utv##Z zL8<#Nd$(!6A;NTsFtsHeHsov}R#4?V)hh00%G9x8x0Mgg5*FO{D1?Ar8-kF=CBF z{v_mAY)WS+H$Y#W%q=-q`_REA186pxDlSJ`aS))S5aMST}eR(1^7b zPWeHYbJs);^+}tvomIl9vfRqr`DA6YvrWKqI}#j%sH*)qU0dU!z>K4fiBu0Ggo-cu zaV*GSp}F-US^sc^l9{ImjvE{ermi-m z70Qsl+GUKgI}SsN8$*f@fUs#p@vsfKQDr_l1CGwX{20=%KF^z3MM*yCpF0z7Ni=w|(65nh@jWv5UaHYH1581rUe z=9`!pQn2yDsKJMJ=+@A}s?J=1i*5fc2ypxp@LNh%Hrm!1)e`}4KsU1(8AQ2f(BH3w z-cfTr)i+n}1zF|G_=#MO7O=}d2{Dq+I=($ zdgY&8%YX#EpHP)bP2wj1;B>^YYvff*DK`j+%GVj089S4FS11=kSLofzDRtYElo5R@dU47) z5{`fv=YgcVn2rbI08(yDSi~Cw$1%>)0;_tOw}zG|dDnzFIg#LeCbry2@;3U~NiHA~ z1F@#a!G$fcE^6^zOy3I4F%n$T>V10)t;B58#-*fa!(B$)QpGcPN7!?D*mDIvFzYMn za!@QlQx?gIVbhuiNp+1KT!pAG{kaZI|7yS+8p%@Ut)3zOLl_kov;*tAmLzbm)2{d@ z2QOeSa!A*9s_%qTAD{uBY}e?PQ+D-T2B}bz8=*n=FiwcjUQit{BdCiP=%H4$c!5Tn zAEp*B(9>Gc;sqLGmN2z=m)q<^&>LJ&!C@Yfu);-xcN2-27<7eWiWg`MqE!p&^H2Y`y26_Do&3DHvvdunEW2Nr5+9B*}9-k zNcDZZwfgFQD{U>nCiQU5_k=h#AX{jB2pc{=Hc|3wBbtUd&1d>6)dP`~z2 z>am=1G*Y(n1*f!Kq%`6Lp8-`we*Jq;{H1wL@Hs*8SE2fy;0uD{ub>LK!h}<{a|IPY zxEC=MQQ65AQwkL9F^Zi=lcz#Mt&KVg(Uf`x2nFnA0tA3I_B03qfLLu10syhMK?nd| zUq_NG!+lJE06^?(5CQ{@K)_G5SO=N_ z0Wjow9szZFnlzX$spJG`M)p6&`U-i_QYiuffLLn~0sw)UtSAHk;xK~{0Eoj4LI5BR zHV6TLIKm(V0OC-C5CF3Oi?WlvQMR;n5%E+*D*z&&W)K1Zak@bW07PIA0swJ_K?nfE znFb+1NZn_f00BUGjzI_j#0G;90En7F2mr*n1|a|tb%PK9h%ti@0EqJpLI5L=>Wi14 z{$<%0mocLp`wY~AuI#gPT>o=$Qd_dFp#9IoS8`n+wJrHX4DG+}ds9~5ROu$AzeHncsPf>~o$D!P;)&n^@(p+!X=#G6EoP4w~81>l|H)fq-sD%o>$lF21UIbR_*6C3w zX-Mg1YM0VQYTcpuf=@f!# z%nhYMQjFgHxgcwHgW}U&QX}vyV1h!(ERI^yE{k&(Z!;R>sj?KfdBiLV`d_6g2CFl` zku#wsaNYGJyp=x%rCBpW+y$~!zlInavZ)ZaQNt}S>w?|!(%iT#C>FD_nz)VxJ&9mv zFi#cZY7uYgGcm*Vwgy|3T#U^hmJZcadNgjGF(B(nnV1*LDUwZIEFZ&<%%YV@O@aJx zAiBtprA03ygEGmP7vaQaCd9CV+4!yQjvwh~(0s^0r?l3w7ar)S@L&$Y9Tg+kUcvL> z1aDAqf$$CrW+?>o6pYcJ8!S-pO2Vt~Q{Z@U8dAyA{vCfAa7nj}HKK_r)OD=jDxGg^ z%*boVdSgbu5cI5th*~1MN=LGYUuNK!ItBWa%L%>-?Fb|7{}%i(6`AX!DYgb6UnBah z4H2B`2~m_E7CKIW8$&z5?7P9Y$qq}uDi`sB!G8z%0D5(O2SZ<#HKY--K8iF3JEswq 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

/// Business that represents a customer or potential customer. The company that is billed in business transactions. @@ -4875,7 +4877,7 @@ public partial class ActivityParty : Microsoft.Xrm.Sdk.Entity, System.ComponentM } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum ActivityPointerState @@ -4892,7 +4894,7 @@ public enum ActivityPointerState [System.Runtime.Serialization.EnumMemberAttribute()] Scheduled = 3, -}*/ +} /// /// Task performed, or to be performed, by a user. An activity is any action for which an entry can be made on a calendar. @@ -8070,7 +8072,7 @@ public partial class AnnualFiscalCalendar : Microsoft.Xrm.Sdk.Entity, System.Com } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum AppointmentState @@ -8087,7 +8089,7 @@ public enum AppointmentState [System.Runtime.Serialization.EnumMemberAttribute()] Scheduled = 3, -}*/ +} /// /// Commitment representing a time interval with start/end times and duration. @@ -9622,7 +9624,7 @@ public partial class Appointment : Microsoft.Xrm.Sdk.Entity, System.ComponentMod } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum AsyncOperationState @@ -9639,7 +9641,7 @@ public enum AsyncOperationState [System.Runtime.Serialization.EnumMemberAttribute()] Completed = 3, -}*/ +} /// /// Process whose execution can proceed independently or in the background. @@ -14691,7 +14693,7 @@ public partial class BulkDeleteFailure : Microsoft.Xrm.Sdk.Entity, System.Compon } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum BulkDeleteOperationState @@ -14708,7 +14710,7 @@ public enum BulkDeleteOperationState [System.Runtime.Serialization.EnumMemberAttribute()] Completed = 3, -}*/ +} /// /// User-submitted bulk deletion job. @@ -15149,7 +15151,7 @@ public partial class BulkDeleteOperation : Microsoft.Xrm.Sdk.Entity, System.Comp } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum BulkOperationState @@ -15163,7 +15165,7 @@ public enum BulkOperationState [System.Runtime.Serialization.EnumMemberAttribute()] Canceled = 2, -}*/ +} /// /// System operation used to perform lengthy and asynchronous operations on large data sets, such as distributing a campaign activity or quick campaign. @@ -21108,7 +21110,7 @@ public partial class CalendarRule : Microsoft.Xrm.Sdk.Entity, System.ComponentMo } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum CampaignState @@ -21119,7 +21121,7 @@ public enum CampaignState [System.Runtime.Serialization.EnumMemberAttribute()] Inactive = 1, -}*/ +} /// /// Container for campaign activities and responses, sales literature, products, and lists to create, plan, execute, and track the results of a specific marketing campaign through its life. @@ -22556,7 +22558,7 @@ public partial class Campaign : Microsoft.Xrm.Sdk.Entity, System.ComponentModel. } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum CampaignActivityState @@ -22570,7 +22572,7 @@ public enum CampaignActivityState [System.Runtime.Serialization.EnumMemberAttribute()] Canceled = 2, -}*/ +} /// /// Task performed, or to be performed, by a user for planning or running a campaign. @@ -24497,7 +24499,7 @@ public partial class CampaignItem : Microsoft.Xrm.Sdk.Entity, System.ComponentMo } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum CampaignResponseState @@ -24511,7 +24513,7 @@ public enum CampaignResponseState [System.Runtime.Serialization.EnumMemberAttribute()] Canceled = 2, -}*/ +} /// /// Response from an existing or a potential new customer for a campaign. @@ -25993,7 +25995,7 @@ public partial class CampaignResponse : Microsoft.Xrm.Sdk.Entity, System.Compone } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum ColumnMappingState @@ -26001,7 +26003,7 @@ public enum ColumnMappingState [System.Runtime.Serialization.EnumMemberAttribute()] Active = 0, -}*/ +} /// /// Mapping for columns in a data map. @@ -31712,7 +31714,7 @@ public partial class ConstraintBasedGroup : Microsoft.Xrm.Sdk.Entity, System.Com } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum ContactState @@ -31723,7 +31725,7 @@ public enum ContactState [System.Runtime.Serialization.EnumMemberAttribute()] Inactive = 1, -}*/ +} /// /// Person with whom a business unit has a relationship, such as customer, supplier, and colleague. @@ -35945,7 +35947,7 @@ public partial class ContactQuotes : Microsoft.Xrm.Sdk.Entity, System.ComponentM } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum ContractState @@ -35968,7 +35970,7 @@ public enum ContractState [System.Runtime.Serialization.EnumMemberAttribute()] Expired = 5, -}*/ +} /// /// Agreement to provide customer service during a specified amount of time or number of cases. @@ -37502,7 +37504,7 @@ public partial class Contract : Microsoft.Xrm.Sdk.Entity, System.ComponentModel. } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum ContractDetailState @@ -37519,7 +37521,7 @@ public enum ContractDetailState [System.Runtime.Serialization.EnumMemberAttribute()] Expired = 3, -}*/ +} /// /// Line item in a contract that specifies the type of service a customer is entitled to. @@ -42271,7 +42273,7 @@ public partial class Discount : Microsoft.Xrm.Sdk.Entity, System.ComponentModel. } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum DiscountTypeState @@ -42282,7 +42284,7 @@ public enum DiscountTypeState [System.Runtime.Serialization.EnumMemberAttribute()] Inactive = 1, -}*/ +} /// /// Type of discount specified as either a percentage or an amount. @@ -44193,7 +44195,7 @@ public partial class DuplicateRecord : Microsoft.Xrm.Sdk.Entity, System.Componen } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum DuplicateRuleState @@ -44204,7 +44206,7 @@ public enum DuplicateRuleState [System.Runtime.Serialization.EnumMemberAttribute()] Active = 1, -}*/ +} /// /// Rule used to identify potential duplicates. @@ -45191,7 +45193,7 @@ public partial class DuplicateRuleCondition : Microsoft.Xrm.Sdk.Entity, System.C } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum EmailState @@ -45205,7 +45207,7 @@ public enum EmailState [System.Runtime.Serialization.EnumMemberAttribute()] Canceled = 2, -}*/ +} /// /// Activity that is delivered using e-mail protocols. @@ -48145,7 +48147,7 @@ public partial class Equipment : Microsoft.Xrm.Sdk.Entity, System.ComponentModel } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum FaxState @@ -48159,7 +48161,7 @@ public enum FaxState [System.Runtime.Serialization.EnumMemberAttribute()] Canceled = 2, -}*/ +} /// /// Activity that tracks call outcome and number of pages for a fax and optionally stores an electronic copy of the document. @@ -53690,7 +53692,7 @@ public partial class GoalRollupQuery : Microsoft.Xrm.Sdk.Entity, System.Componen } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum ImportState @@ -53698,7 +53700,7 @@ public enum ImportState [System.Runtime.Serialization.EnumMemberAttribute()] Active = 0, -}*/ +} /// /// Status and ownership information for an import job. @@ -54589,7 +54591,7 @@ public partial class ImportEntityMapping : Microsoft.Xrm.Sdk.Entity, System.Comp } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum ImportFileState @@ -54597,7 +54599,7 @@ public enum ImportFileState [System.Runtime.Serialization.EnumMemberAttribute()] Active = 0, -}*/ +} /// /// File name of file used for import. @@ -55948,7 +55950,7 @@ public partial class ImportJob : Microsoft.Xrm.Sdk.Entity, System.ComponentModel } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum ImportLogState @@ -55956,7 +55958,7 @@ public enum ImportLogState [System.Runtime.Serialization.EnumMemberAttribute()] Active = 0, -}*/ +} /// /// Failure reason and other detailed information for a record that failed to import. @@ -56540,7 +56542,7 @@ public partial class ImportLog : Microsoft.Xrm.Sdk.Entity, System.ComponentModel } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum ImportMapState @@ -56551,7 +56553,7 @@ public enum ImportMapState [System.Runtime.Serialization.EnumMemberAttribute()] Inactive = 1, -}*/ +} /// /// Data map used in import. @@ -57254,7 +57256,7 @@ public partial class ImportMap : Microsoft.Xrm.Sdk.Entity, System.ComponentModel } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum IncidentState @@ -57268,7 +57270,7 @@ public enum IncidentState [System.Runtime.Serialization.EnumMemberAttribute()] Canceled = 2, -}*/ +} /// /// Service request case associated with a contract. @@ -58724,7 +58726,7 @@ public partial class Incident : Microsoft.Xrm.Sdk.Entity, System.ComponentModel. } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum IncidentResolutionState @@ -58738,7 +58740,7 @@ public enum IncidentResolutionState [System.Runtime.Serialization.EnumMemberAttribute()] Canceled = 2, -}*/ +} /// /// Special type of activity that includes description of the resolution, billing status, and the duration of the case. @@ -59781,7 +59783,7 @@ public partial class InvalidDependency : Microsoft.Xrm.Sdk.Entity, System.Compon } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum InvoiceState @@ -59798,7 +59800,7 @@ public enum InvoiceState [System.Runtime.Serialization.EnumMemberAttribute()] Canceled = 3, -}*/ +} /// /// Order that has been billed. @@ -63179,7 +63181,7 @@ public partial class IsvConfig : Microsoft.Xrm.Sdk.Entity, System.ComponentModel } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum KbArticleState @@ -63193,7 +63195,7 @@ public enum KbArticleState [System.Runtime.Serialization.EnumMemberAttribute()] Published = 3, -}*/ +} /// /// Structured content that is part of the knowledge base. @@ -64891,7 +64893,7 @@ public partial class KbArticleTemplate : Microsoft.Xrm.Sdk.Entity, System.Compon } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum LeadState @@ -64905,7 +64907,7 @@ public enum LeadState [System.Runtime.Serialization.EnumMemberAttribute()] Disqualified = 2, -}*/ +} /// /// Prospect or potential sales opportunity. Leads are converted into accounts, contacts, or opportunities when they are qualified. Otherwise, they are deleted or archived. @@ -68688,7 +68690,7 @@ public partial class LeadProduct : Microsoft.Xrm.Sdk.Entity, System.ComponentMod } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum LetterState @@ -68702,7 +68704,7 @@ public enum LetterState [System.Runtime.Serialization.EnumMemberAttribute()] Canceled = 2, -}*/ +} /// /// Activity that tracks the delivery of a letter. The activity can contain the electronic copy of the letter. @@ -70364,7 +70366,7 @@ public partial class License : Microsoft.Xrm.Sdk.Entity, System.ComponentModel.I } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum ListState @@ -70375,7 +70377,7 @@ public enum ListState [System.Runtime.Serialization.EnumMemberAttribute()] Inactive = 1, -}*/ +} /// /// Group of existing or potential customers created for a marketing campaign or other sales purposes. @@ -71764,7 +71766,7 @@ public partial class ListMember : Microsoft.Xrm.Sdk.Entity, System.ComponentMode } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum LookUpMappingState @@ -71772,7 +71774,7 @@ public enum LookUpMappingState [System.Runtime.Serialization.EnumMemberAttribute()] Active = 0, -}*/ +} /// /// In a data map, maps a lookup attribute in a source file to Microsoft Dynamics CRM. @@ -72180,7 +72182,7 @@ public partial class LookUpMapping : Microsoft.Xrm.Sdk.Entity, System.ComponentM } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum MailMergeTemplateState @@ -72191,7 +72193,7 @@ public enum MailMergeTemplateState [System.Runtime.Serialization.EnumMemberAttribute()] Inactive = 1, -}*/ +} /// /// Template for a mail merge document that contains the standard attributes of that document. @@ -74280,7 +74282,7 @@ public partial class MonthlyFiscalCalendar : Microsoft.Xrm.Sdk.Entity, System.Co } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum OpportunityState @@ -74294,7 +74296,7 @@ public enum OpportunityState [System.Runtime.Serialization.EnumMemberAttribute()] Lost = 2, -}*/ +} /// /// Potential revenue-generating event, or sale to an account, which needs to be tracked through a sales process to completion. @@ -76011,7 +76013,7 @@ public partial class Opportunity : Microsoft.Xrm.Sdk.Entity, System.ComponentMod } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum OpportunityCloseState @@ -76025,7 +76027,7 @@ public enum OpportunityCloseState [System.Runtime.Serialization.EnumMemberAttribute()] Canceled = 2, -}*/ +} /// /// Activity that is created automatically when an opportunity is closed, containing information such as the description of the closing and actual revenue. @@ -77977,7 +77979,7 @@ public partial class OpportunityProduct : Microsoft.Xrm.Sdk.Entity, System.Compo } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum OrderCloseState @@ -77991,7 +77993,7 @@ public enum OrderCloseState [System.Runtime.Serialization.EnumMemberAttribute()] Canceled = 2, -}*/ +} /// /// Activity generated automatically when an order is closed. @@ -83464,7 +83466,7 @@ public partial class OrganizationUI : Microsoft.Xrm.Sdk.Entity, System.Component } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum OwnerMappingState @@ -83472,7 +83474,7 @@ public enum OwnerMappingState [System.Runtime.Serialization.EnumMemberAttribute()] Active = 0, -}*/ +} /// /// In a data map, maps ownership data from the source file to Microsoft Dynamics CRM. @@ -83898,7 +83900,7 @@ public partial class OwnerMapping : Microsoft.Xrm.Sdk.Entity, System.ComponentMo } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum PhoneCallState @@ -83912,7 +83914,7 @@ public enum PhoneCallState [System.Runtime.Serialization.EnumMemberAttribute()] Canceled = 2, -}*/ +} /// /// Activity to track a telephone call. @@ -85310,7 +85312,7 @@ public partial class PhoneCall : Microsoft.Xrm.Sdk.Entity, System.ComponentModel } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum PickListMappingState @@ -85318,7 +85320,7 @@ public enum PickListMappingState [System.Runtime.Serialization.EnumMemberAttribute()] Active = 0, -}*/ +} /// /// In a data map, maps list values from the source file to Microsoft Dynamics CRM. @@ -88719,7 +88721,7 @@ public partial class PostLike : Microsoft.Xrm.Sdk.Entity, System.ComponentModel. } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum PriceLevelState @@ -88730,7 +88732,7 @@ public enum PriceLevelState [System.Runtime.Serialization.EnumMemberAttribute()] Inactive = 1, -}*/ +} /// /// Entity that defines pricing levels. @@ -93295,7 +93297,7 @@ public partial class ProcessSession : Microsoft.Xrm.Sdk.Entity, System.Component } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum ProductState @@ -93306,7 +93308,7 @@ public enum ProductState [System.Runtime.Serialization.EnumMemberAttribute()] Inactive = 1, -}*/ +} /// /// Information about products and their pricing information. @@ -100282,7 +100284,7 @@ public partial class QueueItem : Microsoft.Xrm.Sdk.Entity, System.ComponentModel } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum QuoteState @@ -100299,7 +100301,7 @@ public enum QuoteState [System.Runtime.Serialization.EnumMemberAttribute()] Closed = 3, -}*/ +} /// /// Formal offer for products and/or services, proposed at specific prices and related payment terms, which is sent to a prospective customer. @@ -102328,7 +102330,7 @@ public partial class Quote : Microsoft.Xrm.Sdk.Entity, System.ComponentModel.INo } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum QuoteCloseState @@ -102342,7 +102344,7 @@ public enum QuoteCloseState [System.Runtime.Serialization.EnumMemberAttribute()] Canceled = 2, -}*/ +} /// /// Activity generated when a quote is closed. @@ -107004,7 +107006,7 @@ public partial class RecurringAppointmentMaster : Microsoft.Xrm.Sdk.Entity, Syst } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum RelationshipRoleState @@ -107015,7 +107017,7 @@ public enum RelationshipRoleState [System.Runtime.Serialization.EnumMemberAttribute()] Inactive = 1, -}*/ +} /// /// Relationship between an account or contact and an opportunity. @@ -115072,7 +115074,7 @@ public partial class SalesLiteratureItem : Microsoft.Xrm.Sdk.Entity, System.Comp } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum SalesOrderState @@ -115092,7 +115094,7 @@ public enum SalesOrderState [System.Runtime.Serialization.EnumMemberAttribute()] Invoiced = 4, -}*/ +} /// /// Quote that has been accepted. @@ -120852,7 +120854,7 @@ public partial class SdkMessagePair : Microsoft.Xrm.Sdk.Entity, System.Component } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum SdkMessageProcessingStepState @@ -120863,7 +120865,7 @@ public enum SdkMessageProcessingStepState [System.Runtime.Serialization.EnumMemberAttribute()] Disabled = 1, -}*/ +} /// /// Stage in the execution pipeline that a plug-in is to execute. @@ -125550,7 +125552,7 @@ public partial class Service : Microsoft.Xrm.Sdk.Entity, System.ComponentModel.I } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum ServiceAppointmentState @@ -125567,7 +125569,7 @@ public enum ServiceAppointmentState [System.Runtime.Serialization.EnumMemberAttribute()] Scheduled = 3, -}*/ +} /// /// Activity offered by the organization to satisfy its customer's needs. Each service activity includes date, time, duration, and required resources. @@ -132591,8 +132593,6 @@ public partial class SystemForm : Microsoft.Xrm.Sdk.Entity, System.ComponentMode } } - - /// /// Person with access to the Microsoft CRM system and who owns objects in the Microsoft CRM database. /// @@ -146900,7 +146900,6 @@ public partial class SystemUser : Microsoft.Xrm.Sdk.Entity, System.ComponentMode } } - /// /// /// @@ -147275,7 +147274,7 @@ public partial class SystemUserRoles : Microsoft.Xrm.Sdk.Entity, System.Componen } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum TaskState @@ -147289,7 +147288,7 @@ public enum TaskState [System.Runtime.Serialization.EnumMemberAttribute()] Canceled = 2, -}*/ +} /// /// Generic activity representing work needed to be done. @@ -153380,7 +153379,7 @@ public partial class TimeZoneRule : Microsoft.Xrm.Sdk.Entity, System.ComponentMo } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum TransactionCurrencyState @@ -153391,7 +153390,7 @@ public enum TransactionCurrencyState [System.Runtime.Serialization.EnumMemberAttribute()] Inactive = 1, -}*/ +} /// /// Currency in which a financial transaction is carried out. @@ -154896,7 +154895,7 @@ public partial class TransactionCurrency : Microsoft.Xrm.Sdk.Entity, System.Comp } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum TransformationMappingState @@ -154904,7 +154903,7 @@ public enum TransformationMappingState [System.Runtime.Serialization.EnumMemberAttribute()] Active = 0, -}*/ +} /// /// In a data map, maps the transformation of source attributes to Microsoft Dynamics CRM attributes. @@ -161202,7 +161201,7 @@ public partial class UserForm : Microsoft.Xrm.Sdk.Entity, System.ComponentModel. } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum UserQueryState @@ -161213,7 +161212,7 @@ public enum UserQueryState [System.Runtime.Serialization.EnumMemberAttribute()] Inactive = 1, -}*/ +} /// /// Saved database query that is owned by a user. @@ -164515,7 +164514,7 @@ public partial class WebResource : Microsoft.Xrm.Sdk.Entity, System.ComponentMod } } } -/* + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum WorkflowState @@ -164526,7 +164525,7 @@ public enum WorkflowState [System.Runtime.Serialization.EnumMemberAttribute()] Activated = 1, -}*/ +} /// /// Set of logical rules that define the steps necessary to automate a specific business process, task, or set of actions to be performed. @@ -168684,4 +168683,3 @@ public partial class ServiceContext : Microsoft.Xrm.Sdk.Client.OrganizationServi } } } - diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2013/CRMBase.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2013/CRMBase.cs new file mode 100644 index 00000000..3a52bdca --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2013/CRMBase.cs @@ -0,0 +1,2096 @@ +// Copyright (c) 2012 - 2013, 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. + +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Globalization; +using System.IO; +using System.Net; +using System.Reflection; +using System.Net.Security; +using System.Security.Principal; +using System.Security.Cryptography.X509Certificates; +using System.Threading; +using System.ServiceModel.Description; +using System.Text.RegularExpressions; +using Microsoft.Win32; +using WebsitePanel.Providers.Common; +using WebsitePanel.Providers.ResultObjects; +using WebsitePanel.Server.Utils; +using WebsitePanel.Providers.HostedSolution; +using WebsitePanel.Providers; +using WebsitePanel.Providers.Utils; +using Microsoft.Xrm.Sdk; +using Microsoft.Xrm.Sdk.Query; +using Microsoft.Xrm.Sdk.Discovery; +using Microsoft.Xrm.Sdk.Client; +using Microsoft.Xrm.Sdk.Deployment; +using Microsoft.Xrm.Sdk.Messages; + +namespace WebsitePanel.Providers.HostedSolution +{ + public class CRMBase : HostingServiceProviderBase, ICRM + { + #region Properties + + protected virtual string UserName + { + get { return ProviderSettings[Constants.UserName]; } + } + + protected virtual string Password + { + get { return ProviderSettings[Constants.Password]; } + } + + protected virtual string SqlServer + { + get { return ProviderSettings[Constants.SqlServer]; } + } + + protected virtual string ReportingServer + { + get { return ProviderSettings[Constants.ReportingServer]; } + } + + protected virtual string UrlSchema + { + get { return ProviderSettings[Constants.UrlSchema] == "http" ? "http://" : "https://"; } + } + + protected virtual string CRMDeploymentUrl + { + get + { + string uri = ProviderSettings[Constants.DeploymentWebService]; + if (String.IsNullOrEmpty(uri)) uri = ProviderSettings[Constants.AppRootDomain]; + string cRMServiceUrl = UrlSchema + uri + ":" + ProviderSettings[Constants.Port] + "/XRMDeployment/2011/Deployment.svc"; + return cRMServiceUrl; + } + } + + protected virtual string CRMDiscoveryUrl + { + get + { + string uri = ProviderSettings[Constants.DiscoveryWebService]; + if (String.IsNullOrEmpty(uri)) uri = ProviderSettings[Constants.AppRootDomain]; + string cRMDiscoveryUri = UrlSchema + uri + ":" + ProviderSettings[Constants.Port] + "/XRMServices/2011/Discovery.svc"; + return cRMDiscoveryUri; + } + } + + private static string crmPath = null; + protected static string CRMPath + { + get + { + if (string.IsNullOrEmpty(crmPath)) + { + RegistryKey root = Registry.LocalMachine; + RegistryKey rk = root.OpenSubKey("SOFTWARE\\Microsoft\\MSCRM"); + if (rk != null) + { + crmPath = (string)rk.GetValue("CRM_Server_InstallDir", string.Empty); + } + } + return crmPath; + } + } + + protected static string CRMDatabaseName = "MSCRM_CONFIG"; + + #endregion + + #region Service + + protected virtual ClientCredentials GetUserLogonCredentials() + { + ClientCredentials credentials = new ClientCredentials(); + + if (String.IsNullOrEmpty(UserName)) + { + credentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials; + } + else + { + credentials.UserName.UserName = UserName; + credentials.UserName.Password = Password; + } + + return credentials; + } + + protected virtual DeploymentServiceClient GetDeploymentProxy() + { + Uri serviceUrl = new Uri(CRMDeploymentUrl); + + DeploymentServiceClient deploymentService = Microsoft.Xrm.Sdk.Deployment.Proxy.ProxyClientHelper.CreateClient(serviceUrl); + if (!String.IsNullOrEmpty(UserName)) + deploymentService.ClientCredentials.Windows.ClientCredential = new NetworkCredential(UserName, Password); + + return deploymentService; + } + + protected virtual DiscoveryServiceProxy GetDiscoveryProxy() + { + + IServiceManagement serviceManagement = + ServiceConfigurationFactory.CreateManagement( + new Uri(CRMDiscoveryUrl)); + + ClientCredentials Credentials = GetUserLogonCredentials(); + + DiscoveryServiceProxy r = new DiscoveryServiceProxy(serviceManagement, Credentials); + + return r; + } + + private OrganizationDetailCollection DiscoverOrganizations(IDiscoveryService service) + { + if (service == null) throw new ArgumentNullException("service"); + RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest(); + RetrieveOrganizationsResponse orgResponse = + (RetrieveOrganizationsResponse)service.Execute(orgRequest); + + return orgResponse.Details; + } + + protected virtual Uri GetCRMOrganizationUrl(string orgName) + { + //string url = "https://" + ProviderSettings[Constants.AppRootDomain] + ":" + ProviderSettings[Constants.Port] + "/" + orgName + "/XRMServices/2011/Organization.svc"; + + string url; + + string organizationWebServiceUri = ProviderSettings[Constants.OrganizationWebService]; + + if (String.IsNullOrEmpty(orgName)) + return null; + + if (!String.IsNullOrEmpty(organizationWebServiceUri)) + { + url = UrlSchema + organizationWebServiceUri + ":" + ProviderSettings[Constants.Port] + "/" + orgName + "/XRMServices/2011/Organization.svc"; + } + else + { + url = UrlSchema + orgName + "." + ProviderSettings[Constants.IFDWebApplicationRootDomain] + ":" + ProviderSettings[Constants.Port] + "/XRMServices/2011/Organization.svc"; + } + + try + { + + using (DiscoveryServiceProxy serviceProxy = GetDiscoveryProxy()) + { + // Obtain organization information from the Discovery service. + if (serviceProxy != null) + { + // Obtain information about the organizations that the system user belongs to. + OrganizationDetailCollection orgs = DiscoverOrganizations(serviceProxy); + + for (int n = 0; n < orgs.Count; n++) + { + if (orgs[n].UniqueName == orgName) + { + // Return the organization Uri. + return new System.Uri(orgs[n].Endpoints[EndpointType.OrganizationService]); + } + } + + } + } + } + catch { } + + return new Uri(url); + } + + private int getOrganizationProxyTryCount = 10; + private int getOrganizationProxyTryTimeout = 30000; + protected virtual OrganizationServiceProxy GetOrganizationProxy(string orgName) + { + return GetOrganizationProxy(orgName, getOrganizationProxyTryCount, getOrganizationProxyTryTimeout); + } + + protected virtual OrganizationServiceProxy GetOrganizationProxy(string orgName, int TryCount, int TryTimeout) + { + + Uri OrganizationUri = GetCRMOrganizationUrl(orgName); + + OrganizationServiceProxy r = null; + + bool success = false; + int tryItem = 0; + Exception exception = null; + + while (!success) + { + + try + { + // Set IServiceManagement for the current organization. + IServiceManagement orgServiceManagement = + ServiceConfigurationFactory.CreateManagement( + OrganizationUri); + + r = new OrganizationServiceProxy( + orgServiceManagement, + GetUserLogonCredentials()); + + success = true; + + } + catch (Exception exc) + { + Thread.Sleep(TryTimeout); + tryItem++; + if (tryItem >= TryCount) + { + exception = exc; + success = true; + } + } + + } + + if (exception != null) + throw new ArgumentException(exception.ToString()); + + r.EnableProxyTypes(); + + return r; + } + + #endregion + + #region Static constructor + + static CRMBase() + { + AppDomain.CurrentDomain.AssemblyResolve += ResolveCRMAssembly; + } + + static Assembly ResolveCRMAssembly(object sender, ResolveEventArgs args) + { + // Ensure we load DLLs only. + if (args.Name.ToLower().Contains("microsoft.crm") || args.Name.ToLower().Contains("antixsslibrary") || args.Name.ToLower().Contains("microsoft.xrm")) + { + string dllName = args.Name.Split(',')[0] + ".dll"; + + List paths = new List(); + + // assembly location + paths.Add( Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().EscapedCodeBase).LocalPath) ); + // crm tools path + paths.Add(CRMPath); + + foreach(string path in paths) + { + string filename = Path.Combine(path, dllName); + if (File.Exists(filename)) + return Assembly.LoadFrom(filename); + } + } + + return default(Assembly); + } + + #endregion + + #region Check environment + + protected virtual bool CheckCRMWebServicesAccess() + { + Log.WriteStart("CheckCRMWebServicesAccess"); + bool ret = false; + HttpWebResponse response = null; + HttpWebRequest request; + + try + { + WindowsIdentity.GetCurrent(); + + request = WebRequest.Create(CRMDeploymentUrl) as HttpWebRequest; + + if (request != null) + { + request.UseDefaultCredentials = true; + request.Credentials = CredentialCache.DefaultCredentials; + response = request.GetResponse() as HttpWebResponse; + + } + if (response != null) + ret = (response.StatusCode == HttpStatusCode.OK); + } + catch (Exception ex) + { + Log.WriteError(ex); + ret = false; + } + + Log.WriteEnd("CheckCRMWebServicesAccess"); + return ret; + } + + protected virtual bool CheckPermissions() + { + Log.WriteStart("CheckPermissions"); + bool res = false; + try + { + string group = "PrivUserGroup"; + string user = WindowsIdentity.GetCurrent().Name.Split(new char[] { '\\' })[1]; + res = ActiveDirectoryUtils.IsUserInGroup(user, group); + } + catch (Exception ex) + { + Log.WriteError(ex); + res = false; + } + + Log.WriteEnd("CheckPermissions"); + return res; + } + + protected virtual bool CheckOrganizationUnique(string databaseName, string orgName) + { + Log.WriteStart("CheckOrganizationUnique"); + bool res = false; + + SqlConnection connection = null; + try + { + connection = new SqlConnection(); + connection.ConnectionString = + string.Format("Server={1};Initial Catalog={0};Integrated Security=SSPI", + databaseName, SqlServer); + + connection.Open(); + + string commandText = string.Format("SELECT COUNT(*) FROM dbo.Organization WHERE UniqueName = '{0}'", orgName); + SqlCommand command = new SqlCommand(commandText, connection); + int count = (int)command.ExecuteScalar(); + res = count == 0; + + + } + catch (Exception ex) + { + res = false; + Log.WriteError(ex); + } + finally + { + if (connection != null) + connection.Close(); + + } + + Log.WriteEnd("CheckOrganizationUnique"); + return res; + } + + protected virtual bool CheckSqlServerConnection() + { + Log.WriteStart("CheckSqlServerConnection"); + bool res = false; + SqlConnection connection = null; + try + { + connection = new SqlConnection(); + connection.ConnectionString = + string.Format("server={0}; Integrated Security=SSPI", + SqlServer); + + connection.Open(); + res = true; + } + catch (Exception ex) + { + Log.WriteError(ex); + res = false; + } + finally + { + if (connection != null) + connection.Close(); + } + + Log.WriteEnd("CheckSqlServerConnection"); + + return res; + } + + protected virtual bool CheckReportServerConnection() + { + Log.WriteStart("CheckReportServerConnection"); + bool ret = false; + HttpWebResponse response = null; + HttpWebRequest request; + + try + { + WindowsIdentity.GetCurrent(); + + request = WebRequest.Create(ReportingServer) as HttpWebRequest; + + if (request != null) + { + request.UseDefaultCredentials = true; + request.Credentials = CredentialCache.DefaultCredentials; + response = request.GetResponse() as HttpWebResponse; + + } + if (response != null) + ret = (response.StatusCode == HttpStatusCode.OK); + } + catch (Exception ex) + { + Log.WriteError(ex); + ret = false; + } + + Log.WriteEnd("CheckReportServerConnection"); + return ret; + } + + protected virtual OrganizationResult CheckCrmEnvironment(string strDataBaseName, string organizationUniqueName) + { + OrganizationResult retOrganization = StartLog("CheckCrmEnvironment"); + bool res = CheckSqlServerConnection(); + + if (!res) + { + EndLog("CheckCrmEnvironment", retOrganization, CrmErrorCodes.CRM_SQL_SERVER_ERROR); + return retOrganization; + } + + res = CheckOrganizationUnique(strDataBaseName, organizationUniqueName); + if (!res) + { + EndLog("CheckCrmEnvironment", retOrganization, CrmErrorCodes.CRM_ORGANIZATION_ALREADY_EXISTS); + return retOrganization; + } + + res = CheckReportServerConnection(); + if (!res) + { + EndLog("CheckCrmEnvironment", retOrganization, CrmErrorCodes.CRM_REPORT_SERVER_ERROR); + return retOrganization; + } + + res = CheckPermissions(); + if (!res) + { + EndLog("CheckCrmEnvironment", retOrganization, CrmErrorCodes.CRM_PERMISSIONS_ERROR); + return retOrganization; + } + + res = CheckCRMWebServicesAccess(); + if (!res) + { + EndLog("CheckCrmEnvironment", retOrganization, CrmErrorCodes.CRM_WEB_SERVICE_ERROR); + return retOrganization; + } + + EndLog("CheckCrmEnvironment"); + return retOrganization; + } + + #endregion + + #region DataBase + + protected virtual string GetDataBaseName(Guid organizationId) + { + string databasename = null; + + SqlConnection connection = null; + try + { + connection = new SqlConnection(); + connection.ConnectionString = + string.Format("Server={1};Initial Catalog={0};Integrated Security=SSPI", + CRMDatabaseName, SqlServer); + + connection.Open(); + + string commandText = string.Format("SELECT DatabaseName FROM dbo.Organization where id = '{0}'", organizationId); + SqlCommand command = new SqlCommand(commandText, connection); + object result = command.ExecuteScalar(); + if (result!=null) + databasename = String.Concat(result.ToString()); + + } + catch (Exception ex) + { + Log.WriteError(ex); + } + finally + { + if (connection != null) + connection.Close(); + } + + return databasename; + } + + public virtual long GetDBSize(Guid organizationId) + { + StartLog("GetDBSize"); + long res = 0; + + string databasename = GetDataBaseName(organizationId); + if (databasename == null) return 0; + + if (databasename == null) return 0; + + SqlConnection connection = null; + try + { + connection = new SqlConnection(); + connection.ConnectionString = + string.Format("Server={1};Initial Catalog={0};Integrated Security=SSPI", + databasename, SqlServer); + + connection.Open(); + + string commandText = "SELECT ((dbsize ) * 8192 ) size FROM " + // + logsize + "( " + + "SELECT SUM(CONVERT(BIGINT,CASE WHEN status & 64 = 0 THEN size ELSE 0 END)) dbsize " + + ", SUM(CONVERT(BIGINT,CASE WHEN status & 64 <> 0 THEN size ELSE 0 END)) logsize " + + "FROM dbo.sysfiles " + + ") big"; + + SqlCommand command = new SqlCommand(commandText, connection); + res = (long)command.ExecuteScalar(); + + } + catch (Exception ex) + { + EndLog("GetDBSize", null, null, ex); + } + finally + { + if (connection != null) + connection.Close(); + + } + + EndLog("GetDBSize"); + return res; + + } + + public virtual long GetMaxDBSize(Guid organizationId) + { + StartLog("GetMaxDBSize"); + long res = 0; + + string databasename = GetDataBaseName(organizationId); + if (databasename == null) return 0; + + SqlConnection connection = null; + try + { + connection = new SqlConnection(); + connection.ConnectionString = + string.Format("Server={1};Initial Catalog={0};Integrated Security=SSPI", + databasename, SqlServer); + + connection.Open(); + + string commandText = "SELECT SUM(CONVERT(BIGINT,CASE WHEN status & 64 = 0 THEN maxsize ELSE 0 END)) dbsize FROM dbo.sysfiles"; + + SqlCommand command = new SqlCommand(commandText, connection); + res = (long)command.ExecuteScalar(); + if (res > 0) res = res * 8192; + + } + catch (Exception ex) + { + EndLog("GetMaxDBSize", null, null, ex); + } + finally + { + if (connection != null) + connection.Close(); + + } + + EndLog("GetMaxDBSize"); + return res; + } + + public virtual ResultObject SetMaxDBSize(Guid organizationId, long maxSize) + { + ResultObject res = StartLog("SetMaxDBSize"); + + SqlConnection connection = null; + try + { + string databasename = GetDataBaseName(organizationId); + if (databasename == null) throw new Exception("Can not get database name"); + + connection = new SqlConnection(); + connection.ConnectionString = + string.Format("Server={1};Initial Catalog={0};Integrated Security=SSPI", + databasename, SqlServer); + + connection.Open(); + + string maxSizeStr = maxSize == -1 ? "UNLIMITED" : (maxSize / (1024 * 1024)).ToString() + " MB"; + + string commandText = "ALTER DATABASE [" + databasename + "] MODIFY FILE ( NAME = N'mscrm', MAXSIZE = " + maxSizeStr + " )"; + + SqlCommand command = new SqlCommand(commandText, connection); + command.ExecuteNonQuery(); + + res.IsSuccess = true; + + } + catch (Exception ex) + { + EndLog("SetMaxDBSize", res, CrmErrorCodes.CANNOT_CHANGE_CRM_ORGANIZATION_STATE, ex); + } + finally + { + if (connection != null) + connection.Close(); + + } + + EndLog("SetMaxDBSize"); + return res; + } + + #endregion + + #region Organization + + public virtual OrganizationResult CreateOrganization(Guid organizationId, string organizationUniqueName, string organizationFriendlyName, + int baseLanguageCode, + string ou, + string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, + string initialUserDomainName, string initialUserFirstName, string initialUserLastName, string initialUserPrimaryEmail, + string organizationCollation, + long maxSize) + { + return CreateOrganizationInternal(organizationId, organizationUniqueName, organizationFriendlyName, + baseLanguageCode, + ou , baseCurrencyCode, baseCurrencyName, baseCurrencySymbol, + initialUserDomainName, initialUserFirstName, initialUserLastName, initialUserPrimaryEmail, + organizationCollation, + maxSize); + } + + protected const string CRMSysAdminRoleStr = "Системный администратор;System Administrator"; + + internal virtual OrganizationResult CreateOrganizationInternal(Guid organizationId, string organizationUniqueName, string organizationFriendlyName, + int baseLanguageCode, + string ou, + string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, + string initialUserDomainName, string initialUserFirstName, string initialUserLastName, string initialUserPrimaryEmail, + string organizationCollation, + long maxSize) + { + + OrganizationResult ret = StartLog("CreateOrganizationInternal"); + + organizationUniqueName = Regex.Replace(organizationUniqueName, @"[^\dA-Za-z]", "-", RegexOptions.Compiled); + + // calculate UserRootPath + string ldapstr = ""; + + string[] ouItems = ou.Split('.'); + foreach (string ouItem in ouItems) + { + if (ldapstr.Length != 0) ldapstr += ","; + ldapstr += "OU=" + ouItem; + } + + string rootDomain = ServerSettings.ADRootDomain; + string[] domainItems = rootDomain.Split('.'); + foreach (string domainItem in domainItems) + ldapstr += ",DC=" + domainItem; + + ldapstr = @"LDAP://" + rootDomain + "/" + ldapstr; + + + + if (organizationId == Guid.Empty) + throw new ArgumentException("OrganizationId is Guid.Empty"); + + if (string.IsNullOrEmpty(organizationFriendlyName)) + throw new ArgumentNullException("organizationFriendlyName"); + + if (string.IsNullOrEmpty(baseCurrencyCode)) + throw new ArgumentNullException("baseCurrencyCode"); + + if (string.IsNullOrEmpty(baseCurrencySymbol)) + throw new ArgumentNullException("baseCurrencySymbol"); + + if (string.IsNullOrEmpty(initialUserDomainName)) + throw new ArgumentNullException("initialUserDomainName"); + + OrganizationResult retCheckEn = CheckCrmEnvironment(CRMDatabaseName, organizationUniqueName); + + if (!retCheckEn.IsSuccess) + { + ret.ErrorCodes.AddRange(retCheckEn.ErrorCodes); + EndLog("CreateOrganizationInternal", ret, null, null); + return ret; + } + + try + { + + DeploymentServiceClient deploymentService = GetDeploymentProxy(); + + Microsoft.Xrm.Sdk.Deployment.Organization org = new Microsoft.Xrm.Sdk.Deployment.Organization + { + Id = organizationId, + UniqueName = organizationUniqueName, + FriendlyName = organizationFriendlyName, + SqlServerName = SqlServer, + SrsUrl = ReportingServer, + BaseCurrencyCode = baseCurrencyCode, + BaseCurrencyName = baseCurrencyName, + BaseCurrencySymbol = baseCurrencySymbol, + SqlCollation = organizationCollation, + State = Microsoft.Xrm.Sdk.Deployment.OrganizationState.Enabled + }; + + if (baseLanguageCode > 0) + org.BaseLanguageCode = baseLanguageCode; + + BeginCreateOrganizationRequest req = new BeginCreateOrganizationRequest + { + Organization = org + }; + + if (!String.IsNullOrEmpty(UserName)) + { + req.SysAdminName = UserName; + } + + BeginCreateOrganizationResponse resp = deploymentService.Execute(req) as BeginCreateOrganizationResponse; + + if (resp == null) + throw new ArgumentException("BeginCreateOrganizationResponse is Null"); + + EntityInstanceId id = new EntityInstanceId(); + id.Name = org.UniqueName; + + Microsoft.Xrm.Sdk.Deployment.OrganizationState OperationState = Microsoft.Xrm.Sdk.Deployment.OrganizationState.Pending; + + int timeout = 30000; + + do + { + Thread.Sleep(timeout); + try + { + Microsoft.Xrm.Sdk.Deployment.Organization getorg + = (Microsoft.Xrm.Sdk.Deployment.Organization)deploymentService.Retrieve(DeploymentEntityType.Organization, id); + OperationState = getorg.State; + } + catch { } + } while ((OperationState != Microsoft.Xrm.Sdk.Deployment.OrganizationState.Enabled) && + (OperationState != Microsoft.Xrm.Sdk.Deployment.OrganizationState.Failed)); + + if (OperationState == Microsoft.Xrm.Sdk.Deployment.OrganizationState.Failed) + throw new ArgumentException("Create organization failed."); + + // update UserRootPath setting + Microsoft.Xrm.Sdk.Deployment.ConfigurationEntity orgSettings = new Microsoft.Xrm.Sdk.Deployment.ConfigurationEntity + { + Id = org.Id, + LogicalName = "Organization" + }; + orgSettings.Attributes = new Microsoft.Xrm.Sdk.Deployment.AttributeCollection(); + orgSettings.Attributes.Add(new KeyValuePair("UserRootPath", ldapstr)); + Microsoft.Xrm.Sdk.Deployment.UpdateAdvancedSettingsRequest reqUpdateSettings = new Microsoft.Xrm.Sdk.Deployment.UpdateAdvancedSettingsRequest + { + Entity = orgSettings + }; + Microsoft.Xrm.Sdk.Deployment.UpdateAdvancedSettingsResponse respUpdateSettings = (Microsoft.Xrm.Sdk.Deployment.UpdateAdvancedSettingsResponse) deploymentService.Execute(reqUpdateSettings); + + // DB size limit + if (maxSize!=-1) + SetMaxDBSize(organizationId, maxSize); + + int tryTimeout = 30000; + int tryCount = 10; + + bool success = false; + int tryItem = 0; + + while (!success) + { + + try + { + Thread.Sleep(tryTimeout); + + OrganizationServiceProxy _serviceProxy = GetOrganizationProxy(organizationUniqueName, 0, 0); + + string ldap = ""; + + Guid SysAdminGuid = RetrieveSystemUser(GetDomainName(initialUserDomainName), initialUserFirstName, initialUserLastName, CRMSysAdminRoleStr, _serviceProxy, ref ldap, 0); + + success = true; + + } + catch + { + tryItem++; + if (tryItem >= tryCount) + success = true; + } + } + + + } + catch (Exception ex) + { + EndLog("CheckCrmEnvironment", ret, CrmErrorCodes.CREATE_CRM_ORGANIZATION_GENERAL_ERROR, ex); + return ret; + + } + + EndLog("CheckCrmEnvironment"); + + return ret; + } + + protected string GetDomainName(string username) + { + string domain = ActiveDirectoryUtils.GetNETBIOSDomainName(ServerSettings.ADRootDomain); + string ret = string.Format(@"{0}\{1}", domain, username); + return ret; + } + + public virtual string[] GetSupportedCollationNames() + { + return GetSupportedCollationNamesInternal(SqlServer); + } + + internal virtual string[] GetSupportedCollationNamesInternal(string SqlServer) + { + StartLog("GetSupportedCollationNamesInternal"); + + List ret = new List(); + + SqlConnection connection = null; + try + { + connection = new SqlConnection(); + connection.ConnectionString = + string.Format("Server={1};Initial Catalog={0};Integrated Security=SSPI", + CRMDatabaseName, SqlServer); + + connection.Open(); + + string commandText = "select * from fn_helpcollations() where " + + "(name not like '%_WS') AND (name not like '%_KS') AND (name not like '%_100_%') " + + " AND (name not like 'SQL_%') " + + " order by name"; + SqlCommand command = new SqlCommand(commandText, connection); + SqlDataReader reader = command.ExecuteReader(); + + while (reader.Read()) + { + string name = reader["name"] as string; + ret.Add(name); + } + + } + catch (Exception ex) + { + Log.WriteError(ex); + } + finally + { + if (connection != null) + connection.Close(); + + } + + EndLog("GetSupportedCollationNamesInternal"); + return ret.ToArray(); + } + + public virtual Currency[] GetCurrencyList() + { + return GetCurrencyListInternal(); + } + + internal virtual Currency[] GetCurrencyListInternal() + { + StartLog("GetCurrencyListInternal"); + List retList = new List(); + + CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures); + + foreach (CultureInfo culture in cultures) + { + if (culture.IsNeutralCulture) continue; + + try + { + RegionInfo Region = new RegionInfo(culture.LCID); + + Currency currency = new Currency(); + currency.RegionName = Region.NativeName; + currency.CurrencyName = Region.CurrencyNativeName; + currency.CurrencyCode = Region.ISOCurrencySymbol; + currency.CurrencySymbol = Region.CurrencySymbol; + retList.Add(currency); + + } + catch + { + continue; + } + } + + retList.Sort(delegate(Currency a, Currency b) { return a.RegionName.CompareTo(b.RegionName); }); + + EndLog("GetCurrencyListInternal"); + return retList.ToArray(); + } + + public virtual int[] GetInstalledLanguagePacks() + { + return GetInstalledLanguagePacksInternal(); + } + + internal virtual int[] GetInstalledLanguagePacksInternal() + { + StartLog("GetInstalledLanguagePacks"); + List res = new List(); + + try + { + RegistryKey root = Registry.LocalMachine; + RegistryKey rk = root.OpenSubKey("SOFTWARE\\Microsoft\\MSCRM"); + + if (rk == null) + rk = root.OpenSubKey("SOFTWARE\\Wow6432Node\\Microsoft\\MSCRM"); + + if (rk == null) throw new Exception("Can't open SOFTWARE\\Microsoft\\MSCRM"); + + RegistryKey langPacksKey = rk.OpenSubKey("LangPacks"); + if (langPacksKey == null) throw new Exception("Can't open SOFTWARE\\Microsoft\\MSCRM\\LangPacks"); + + string[] langPacksId = langPacksKey.GetSubKeyNames(); + + foreach (string strLangId in langPacksId) + { + int langId = 0; + if (int.TryParse(strLangId, out langId)) + res.Add(langId); + } + + } + catch (Exception ex) + { + EndLog("GetInstalledLanguagePacks", null, null, ex); + return null; + } + + EndLog("GetInstalledLanguagePacks"); + return res.ToArray(); + } + + public virtual ResultObject DeleteOrganization(Guid orgId) + { + return DeleteOrganizationInternal(orgId); + } + + internal virtual ResultObject DeleteOrganizationInternal(Guid orgId) + { + ResultObject res = StartLog("DeleteOrganizationInternal"); + + + res.IsSuccess = true; + try + { + DeploymentServiceClient deploymentService = GetDeploymentProxy(); + + EntityInstanceId i = new EntityInstanceId(); + i.Id = orgId; //Organisation Id + + Microsoft.Xrm.Sdk.Deployment.Organization org = (Microsoft.Xrm.Sdk.Deployment.Organization)deploymentService.Retrieve(DeploymentEntityType.Organization, i); + + org.State = Microsoft.Xrm.Sdk.Deployment.OrganizationState.Disabled; + + Microsoft.Xrm.Sdk.Deployment.UpdateRequest updateRequest = new Microsoft.Xrm.Sdk.Deployment.UpdateRequest(); + updateRequest.Entity = org; + + deploymentService.Execute(updateRequest); + + } + catch (Exception ex) + { + EndLog("DeleteOrganizationInternal", res, CrmErrorCodes.DELETE_CRM_ORGANIZATION_GENERAL_ERROR, ex); + return res; + + } + + + EndLog("DeleteOrganizationInternal"); + return res; + } + + public override void DeleteServiceItems(ServiceProviderItem[] items) + { + foreach (ServiceProviderItem item in items) + { + try + { + if (item is Organization) + { + Organization org = item as Organization; + DeleteOrganization(org.CrmOrganizationId); + } + + } + catch (Exception ex) + { + Log.WriteError(String.Format("Error deleting '{0}' {1}", item.Name, item.GetType().Name), ex); + } + } + base.DeleteServiceItems(items); + + } + + #endregion + + #region Log + + private static void EndLog(string message, ResultObject res, string errorCode, Exception ex) + { + if (res != null) + { + res.IsSuccess = false; + + if (!string.IsNullOrEmpty(errorCode)) + res.ErrorCodes.Add(errorCode); + } + + if (ex != null) + HostedSolutionLog.LogError(ex); + + HostedSolutionLog.LogEnd(message); + } + + private static void EndLog(string message, ResultObject res, string errorCode) + { + EndLog(message, res, errorCode, null); + } + + private static void EndLog(string message, ResultObject res) + { + EndLog(message, res, null); + } + + private static void EndLog(string message) + { + EndLog(message, null); + } + + private static T StartLog(string message) where T : ResultObject, new() + { + HostedSolutionLog.LogStart(message); + T res = new T(); + res.IsSuccess = true; + return res; + } + + private static void StartLog(string message) + { + HostedSolutionLog.LogStart(message); + } + + #endregion + + #region User + + public virtual UserResult CreateCRMUser(OrganizationUser user, string orgName, Guid organizationId, Guid baseUnitId, int CALType) + { + return CreateCRMUserInternal(user, orgName, organizationId, baseUnitId, CALType); + } + + internal virtual UserResult CreateCRMUserInternal(OrganizationUser user, string orgName, Guid organizationId, Guid businessUnitId, int CALType) + { + UserResult res = StartLog("CreateCRMUserInternal"); + + try + { + if (user == null) + throw new ArgumentNullException("user"); + + if (string.IsNullOrEmpty(orgName)) + throw new ArgumentNullException("orgName"); + + if (organizationId == Guid.Empty) + throw new ArgumentException("organizationId"); + + if (businessUnitId == Guid.Empty) + throw new ArgumentException("businessUnitId"); + + try + { + OrganizationServiceProxy _serviceProxy = GetOrganizationProxy(orgName); + + + string ldap = ""; + Guid guid = RetrieveSystemUser(user.DomainUserName, user.FirstName, user.LastName, CRMSysAdminRoleStr, _serviceProxy, ref ldap, CALType); + + user.CrmUserId = guid; + res.Value = user; + + } + catch (Exception ex) + { + EndLog("CreateCRMUserInternal", res, CrmErrorCodes.CANNOT_CREATE_CRM_USER, ex); + return res; + } + } + catch (Exception ex) + { + EndLog("CreateCRMUserInternal", res, CrmErrorCodes.CANNOT_CREATE_CRM_USER_GENERAL_ERROR, ex); + return res; + + } + + EndLog("CreateCRMUserInternal"); + return res; + } + + protected virtual Guid CreateSystemUser(String userName, String firstName, + String lastName, String domain, String roleStr, + OrganizationServiceProxy serviceProxy, ref String ldapPath, int CALType) + { + + if (serviceProxy.ServiceConfiguration.AuthenticationType == AuthenticationProviderType.LiveId || + serviceProxy.ServiceConfiguration.AuthenticationType == AuthenticationProviderType.OnlineFederation) + throw new Exception(String.Format("To run this sample, {0} {1} must be an active system user in your Microsoft Dynamics CRM Online organization.", firstName, lastName)); + + Guid userId = Guid.Empty; + + Microsoft.Xrm.Sdk.Query.QueryExpression businessUnitQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression + { + EntityName = BusinessUnit.EntityLogicalName, + ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("businessunitid"), + Criteria = + { + Conditions = + { + new Microsoft.Xrm.Sdk.Query.ConditionExpression("parentbusinessunitid", + Microsoft.Xrm.Sdk.Query.ConditionOperator.Null) + } + } + }; + + BusinessUnit defaultBusinessUnit = serviceProxy.RetrieveMultiple( + businessUnitQuery).Entities[0].ToEntity(); + + // Retrieve the specified security role. + Role role = RetrieveRoleByName(serviceProxy, roleStr); + + // CALType and AccessMode + int accessmode = CALType / 10; + int caltype = CALType % 10; + + //Create a new system user. + SystemUser user = new SystemUser + { + DomainName = userName, + FirstName = firstName, + LastName = lastName, + BusinessUnitId = new EntityReference + { + LogicalName = BusinessUnit.EntityLogicalName, + Name = BusinessUnit.EntityLogicalName, + Id = defaultBusinessUnit.Id + }, + CALType = new OptionSetValue(caltype), + AccessMode = new OptionSetValue(accessmode) + }; + userId = serviceProxy.Create(user); + + // Assign the security role to the newly created Microsoft Dynamics CRM user. + AssociateRequest associate = new AssociateRequest() + { + Target = new EntityReference(SystemUser.EntityLogicalName, userId), + RelatedEntities = new EntityReferenceCollection() + { + new EntityReference(Role.EntityLogicalName, role.Id), + }, + Relationship = new Relationship("systemuserroles_association") + }; + serviceProxy.Execute(associate); + + return userId; + } + + + protected virtual Guid RetrieveSystemUser(String userName, String firstName, + String lastName, String roleStr, OrganizationServiceProxy serviceProxy, + ref String ldapPath, + int CALType) + { + String domain; + Guid userId = Guid.Empty; + + if (serviceProxy == null) + throw new ArgumentNullException("serviceProxy"); + + if (String.IsNullOrWhiteSpace(userName)) + throw new ArgumentNullException("UserName"); + + if (String.IsNullOrWhiteSpace(firstName)) + throw new ArgumentNullException("FirstName"); + + if (String.IsNullOrWhiteSpace(lastName)) + throw new ArgumentNullException("LastName"); + + if (String.IsNullOrWhiteSpace(roleStr)) + throw new ArgumentNullException("Role"); + + // Obtain the current user's information. + Microsoft.Crm.Sdk.Messages.WhoAmIRequest who = new Microsoft.Crm.Sdk.Messages.WhoAmIRequest(); + Microsoft.Crm.Sdk.Messages.WhoAmIResponse whoResp = (Microsoft.Crm.Sdk.Messages.WhoAmIResponse)serviceProxy.Execute(who); + Guid currentUserId = whoResp.UserId; + + SystemUser currentUser = + serviceProxy.Retrieve(SystemUser.EntityLogicalName, currentUserId, new Microsoft.Xrm.Sdk.Query.ColumnSet("domainname")).ToEntity(); + + // Extract the domain and create the LDAP object. + String[] userPath = currentUser.DomainName.Split(new char[] { '\\' }); + if (userPath.Length > 1) + domain = userPath[0] + "\\"; + else + domain = String.Empty; + + // Create the system user in Microsoft Dynamics CRM if the user doesn't + // already exist. + Microsoft.Xrm.Sdk.Query.QueryExpression userQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression + { + EntityName = SystemUser.EntityLogicalName, + ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("systemuserid"), + Criteria = + { + FilterOperator = Microsoft.Xrm.Sdk.Query.LogicalOperator.Or, + Filters = + { + new Microsoft.Xrm.Sdk.Query.FilterExpression + { + FilterOperator = Microsoft.Xrm.Sdk.Query.LogicalOperator.And, + Conditions = + { + new Microsoft.Xrm.Sdk.Query.ConditionExpression("domainname", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, domain + userName) + } + }, + new Microsoft.Xrm.Sdk.Query.FilterExpression + { + FilterOperator = Microsoft.Xrm.Sdk.Query.LogicalOperator.And, + Conditions = + { + new Microsoft.Xrm.Sdk.Query.ConditionExpression("firstname", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, firstName), + new Microsoft.Xrm.Sdk.Query.ConditionExpression("lastname", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, lastName) + } + } + } + + } + }; + + DataCollection existingUsers = (DataCollection)serviceProxy.RetrieveMultiple(userQuery).Entities; + + SystemUser existingUser = null; + if (existingUsers.Count > 0) + existingUser = existingUsers[0].ToEntity(); + + if (existingUser != null) + { + userId = existingUser.SystemUserId.Value; + + // Check to make sure the user is assigned the correct role. + Role role = RetrieveRoleByName(serviceProxy, roleStr); + + // Associate the user with the role when needed. + if (!UserInRole(serviceProxy, userId, role.Id)) + { + AssociateRequest associate = new AssociateRequest() + { + Target = new EntityReference(SystemUser.EntityLogicalName, userId), + RelatedEntities = new EntityReferenceCollection() + { + new EntityReference(Role.EntityLogicalName, role.Id) + }, + Relationship = new Relationship("systemuserroles_association") + }; + serviceProxy.Execute(associate); + } + + } + else + { + userId = CreateSystemUser(userName, firstName, lastName, domain, + roleStr, serviceProxy, ref ldapPath, CALType); + } + + return userId; + } + + public virtual CrmUserResult GetCrmUserById(Guid crmUserId, string orgName) + { + return GetCrmUserByIdInternal(crmUserId, orgName); + } + + internal virtual CrmUserResult GetCrmUserByIdInternal(Guid crmUserId, string orgName) + { + CrmUserResult ret = StartLog("GetCrmUserByIdInternal"); + + try + { + if (crmUserId == Guid.Empty) + throw new ArgumentNullException("crmUserId"); + + if (string.IsNullOrEmpty(orgName)) + throw new ArgumentNullException("orgName"); + + OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); + + SystemUser retruveUser = + serviceProxy.Retrieve(SystemUser.EntityLogicalName, crmUserId, new Microsoft.Xrm.Sdk.Query.ColumnSet("domainname", "businessunitid", "accessmode", "isdisabled", "caltype")).ToEntity(); + + CrmUser user = null; + + if (retruveUser != null) + { + user = new CrmUser(); + user.BusinessUnitId = retruveUser.BusinessUnitId.Id; + user.CRMUserId = retruveUser.SystemUserId.Value; + user.ClientAccessMode = (CRMUserAccessMode)retruveUser.AccessMode.Value; + user.IsDisabled = (bool)retruveUser.IsDisabled; + user.CALType = retruveUser.CALType.Value; + + ret.Value = user; + } + } + catch (Exception ex) + { + EndLog("GetCrmUserByIdInternal", ret, CrmErrorCodes.CANONT_GET_CRM_USER_BY_ID, ex); + return ret; + } + + EndLog("GetCrmUserByIdInternal"); + return ret; + } + + internal virtual CrmUserResult GetCrmUserByDomainNameInternal(string domainName, string orgName) + { + CrmUserResult ret = StartLog("GetCrmUserByDomainNameInternal"); + + try + { + if (string.IsNullOrEmpty(domainName)) + throw new ArgumentNullException("domainName"); + + if (string.IsNullOrEmpty(orgName)) + throw new ArgumentNullException("orgName"); + + + OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); + + Microsoft.Xrm.Sdk.Query.QueryExpression usereQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression + { + EntityName = SystemUser.EntityLogicalName, + ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("domainname", "businessunitid", "accessmode", "isdisabled", "systemuserid", "caltype"), + }; + + EntityCollection users = serviceProxy.RetrieveMultiple(usereQuery); + + foreach (Entity entityuser in users.Entities) + { + SystemUser sysuser = entityuser.ToEntity(); + + if (sysuser == null) continue; + if (sysuser.DomainName != domainName) continue; + + CrmUser user = new CrmUser(); + user.BusinessUnitId = sysuser.BusinessUnitId.Id; + user.CRMUserId = sysuser.SystemUserId.Value; + user.ClientAccessMode = (CRMUserAccessMode)sysuser.AccessMode.Value; + user.IsDisabled = sysuser.IsDisabled.Value; + user.CALType = sysuser.CALType.Value; + ret.Value = user; + } + } + catch (Exception ex) + { + EndLog("GetCrmUserByDomainNameInternal", ret, CrmErrorCodes.CANONT_GET_CRM_USER_BY_DOMAIN_NAME, ex); + return ret; + } + + EndLog("GetCrmUserByDomainNameInternal"); + return ret; + } + + public virtual CrmUserResult GetCrmUserByDomainName(string domainName, string orgName) + { + return GetCrmUserByDomainNameInternal(domainName, orgName); + } + + public virtual ResultObject ChangeUserState(bool disable, string orgName, Guid crmUserId) + { + return ChangeUserStateInternal(disable, orgName, crmUserId); + } + + internal virtual ResultObject ChangeUserStateInternal(bool disable, string orgName, Guid crmUserId) + { + ResultObject res = StartLog("ChangeUserStateInternal"); + + res.IsSuccess = true; + try + { + if (crmUserId == Guid.Empty) + throw new ArgumentNullException("crmUserId"); + + if (string.IsNullOrEmpty(orgName)) + throw new ArgumentNullException("orgName"); + + OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); + + // Retrieve a user. + SystemUser user = serviceProxy.Retrieve(SystemUser.EntityLogicalName, + crmUserId, new Microsoft.Xrm.Sdk.Query.ColumnSet(new String[] { "systemuserid", "firstname", "lastname" })).ToEntity(); + + if (user != null) + { + Microsoft.Crm.Sdk.Messages.SetStateRequest request = new Microsoft.Crm.Sdk.Messages.SetStateRequest() + { + EntityMoniker = user.ToEntityReference(), + + // Required by request but always valued at -1 in this context. + Status = new OptionSetValue(-1), + + // Sets the user to disabled. + State = disable ? new OptionSetValue(-1) : new OptionSetValue(0) + }; + + serviceProxy.Execute(request); + + } + } + catch (Exception ex) + { + EndLog("ChangeUserStateInternal", res, CrmErrorCodes.CANNOT_CHANGE_USER_STATE, ex); + return res; + } + + + EndLog("ChangeUserStateInternal"); + return res; + } + + public virtual ResultObject SetUserCALType(string orgName, Guid userId, int CALType) + { + return SetUserCALTypeInternal(orgName, userId, CALType); + } + + internal virtual ResultObject SetUserCALTypeInternal(string orgName, Guid userId, int CALType) + { + ResultObject ret = StartLog("SetUserCALTypeInternal"); + + try + { + if (userId == Guid.Empty) + throw new ArgumentNullException("crmUserId"); + + if (string.IsNullOrEmpty(orgName)) + throw new ArgumentNullException("orgName"); + + OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); + + SystemUser user = + serviceProxy.Retrieve(SystemUser.EntityLogicalName, userId, new Microsoft.Xrm.Sdk.Query.ColumnSet("domainname", "businessunitid", "accessmode", "isdisabled", "caltype")).ToEntity(); + + // CALType and AccessMode + int accessmode = CALType / 10; + int caltype = CALType % 10; + + user.CALType = new OptionSetValue(caltype); + user.AccessMode = new OptionSetValue(accessmode); + + serviceProxy.Update(user); + + } + catch (Exception ex) + { + EndLog("SetUserCALTypeInternal", ret, CrmErrorCodes.CANONT_GET_CRM_USER_BY_ID, ex); + return ret; + } + + EndLog("SetUserCALTypeInternal"); + return ret; + } + + #endregion + + #region Role + + protected virtual Role RetrieveRoleByName(OrganizationServiceProxy serviceProxy, + String roleSplitStr) + { + string[] RolesStr = roleSplitStr.Split(';'); + + foreach (string roleStr in RolesStr) + { + + Microsoft.Xrm.Sdk.Query.QueryExpression roleQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression + { + EntityName = Role.EntityLogicalName, + ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("roleid"), + Criteria = + { + Conditions = + { + new Microsoft.Xrm.Sdk.Query.ConditionExpression("name", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, roleStr) + } + } + }; + + DataCollection roles = serviceProxy.RetrieveMultiple(roleQuery).Entities; + + if (roles.Count > 0) return roles[0].ToEntity(); + } + + return null; + } + + protected virtual bool UserInRole(OrganizationServiceProxy serviceProxy, + Guid userId, Guid roleId) + { + // Establish a SystemUser link for a query. + Microsoft.Xrm.Sdk.Query.LinkEntity systemUserLink = new Microsoft.Xrm.Sdk.Query.LinkEntity() + { + LinkFromEntityName = SystemUserRoles.EntityLogicalName, + LinkFromAttributeName = "systemuserid", + LinkToEntityName = SystemUser.EntityLogicalName, + LinkToAttributeName = "systemuserid", + LinkCriteria = + { + Conditions = + { + new Microsoft.Xrm.Sdk.Query.ConditionExpression( + "systemuserid", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, userId) + } + } + }; + + // Build the query. + Microsoft.Xrm.Sdk.Query.QueryExpression query = new Microsoft.Xrm.Sdk.Query.QueryExpression() + { + EntityName = Role.EntityLogicalName, + ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("roleid"), + LinkEntities = + { + new Microsoft.Xrm.Sdk.Query.LinkEntity() + { + LinkFromEntityName = Role.EntityLogicalName, + LinkFromAttributeName = "roleid", + LinkToEntityName = SystemUserRoles.EntityLogicalName, + LinkToAttributeName = "roleid", + LinkEntities = {systemUserLink} + } + }, + Criteria = + { + Conditions = + { + new Microsoft.Xrm.Sdk.Query.ConditionExpression("roleid", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, roleId) + } + } + }; + + // Retrieve matching roles. + EntityCollection ec = serviceProxy.RetrieveMultiple(query); + + if (ec.Entities.Count > 0) + return true; + + return false; + } + + public virtual CrmRolesResult GetAllCrmRoles(string orgName, Guid businessUnitId) + { + return GetAllCrmRolesInternal(orgName, businessUnitId); + } + + public virtual CrmRolesResult GetCrmUserRoles(string orgName, Guid userId) + { + return GetCrmUserRolesInternal(userId, orgName); + } + + public virtual EntityCollection GetUserRoles(Guid userId, string orgName) + { + OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); + + // Establish a SystemUser link for a query. + Microsoft.Xrm.Sdk.Query.LinkEntity systemUserLink = new Microsoft.Xrm.Sdk.Query.LinkEntity() + { + LinkFromEntityName = SystemUserRoles.EntityLogicalName, + LinkFromAttributeName = "systemuserid", + LinkToEntityName = SystemUser.EntityLogicalName, + LinkToAttributeName = "systemuserid", + LinkCriteria = + { + Conditions = + { + new Microsoft.Xrm.Sdk.Query.ConditionExpression( + "systemuserid", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, userId) + } + } + }; + + // Build the query. + Microsoft.Xrm.Sdk.Query.QueryExpression query = new Microsoft.Xrm.Sdk.Query.QueryExpression() + { + EntityName = Role.EntityLogicalName, + ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("roleid"), + LinkEntities = + { + new Microsoft.Xrm.Sdk.Query.LinkEntity() + { + LinkFromEntityName = Role.EntityLogicalName, + LinkFromAttributeName = "roleid", + LinkToEntityName = SystemUserRoles.EntityLogicalName, + LinkToAttributeName = "roleid", + LinkEntities = {systemUserLink} + } + } + }; + + // Retrieve matching roles. + EntityCollection relations = serviceProxy.RetrieveMultiple(query); + + return relations; + } + + internal virtual CrmRolesResult GetCrmUserRolesInternal(Guid userId, string orgName) + { + CrmRolesResult res = StartLog("GetCrmUserRolesInternal"); + + try + { + EntityCollection relations; + + if (userId == Guid.Empty) + throw new ArgumentException("userId"); + + if (string.IsNullOrEmpty(orgName)) + throw new ArgumentNullException("orgName"); + + try + { + relations = GetUserRoles(userId, orgName); + } + catch (Exception ex) + { + EndLog("GetCrmUserRolesInternal", res, CrmErrorCodes.CANNOT_GET_CRM_USER_ROLES, ex); + return res; + } + + try + { + res.Value = FillCrmRoles(relations, true, Guid.Empty); + } + catch (Exception ex) + { + EndLog("GetCrmUserRolesInternal", res, CrmErrorCodes.CANNOT_FILL_ROLES_COLLECTION, ex); + return res; + } + } + catch (Exception ex) + { + EndLog("GetCrmUserRolesInternal", res, CrmErrorCodes.GET_CRM_USER_ROLE_GENERAL_ERROR, ex); + return res; + } + + EndLog("GetCrmUserRolesInternal"); + return res; + } + + protected static string excludedRolesStr = ";пользователь поддержки;support user;"; + + protected virtual List FillCrmRoles(EntityCollection entities, bool isUserRole, Guid businessUnitId) + { + List res = new List(); + + foreach (Entity current in entities.Entities) + { + Role role = current.ToEntity(); + + if (role == null) continue; + + if (businessUnitId != Guid.Empty) + { + if (businessUnitId != role.BusinessUnitId.Id) + continue; + } + + string roleName = role.Name; + + if (roleName != null) + if (excludedRolesStr.IndexOf(";" + roleName.ToLower() + ";") != -1) + continue; + + CrmRole crmRole = new CrmRole(); + crmRole.IsCurrentUserRole = isUserRole; + crmRole.RoleId = (Guid)role.RoleId; + crmRole.RoleName = roleName; + + res.Add(crmRole); + } + + return res; + } + + protected virtual List FillCrmRoles(EntityCollection entities, Guid businessUnitId) + { + return FillCrmRoles(entities, false, businessUnitId); + } + + internal virtual CrmRolesResult GetAllCrmRolesInternal(string orgName, Guid businessUnitId) + { + CrmRolesResult res = StartLog("GetAllCrmRoles"); + + try + { + if (string.IsNullOrEmpty(orgName)) + throw new ArgumentNullException("orgName"); + + EntityCollection roles; + try + { + OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); + + Microsoft.Xrm.Sdk.Query.QueryExpression roleQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression + { + EntityName = Role.EntityLogicalName, + ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet(new string[] { "roleid", "name", "businessunitid" }), + }; + + roles = serviceProxy.RetrieveMultiple(roleQuery); + + + } + catch (Exception ex) + { + EndLog("GetAllCrmRoles", res, CrmErrorCodes.CANNOT_GET_ALL_CRM_ROLES, ex); + return res; + } + + try + { + List crmRoles = FillCrmRoles(roles, businessUnitId); + res.Value = crmRoles; + } + catch (Exception ex) + { + EndLog("GetAllCrmRoles", res, CrmErrorCodes.CANNOT_FILL_ROLES_COLLECTION, ex); + return res; + } + } + catch (Exception ex) + { + EndLog("GetAllCrmRoles", res, CrmErrorCodes.GET_ALL_CRM_ROLES_GENERAL_ERROR, ex); + return res; + } + + EndLog("GetAllCrmRoles"); + return res; + } + + public virtual ResultObject SetUserRoles(string orgName, Guid userId, Guid[] roles) + { + return SetUserRolesInternal(orgName, userId, roles); + } + + internal virtual ResultObject SetUserRolesInternal(string orgName, Guid userId, Guid[] roles) + { + CrmRolesResult res = StartLog("SetUserRolesInternal"); + + try + { + if (string.IsNullOrEmpty(orgName)) + throw new ArgumentNullException("orgName"); + + if (userId == Guid.Empty) + throw new ArgumentException("userId"); + + if (roles == null) + throw new ArgumentNullException("roles"); + + OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); + + + CrmRolesResult tmpRoles = GetCrmUserRoles(orgName, userId); + res.ErrorCodes.AddRange(tmpRoles.ErrorCodes); + + if (!tmpRoles.IsSuccess) + return res; + + List remRoles = new List(); + + for (int i = 0; i < tmpRoles.Value.Count; i++) + { + if (Array.Find(roles, delegate(Guid current) { return current == tmpRoles.Value[i].RoleId; }) == Guid.Empty) + { + remRoles.Add(tmpRoles.Value[i].RoleId); + } + } + + try + { + DisassociateRequest removeRole = new DisassociateRequest() + { + Target = new EntityReference(SystemUser.EntityLogicalName, userId), + RelatedEntities = new EntityReferenceCollection(), + Relationship = new Relationship("systemuserroles_association") + }; + + for (int i = 0; i < remRoles.Count; i++) + removeRole.RelatedEntities.Add(new EntityReference(Role.EntityLogicalName, remRoles[i])); + + serviceProxy.Execute(removeRole); + + } + catch (Exception ex) + { + EndLog("SetUserRolesInternal", res, CrmErrorCodes.CANNOT_REMOVE_CRM_USER_ROLES, ex); + return res; + } + + + try + { + // Assign the security role to the newly created Microsoft Dynamics CRM user. + AssociateRequest associate = new AssociateRequest() + { + Target = new EntityReference(SystemUser.EntityLogicalName, userId), + RelatedEntities = new EntityReferenceCollection(), + Relationship = new Relationship("systemuserroles_association") + }; + + for (int i = 0; i < roles.Length; i++) + { + bool find = false; + foreach (CrmRole current in tmpRoles.Value) + { + if (current.RoleId == roles[i]) + find = true; + } + if (find) continue; + + associate.RelatedEntities.Add(new EntityReference(Role.EntityLogicalName, roles[i])); + } + + serviceProxy.Execute(associate); + } + catch (Exception ex) + { + EndLog("SetUserRolesInternal", res, CrmErrorCodes.CANNOT_ASSIGN_CRM_USER_ROLES, ex); + return res; + } + + } + catch (Exception ex) + { + EndLog("SetUserRolesInternal", res, CrmErrorCodes.CANNOT_SET_CRM_USER_ROLES_GENERAL_ERROR, ex); + return res; + } + + + EndLog("SetUserRolesInternal"); + return res; + + } + + #endregion + + #region Business Units + + internal virtual CRMBusinessUnitsResult GetOrganizationBusinessUnitsInternal(Guid organizationId, string orgName) + { + CRMBusinessUnitsResult res = StartLog("GetOrganizationBusinessUnitsInternal"); + + try + { + if (organizationId == Guid.Empty) + throw new ArgumentException("organizationId"); + + if (string.IsNullOrEmpty(orgName)) + throw new ArgumentNullException("orgName"); + + OrganizationServiceProxy serviceProxy; + + try + { + serviceProxy = GetOrganizationProxy(orgName); + } + catch (Exception ex) + { + EndLog("GetOrganizationBusinessUnitsInternal", res, CrmErrorCodes.CANNOT_GET_CRM_SERVICE, ex); + return res; + } + + DataCollection BusinessUnits; + + try + { + + Microsoft.Xrm.Sdk.Query.QueryExpression businessUnitQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression + { + EntityName = BusinessUnit.EntityLogicalName, + ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet(new string[] { "businessunitid", "name" }), + Criteria = + { + Conditions = + { + new Microsoft.Xrm.Sdk.Query.ConditionExpression("parentbusinessunitid", + Microsoft.Xrm.Sdk.Query.ConditionOperator.Null) + } + } + }; + + BusinessUnits = serviceProxy.RetrieveMultiple( + businessUnitQuery).Entities; + + } + catch (Exception ex) + { + EndLog("GetOrganizationBusinessUnitsInternal", res, CrmErrorCodes.CANNOT_GET_CRM_BUSINESS_UNITS, ex); + return res; + } + + List businessUnits = new List(); + + try + { + for (int i = 0; i < BusinessUnits.Count; i++) + { + BusinessUnit bu = BusinessUnits[i].ToEntity(); + + CRMBusinessUnit unit = new CRMBusinessUnit(); + unit.BusinessUnitId = (Guid)bu.BusinessUnitId; + unit.BusinessUnitName = bu.Name; + + if (unit.BusinessUnitName == null) + unit.BusinessUnitName = "default"; + + businessUnits.Add(unit); + + } + + res.Value = businessUnits; + } + catch (Exception ex) + { + EndLog("GetOrganizationBusinessUnitsInternal", res, CrmErrorCodes.CANNOT_FILL_BASE_UNITS_COLLECTION, + ex); + return res; + } + } + catch (Exception ex) + { + EndLog("GetOrganizationBusinessUnitsInternal", res, CrmErrorCodes.GET_ORGANIZATION_BUSINESS_UNITS_GENERAL_ERROR, + ex); + return res; + + } + + EndLog("GetOrganizationBusinessUnitsInternal"); + return res; + + } + + public virtual CRMBusinessUnitsResult GetOrganizationBusinessUnits(Guid organizationId, string orgName) + { + return GetOrganizationBusinessUnitsInternal(organizationId, orgName); + } + + #endregion + + #region Version + + public virtual string CRMServerVersion + { + get + { + string value = ""; + try + { + RegistryKey root = Registry.LocalMachine; + RegistryKey rk = root.OpenSubKey("SOFTWARE\\Microsoft\\MSCRM"); + + if (rk == null) + rk = root.OpenSubKey("SOFTWARE\\Wow6432Node\\Microsoft\\MSCRM"); + + if (rk != null) + { + value = (string)rk.GetValue("CRM_Server_Version", null); + rk.Close(); + } + } + catch (Exception ex) + { + Log.WriteError(ex); + } + + return value; + } + + } + + public override bool IsInstalled() + { + return false; + } + + #endregion + + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2013/CRMProvider2013.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2013/CRMProvider2013.cs new file mode 100644 index 00000000..3b1b7dde --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2013/CRMProvider2013.cs @@ -0,0 +1,46 @@ +// Copyright (c) 2012 - 2013, 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. + +using System; +using WebsitePanel.Providers.HostedSolution; + + +namespace WebsitePanel.Providers.HostedSolution +{ + public class CRMProvider2013 : CRMBase + { + + public override bool IsInstalled() + { + + return CRMServerVersion.StartsWith("6."); + } + + } + +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2013/HostedSolutionLog.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2013/HostedSolutionLog.cs new file mode 100644 index 00000000..83257a78 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2013/HostedSolutionLog.cs @@ -0,0 +1,152 @@ +// 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. + +using System; +using WebsitePanel.Providers.Common; +using WebsitePanel.Server.Utils; +using System.Text; +using System.Management.Automation.Runspaces; + +namespace WebsitePanel.Providers.HostedSolution +{ + public class HostedSolutionLog + { + public static string LogPrefix = "HostedSolution"; + + public static void LogStart(string message, params object[] args) + { + string text = String.Format(message, args); + Log.WriteStart("{0} {1}", LogPrefix, text); + } + + public static void LogEnd(string message, params object[] args) + { + string text = String.Format(message, args); + Log.WriteEnd("{0} {1}", LogPrefix, text); + } + + public static void LogInfo(string message) + { + Log.WriteInfo("{0} {1}", LogPrefix, message); + } + + public static void LogInfo(string message, params object[] args) + { + string text = String.Format(message, args); + Log.WriteInfo("{0} {1}", LogPrefix, text); + } + + public static void LogWarning(string message) + { + Log.WriteWarning("{0} {1}", LogPrefix, message); + } + + public static void LogWarning(string message, params object[] args) + { + string text = String.Format(message, args); + Log.WriteWarning("{0} {1}", LogPrefix, text); + } + + public static void LogError(Exception ex) + { + Log.WriteError(LogPrefix, ex); + } + + public static void LogError(string message, Exception ex) + { + string text = String.Format("{0} {1}", LogPrefix, message); + Log.WriteError(text, ex); + } + + public static void DebugInfo(string message, params object[] args) + { + string text = String.Format(message, args); + Log.WriteInfo("{0} {1}", LogPrefix, text); + } + + public static void EndLog(string message, ResultObject res, string errorCode, Exception ex) + { + if (res != null) + { + res.IsSuccess = false; + + if (!string.IsNullOrEmpty(errorCode)) + res.ErrorCodes.Add(errorCode); + } + + if (ex != null) + LogError(ex); + + + //LogRecord. + LogEnd(message); + + + } + + public static void EndLog(string message, ResultObject res, string errorCode) + { + EndLog(message, res, errorCode, null); + } + + public static void EndLog(string message, ResultObject res) + { + EndLog(message, res, null); + } + + public static void EndLog(string message) + { + EndLog(message, null); + } + + internal static T StartLog(string message) where T : ResultObject, new() + { + LogStart(message); + T res = new T(); + res.IsSuccess = true; + return res; + } + + public static void DebugCommand(Command cmd) + { + StringBuilder sb = new StringBuilder(cmd.CommandText); + foreach (CommandParameter parameter in cmd.Parameters) + { + string formatString = " -{0} {1}"; + if (parameter.Value is string) + formatString = " -{0} '{1}'"; + else if (parameter.Value is bool) + formatString = " -{0} ${1}"; + sb.AppendFormat(formatString, parameter.Name, parameter.Value); + } + Log.WriteInfo("{0} {1}", LogPrefix, sb.ToString()); + } + + + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2013/MyOrganizationCrmSdkTypes.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2013/MyOrganizationCrmSdkTypes.cs new file mode 100644 index 00000000..01cbdb17 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2013/MyOrganizationCrmSdkTypes.cs @@ -0,0 +1,185223 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34003 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +[assembly: Microsoft.Xrm.Sdk.Client.ProxyTypesAssemblyAttribute()] + + + +[System.Runtime.Serialization.DataContractAttribute()] +[System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "6.0.0001.0059")] +public enum AccountState +{ + + [System.Runtime.Serialization.EnumMemberAttribute()] + Active = 0, + + [System.Runtime.Serialization.EnumMemberAttribute()] + Inactive = 1, +} + +/// +/// Business that represents a customer or potential customer. The company that is billed in business transactions. +/// +[System.Runtime.Serialization.DataContractAttribute()] +[Microsoft.Xrm.Sdk.Client.EntityLogicalNameAttribute("account")] +[System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "6.0.0001.0059")] +public partial class Account : Microsoft.Xrm.Sdk.Entity, System.ComponentModel.INotifyPropertyChanging, System.ComponentModel.INotifyPropertyChanged +{ + + /// + /// Default Constructor. + /// + public Account() : + base(EntityLogicalName) + { + } + + public const string EntityLogicalName = "account"; + + public const int EntityTypeCode = 1; + + public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; + + public event System.ComponentModel.PropertyChangingEventHandler PropertyChanging; + + private void OnPropertyChanged(string propertyName) + { + if ((this.PropertyChanged != null)) + { + this.PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName)); + } + } + + private void OnPropertyChanging(string propertyName) + { + if ((this.PropertyChanging != null)) + { + this.PropertyChanging(this, new System.ComponentModel.PropertyChangingEventArgs(propertyName)); + } + } + + /// + /// Select a category to indicate whether the customer account is standard or preferred. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("accountcategorycode")] + public Microsoft.Xrm.Sdk.OptionSetValue AccountCategoryCode + { + get + { + return this.GetAttributeValue("accountcategorycode"); + } + set + { + this.OnPropertyChanging("AccountCategoryCode"); + this.SetAttributeValue("accountcategorycode", value); + this.OnPropertyChanged("AccountCategoryCode"); + } + } + + /// + /// Select a classification code to indicate the potential value of the customer account based on the projected return on investment, cooperation level, sales cycle length or other criteria. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("accountclassificationcode")] + public Microsoft.Xrm.Sdk.OptionSetValue AccountClassificationCode + { + get + { + return this.GetAttributeValue("accountclassificationcode"); + } + set + { + this.OnPropertyChanging("AccountClassificationCode"); + this.SetAttributeValue("accountclassificationcode", value); + this.OnPropertyChanged("AccountClassificationCode"); + } + } + + /// + /// Unique identifier of the account. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("accountid")] + public System.Nullable AccountId + { + get + { + return this.GetAttributeValue>("accountid"); + } + set + { + this.OnPropertyChanging("AccountId"); + this.SetAttributeValue("accountid", value); + if (value.HasValue) + { + base.Id = value.Value; + } + else + { + base.Id = System.Guid.Empty; + } + this.OnPropertyChanged("AccountId"); + } + } + + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("accountid")] + public override System.Guid Id + { + get + { + return base.Id; + } + set + { + this.AccountId = value; + } + } + + /// + /// Type an ID number or code for the account to quickly search and identify the account in system views. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("accountnumber")] + public string AccountNumber + { + get + { + return this.GetAttributeValue("accountnumber"); + } + set + { + this.OnPropertyChanging("AccountNumber"); + this.SetAttributeValue("accountnumber", value); + this.OnPropertyChanged("AccountNumber"); + } + } + + /// + /// Select a rating to indicate the value of the customer account. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("accountratingcode")] + public Microsoft.Xrm.Sdk.OptionSetValue AccountRatingCode + { + get + { + return this.GetAttributeValue("accountratingcode"); + } + set + { + this.OnPropertyChanging("AccountRatingCode"); + this.SetAttributeValue("accountratingcode", value); + this.OnPropertyChanged("AccountRatingCode"); + } + } + + /// + /// Unique identifier for address 1. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_addressid")] + public System.Nullable Address1_AddressId + { + get + { + return this.GetAttributeValue>("address1_addressid"); + } + set + { + this.OnPropertyChanging("Address1_AddressId"); + this.SetAttributeValue("address1_addressid", value); + this.OnPropertyChanged("Address1_AddressId"); + } + } + + /// + /// Select the primary address type. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_addresstypecode")] + public Microsoft.Xrm.Sdk.OptionSetValue Address1_AddressTypeCode + { + get + { + return this.GetAttributeValue("address1_addresstypecode"); + } + set + { + this.OnPropertyChanging("Address1_AddressTypeCode"); + this.SetAttributeValue("address1_addresstypecode", value); + this.OnPropertyChanged("Address1_AddressTypeCode"); + } + } + + /// + /// Type the city for the primary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_city")] + public string Address1_City + { + get + { + return this.GetAttributeValue("address1_city"); + } + set + { + this.OnPropertyChanging("Address1_City"); + this.SetAttributeValue("address1_city", value); + this.OnPropertyChanged("Address1_City"); + } + } + + /// + /// Shows the complete primary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_composite")] + public string Address1_Composite + { + get + { + return this.GetAttributeValue("address1_composite"); + } + } + + /// + /// Type the country or region for the primary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_country")] + public string Address1_Country + { + get + { + return this.GetAttributeValue("address1_country"); + } + set + { + this.OnPropertyChanging("Address1_Country"); + this.SetAttributeValue("address1_country", value); + this.OnPropertyChanged("Address1_Country"); + } + } + + /// + /// Type the county for the primary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_county")] + public string Address1_County + { + get + { + return this.GetAttributeValue("address1_county"); + } + set + { + this.OnPropertyChanging("Address1_County"); + this.SetAttributeValue("address1_county", value); + this.OnPropertyChanged("Address1_County"); + } + } + + /// + /// Type the fax number associated with the primary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_fax")] + public string Address1_Fax + { + get + { + return this.GetAttributeValue("address1_fax"); + } + set + { + this.OnPropertyChanging("Address1_Fax"); + this.SetAttributeValue("address1_fax", value); + this.OnPropertyChanged("Address1_Fax"); + } + } + + /// + /// Select the freight terms for the primary address to make sure shipping orders are processed correctly. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_freighttermscode")] + public Microsoft.Xrm.Sdk.OptionSetValue Address1_FreightTermsCode + { + get + { + return this.GetAttributeValue("address1_freighttermscode"); + } + set + { + this.OnPropertyChanging("Address1_FreightTermsCode"); + this.SetAttributeValue("address1_freighttermscode", value); + this.OnPropertyChanged("Address1_FreightTermsCode"); + } + } + + /// + /// Type the latitude value for the primary address for use in mapping and other applications. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_latitude")] + public System.Nullable Address1_Latitude + { + get + { + return this.GetAttributeValue>("address1_latitude"); + } + set + { + this.OnPropertyChanging("Address1_Latitude"); + this.SetAttributeValue("address1_latitude", value); + this.OnPropertyChanged("Address1_Latitude"); + } + } + + /// + /// Type the first line of the primary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_line1")] + public string Address1_Line1 + { + get + { + return this.GetAttributeValue("address1_line1"); + } + set + { + this.OnPropertyChanging("Address1_Line1"); + this.SetAttributeValue("address1_line1", value); + this.OnPropertyChanged("Address1_Line1"); + } + } + + /// + /// Type the second line of the primary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_line2")] + public string Address1_Line2 + { + get + { + return this.GetAttributeValue("address1_line2"); + } + set + { + this.OnPropertyChanging("Address1_Line2"); + this.SetAttributeValue("address1_line2", value); + this.OnPropertyChanged("Address1_Line2"); + } + } + + /// + /// Type the third line of the primary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_line3")] + public string Address1_Line3 + { + get + { + return this.GetAttributeValue("address1_line3"); + } + set + { + this.OnPropertyChanging("Address1_Line3"); + this.SetAttributeValue("address1_line3", value); + this.OnPropertyChanged("Address1_Line3"); + } + } + + /// + /// Type the longitude value for the primary address for use in mapping and other applications. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_longitude")] + public System.Nullable Address1_Longitude + { + get + { + return this.GetAttributeValue>("address1_longitude"); + } + set + { + this.OnPropertyChanging("Address1_Longitude"); + this.SetAttributeValue("address1_longitude", value); + this.OnPropertyChanged("Address1_Longitude"); + } + } + + /// + /// Type a descriptive name for the primary address, such as Corporate Headquarters. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_name")] + public string Address1_Name + { + get + { + return this.GetAttributeValue("address1_name"); + } + set + { + this.OnPropertyChanging("Address1_Name"); + this.SetAttributeValue("address1_name", value); + this.OnPropertyChanged("Address1_Name"); + } + } + + /// + /// Type the ZIP Code or postal code for the primary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_postalcode")] + public string Address1_PostalCode + { + get + { + return this.GetAttributeValue("address1_postalcode"); + } + set + { + this.OnPropertyChanging("Address1_PostalCode"); + this.SetAttributeValue("address1_postalcode", value); + this.OnPropertyChanged("Address1_PostalCode"); + } + } + + /// + /// Type the post office box number of the primary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_postofficebox")] + public string Address1_PostOfficeBox + { + get + { + return this.GetAttributeValue("address1_postofficebox"); + } + set + { + this.OnPropertyChanging("Address1_PostOfficeBox"); + this.SetAttributeValue("address1_postofficebox", value); + this.OnPropertyChanged("Address1_PostOfficeBox"); + } + } + + /// + /// Type the name of the main contact at the account's primary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_primarycontactname")] + public string Address1_PrimaryContactName + { + get + { + return this.GetAttributeValue("address1_primarycontactname"); + } + set + { + this.OnPropertyChanging("Address1_PrimaryContactName"); + this.SetAttributeValue("address1_primarycontactname", value); + this.OnPropertyChanged("Address1_PrimaryContactName"); + } + } + + /// + /// Select a shipping method for deliveries sent to this address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_shippingmethodcode")] + public Microsoft.Xrm.Sdk.OptionSetValue Address1_ShippingMethodCode + { + get + { + return this.GetAttributeValue("address1_shippingmethodcode"); + } + set + { + this.OnPropertyChanging("Address1_ShippingMethodCode"); + this.SetAttributeValue("address1_shippingmethodcode", value); + this.OnPropertyChanged("Address1_ShippingMethodCode"); + } + } + + /// + /// Type the state or province of the primary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_stateorprovince")] + public string Address1_StateOrProvince + { + get + { + return this.GetAttributeValue("address1_stateorprovince"); + } + set + { + this.OnPropertyChanging("Address1_StateOrProvince"); + this.SetAttributeValue("address1_stateorprovince", value); + this.OnPropertyChanged("Address1_StateOrProvince"); + } + } + + /// + /// Type the main phone number associated with the primary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_telephone1")] + public string Address1_Telephone1 + { + get + { + return this.GetAttributeValue("address1_telephone1"); + } + set + { + this.OnPropertyChanging("Address1_Telephone1"); + this.SetAttributeValue("address1_telephone1", value); + this.OnPropertyChanged("Address1_Telephone1"); + } + } + + /// + /// Type a second phone number associated with the primary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_telephone2")] + public string Address1_Telephone2 + { + get + { + return this.GetAttributeValue("address1_telephone2"); + } + set + { + this.OnPropertyChanging("Address1_Telephone2"); + this.SetAttributeValue("address1_telephone2", value); + this.OnPropertyChanged("Address1_Telephone2"); + } + } + + /// + /// Type a third phone number associated with the primary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_telephone3")] + public string Address1_Telephone3 + { + get + { + return this.GetAttributeValue("address1_telephone3"); + } + set + { + this.OnPropertyChanging("Address1_Telephone3"); + this.SetAttributeValue("address1_telephone3", value); + this.OnPropertyChanged("Address1_Telephone3"); + } + } + + /// + /// Type the UPS zone of the primary address to make sure shipping charges are calculated correctly and deliveries are made promptly, if shipped by UPS. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_upszone")] + public string Address1_UPSZone + { + get + { + return this.GetAttributeValue("address1_upszone"); + } + set + { + this.OnPropertyChanging("Address1_UPSZone"); + this.SetAttributeValue("address1_upszone", value); + this.OnPropertyChanged("Address1_UPSZone"); + } + } + + /// + /// Select the time zone, or UTC offset, for this address so that other people can reference it when they contact someone at this address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address1_utcoffset")] + public System.Nullable Address1_UTCOffset + { + get + { + return this.GetAttributeValue>("address1_utcoffset"); + } + set + { + this.OnPropertyChanging("Address1_UTCOffset"); + this.SetAttributeValue("address1_utcoffset", value); + this.OnPropertyChanged("Address1_UTCOffset"); + } + } + + /// + /// Unique identifier for address 2. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_addressid")] + public System.Nullable Address2_AddressId + { + get + { + return this.GetAttributeValue>("address2_addressid"); + } + set + { + this.OnPropertyChanging("Address2_AddressId"); + this.SetAttributeValue("address2_addressid", value); + this.OnPropertyChanged("Address2_AddressId"); + } + } + + /// + /// Select the secondary address type. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_addresstypecode")] + public Microsoft.Xrm.Sdk.OptionSetValue Address2_AddressTypeCode + { + get + { + return this.GetAttributeValue("address2_addresstypecode"); + } + set + { + this.OnPropertyChanging("Address2_AddressTypeCode"); + this.SetAttributeValue("address2_addresstypecode", value); + this.OnPropertyChanged("Address2_AddressTypeCode"); + } + } + + /// + /// Type the city for the secondary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_city")] + public string Address2_City + { + get + { + return this.GetAttributeValue("address2_city"); + } + set + { + this.OnPropertyChanging("Address2_City"); + this.SetAttributeValue("address2_city", value); + this.OnPropertyChanged("Address2_City"); + } + } + + /// + /// Shows the complete secondary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_composite")] + public string Address2_Composite + { + get + { + return this.GetAttributeValue("address2_composite"); + } + } + + /// + /// Type the country or region for the secondary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_country")] + public string Address2_Country + { + get + { + return this.GetAttributeValue("address2_country"); + } + set + { + this.OnPropertyChanging("Address2_Country"); + this.SetAttributeValue("address2_country", value); + this.OnPropertyChanged("Address2_Country"); + } + } + + /// + /// Type the county for the secondary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_county")] + public string Address2_County + { + get + { + return this.GetAttributeValue("address2_county"); + } + set + { + this.OnPropertyChanging("Address2_County"); + this.SetAttributeValue("address2_county", value); + this.OnPropertyChanged("Address2_County"); + } + } + + /// + /// Type the fax number associated with the secondary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_fax")] + public string Address2_Fax + { + get + { + return this.GetAttributeValue("address2_fax"); + } + set + { + this.OnPropertyChanging("Address2_Fax"); + this.SetAttributeValue("address2_fax", value); + this.OnPropertyChanged("Address2_Fax"); + } + } + + /// + /// Select the freight terms for the secondary address to make sure shipping orders are processed correctly. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_freighttermscode")] + public Microsoft.Xrm.Sdk.OptionSetValue Address2_FreightTermsCode + { + get + { + return this.GetAttributeValue("address2_freighttermscode"); + } + set + { + this.OnPropertyChanging("Address2_FreightTermsCode"); + this.SetAttributeValue("address2_freighttermscode", value); + this.OnPropertyChanged("Address2_FreightTermsCode"); + } + } + + /// + /// Type the latitude value for the secondary address for use in mapping and other applications. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_latitude")] + public System.Nullable Address2_Latitude + { + get + { + return this.GetAttributeValue>("address2_latitude"); + } + set + { + this.OnPropertyChanging("Address2_Latitude"); + this.SetAttributeValue("address2_latitude", value); + this.OnPropertyChanged("Address2_Latitude"); + } + } + + /// + /// Type the first line of the secondary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_line1")] + public string Address2_Line1 + { + get + { + return this.GetAttributeValue("address2_line1"); + } + set + { + this.OnPropertyChanging("Address2_Line1"); + this.SetAttributeValue("address2_line1", value); + this.OnPropertyChanged("Address2_Line1"); + } + } + + /// + /// Type the second line of the secondary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_line2")] + public string Address2_Line2 + { + get + { + return this.GetAttributeValue("address2_line2"); + } + set + { + this.OnPropertyChanging("Address2_Line2"); + this.SetAttributeValue("address2_line2", value); + this.OnPropertyChanged("Address2_Line2"); + } + } + + /// + /// Type the third line of the secondary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_line3")] + public string Address2_Line3 + { + get + { + return this.GetAttributeValue("address2_line3"); + } + set + { + this.OnPropertyChanging("Address2_Line3"); + this.SetAttributeValue("address2_line3", value); + this.OnPropertyChanged("Address2_Line3"); + } + } + + /// + /// Type the longitude value for the secondary address for use in mapping and other applications. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_longitude")] + public System.Nullable Address2_Longitude + { + get + { + return this.GetAttributeValue>("address2_longitude"); + } + set + { + this.OnPropertyChanging("Address2_Longitude"); + this.SetAttributeValue("address2_longitude", value); + this.OnPropertyChanged("Address2_Longitude"); + } + } + + /// + /// Type a descriptive name for the secondary address, such as Corporate Headquarters. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_name")] + public string Address2_Name + { + get + { + return this.GetAttributeValue("address2_name"); + } + set + { + this.OnPropertyChanging("Address2_Name"); + this.SetAttributeValue("address2_name", value); + this.OnPropertyChanged("Address2_Name"); + } + } + + /// + /// Type the ZIP Code or postal code for the secondary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_postalcode")] + public string Address2_PostalCode + { + get + { + return this.GetAttributeValue("address2_postalcode"); + } + set + { + this.OnPropertyChanging("Address2_PostalCode"); + this.SetAttributeValue("address2_postalcode", value); + this.OnPropertyChanged("Address2_PostalCode"); + } + } + + /// + /// Type the post office box number of the secondary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_postofficebox")] + public string Address2_PostOfficeBox + { + get + { + return this.GetAttributeValue("address2_postofficebox"); + } + set + { + this.OnPropertyChanging("Address2_PostOfficeBox"); + this.SetAttributeValue("address2_postofficebox", value); + this.OnPropertyChanged("Address2_PostOfficeBox"); + } + } + + /// + /// Type the name of the main contact at the account's secondary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_primarycontactname")] + public string Address2_PrimaryContactName + { + get + { + return this.GetAttributeValue("address2_primarycontactname"); + } + set + { + this.OnPropertyChanging("Address2_PrimaryContactName"); + this.SetAttributeValue("address2_primarycontactname", value); + this.OnPropertyChanged("Address2_PrimaryContactName"); + } + } + + /// + /// Select a shipping method for deliveries sent to this address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_shippingmethodcode")] + public Microsoft.Xrm.Sdk.OptionSetValue Address2_ShippingMethodCode + { + get + { + return this.GetAttributeValue("address2_shippingmethodcode"); + } + set + { + this.OnPropertyChanging("Address2_ShippingMethodCode"); + this.SetAttributeValue("address2_shippingmethodcode", value); + this.OnPropertyChanged("Address2_ShippingMethodCode"); + } + } + + /// + /// Type the state or province of the secondary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_stateorprovince")] + public string Address2_StateOrProvince + { + get + { + return this.GetAttributeValue("address2_stateorprovince"); + } + set + { + this.OnPropertyChanging("Address2_StateOrProvince"); + this.SetAttributeValue("address2_stateorprovince", value); + this.OnPropertyChanged("Address2_StateOrProvince"); + } + } + + /// + /// Type the main phone number associated with the secondary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_telephone1")] + public string Address2_Telephone1 + { + get + { + return this.GetAttributeValue("address2_telephone1"); + } + set + { + this.OnPropertyChanging("Address2_Telephone1"); + this.SetAttributeValue("address2_telephone1", value); + this.OnPropertyChanged("Address2_Telephone1"); + } + } + + /// + /// Type a second phone number associated with the secondary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_telephone2")] + public string Address2_Telephone2 + { + get + { + return this.GetAttributeValue("address2_telephone2"); + } + set + { + this.OnPropertyChanging("Address2_Telephone2"); + this.SetAttributeValue("address2_telephone2", value); + this.OnPropertyChanged("Address2_Telephone2"); + } + } + + /// + /// Type a third phone number associated with the secondary address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_telephone3")] + public string Address2_Telephone3 + { + get + { + return this.GetAttributeValue("address2_telephone3"); + } + set + { + this.OnPropertyChanging("Address2_Telephone3"); + this.SetAttributeValue("address2_telephone3", value); + this.OnPropertyChanged("Address2_Telephone3"); + } + } + + /// + /// Type the UPS zone of the secondary address to make sure shipping charges are calculated correctly and deliveries are made promptly, if shipped by UPS. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_upszone")] + public string Address2_UPSZone + { + get + { + return this.GetAttributeValue("address2_upszone"); + } + set + { + this.OnPropertyChanging("Address2_UPSZone"); + this.SetAttributeValue("address2_upszone", value); + this.OnPropertyChanged("Address2_UPSZone"); + } + } + + /// + /// Select the time zone, or UTC offset, for this address so that other people can reference it when they contact someone at this address. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("address2_utcoffset")] + public System.Nullable Address2_UTCOffset + { + get + { + return this.GetAttributeValue>("address2_utcoffset"); + } + set + { + this.OnPropertyChanging("Address2_UTCOffset"); + this.SetAttributeValue("address2_utcoffset", value); + this.OnPropertyChanged("Address2_UTCOffset"); + } + } + + /// + /// For system use only. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("aging30")] + public Microsoft.Xrm.Sdk.Money Aging30 + { + get + { + return this.GetAttributeValue("aging30"); + } + } + + /// + /// The base currency equivalent of the aging 30 field. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("aging30_base")] + public Microsoft.Xrm.Sdk.Money Aging30_Base + { + get + { + return this.GetAttributeValue("aging30_base"); + } + } + + /// + /// For system use only. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("aging60")] + public Microsoft.Xrm.Sdk.Money Aging60 + { + get + { + return this.GetAttributeValue("aging60"); + } + } + + /// + /// The base currency equivalent of the aging 60 field. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("aging60_base")] + public Microsoft.Xrm.Sdk.Money Aging60_Base + { + get + { + return this.GetAttributeValue("aging60_base"); + } + } + + /// + /// For system use only. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("aging90")] + public Microsoft.Xrm.Sdk.Money Aging90 + { + get + { + return this.GetAttributeValue("aging90"); + } + } + + /// + /// The base currency equivalent of the aging 90 field. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("aging90_base")] + public Microsoft.Xrm.Sdk.Money Aging90_Base + { + get + { + return this.GetAttributeValue("aging90_base"); + } + } + + /// + /// Select the legal designation or other business type of the account for contracts or reporting purposes. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("businesstypecode")] + public Microsoft.Xrm.Sdk.OptionSetValue BusinessTypeCode + { + get + { + return this.GetAttributeValue("businesstypecode"); + } + set + { + this.OnPropertyChanging("BusinessTypeCode"); + this.SetAttributeValue("businesstypecode", value); + this.OnPropertyChanged("BusinessTypeCode"); + } + } + + /// + /// Shows who created the record. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("createdby")] + public Microsoft.Xrm.Sdk.EntityReference CreatedBy + { + get + { + return this.GetAttributeValue("createdby"); + } + } + + /// + /// Shows the date and time when the record was created. The date and time are displayed in the time zone selected in Microsoft Dynamics CRM options. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("createdon")] + public System.Nullable CreatedOn + { + get + { + return this.GetAttributeValue>("createdon"); + } + } + + /// + /// Shows who created the record on behalf of another user. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("createdonbehalfby")] + public Microsoft.Xrm.Sdk.EntityReference CreatedOnBehalfBy + { + get + { + return this.GetAttributeValue("createdonbehalfby"); + } + } + + /// + /// Type the credit limit of the account. This is a useful reference when you address invoice and accounting issues with the customer. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("creditlimit")] + public Microsoft.Xrm.Sdk.Money CreditLimit + { + get + { + return this.GetAttributeValue("creditlimit"); + } + set + { + this.OnPropertyChanging("CreditLimit"); + this.SetAttributeValue("creditlimit", value); + this.OnPropertyChanged("CreditLimit"); + } + } + + /// + /// Shows the credit limit converted to the system's default base currency for reporting purposes. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("creditlimit_base")] + public Microsoft.Xrm.Sdk.Money CreditLimit_Base + { + get + { + return this.GetAttributeValue("creditlimit_base"); + } + } + + /// + /// Select whether the credit for the account is on hold. This is a useful reference while addressing the invoice and accounting issues with the customer. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("creditonhold")] + public System.Nullable CreditOnHold + { + get + { + return this.GetAttributeValue>("creditonhold"); + } + set + { + this.OnPropertyChanging("CreditOnHold"); + this.SetAttributeValue("creditonhold", value); + this.OnPropertyChanged("CreditOnHold"); + } + } + + /// + /// Select the size category or range of the account for segmentation and reporting purposes. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("customersizecode")] + public Microsoft.Xrm.Sdk.OptionSetValue CustomerSizeCode + { + get + { + return this.GetAttributeValue("customersizecode"); + } + set + { + this.OnPropertyChanging("CustomerSizeCode"); + this.SetAttributeValue("customersizecode", value); + this.OnPropertyChanged("CustomerSizeCode"); + } + } + + /// + /// Select the category that best describes the relationship between the account and your organization. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("customertypecode")] + public Microsoft.Xrm.Sdk.OptionSetValue CustomerTypeCode + { + get + { + return this.GetAttributeValue("customertypecode"); + } + set + { + this.OnPropertyChanging("CustomerTypeCode"); + this.SetAttributeValue("customertypecode", value); + this.OnPropertyChanged("CustomerTypeCode"); + } + } + + /// + /// Choose the default price list associated with the account to make sure the correct product prices for this customer are applied in sales opportunities, quotes, and orders. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("defaultpricelevelid")] + public Microsoft.Xrm.Sdk.EntityReference DefaultPriceLevelId + { + get + { + return this.GetAttributeValue("defaultpricelevelid"); + } + set + { + this.OnPropertyChanging("DefaultPriceLevelId"); + this.SetAttributeValue("defaultpricelevelid", value); + this.OnPropertyChanged("DefaultPriceLevelId"); + } + } + + /// + /// Type additional information to describe the account, such as an excerpt from the company's website. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("description")] + public string Description + { + get + { + return this.GetAttributeValue("description"); + } + set + { + this.OnPropertyChanging("Description"); + this.SetAttributeValue("description", value); + this.OnPropertyChanged("Description"); + } + } + + /// + /// Select whether the account allows bulk email sent through campaigns. If Do Not Allow is selected, the account can be added to marketing lists, but is excluded from email. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("donotbulkemail")] + public System.Nullable DoNotBulkEMail + { + get + { + return this.GetAttributeValue>("donotbulkemail"); + } + set + { + this.OnPropertyChanging("DoNotBulkEMail"); + this.SetAttributeValue("donotbulkemail", value); + this.OnPropertyChanged("DoNotBulkEMail"); + } + } + + /// + /// Select whether the account allows bulk postal mail sent through marketing campaigns or quick campaigns. If Do Not Allow is selected, the account can be added to marketing lists, but will be excluded from the postal mail. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("donotbulkpostalmail")] + public System.Nullable DoNotBulkPostalMail + { + get + { + return this.GetAttributeValue>("donotbulkpostalmail"); + } + set + { + this.OnPropertyChanging("DoNotBulkPostalMail"); + this.SetAttributeValue("donotbulkpostalmail", value); + this.OnPropertyChanged("DoNotBulkPostalMail"); + } + } + + /// + /// Select whether the account allows direct email sent from Microsoft Dynamics CRM. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("donotemail")] + public System.Nullable DoNotEMail + { + get + { + return this.GetAttributeValue>("donotemail"); + } + set + { + this.OnPropertyChanging("DoNotEMail"); + this.SetAttributeValue("donotemail", value); + this.OnPropertyChanged("DoNotEMail"); + } + } + + /// + /// Select whether the account allows faxes. If Do Not Allow is selected, the account will be excluded from fax activities distributed in marketing campaigns. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("donotfax")] + public System.Nullable DoNotFax + { + get + { + return this.GetAttributeValue>("donotfax"); + } + set + { + this.OnPropertyChanging("DoNotFax"); + this.SetAttributeValue("donotfax", value); + this.OnPropertyChanged("DoNotFax"); + } + } + + /// + /// Select whether the account allows phone calls. If Do Not Allow is selected, the account will be excluded from phone call activities distributed in marketing campaigns. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("donotphone")] + public System.Nullable DoNotPhone + { + get + { + return this.GetAttributeValue>("donotphone"); + } + set + { + this.OnPropertyChanging("DoNotPhone"); + this.SetAttributeValue("donotphone", value); + this.OnPropertyChanged("DoNotPhone"); + } + } + + /// + /// Select whether the account allows direct mail. If Do Not Allow is selected, the account will be excluded from letter activities distributed in marketing campaigns. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("donotpostalmail")] + public System.Nullable DoNotPostalMail + { + get + { + return this.GetAttributeValue>("donotpostalmail"); + } + set + { + this.OnPropertyChanging("DoNotPostalMail"); + this.SetAttributeValue("donotpostalmail", value); + this.OnPropertyChanged("DoNotPostalMail"); + } + } + + /// + /// Select whether the account accepts marketing materials, such as brochures or catalogs. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("donotsendmm")] + public System.Nullable DoNotSendMM + { + get + { + return this.GetAttributeValue>("donotsendmm"); + } + set + { + this.OnPropertyChanging("DoNotSendMM"); + this.SetAttributeValue("donotsendmm", value); + this.OnPropertyChanged("DoNotSendMM"); + } + } + + /// + /// Type the primary email address for the account. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("emailaddress1")] + public string EMailAddress1 + { + get + { + return this.GetAttributeValue("emailaddress1"); + } + set + { + this.OnPropertyChanging("EMailAddress1"); + this.SetAttributeValue("emailaddress1", value); + this.OnPropertyChanged("EMailAddress1"); + } + } + + /// + /// Type the secondary email address for the account. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("emailaddress2")] + public string EMailAddress2 + { + get + { + return this.GetAttributeValue("emailaddress2"); + } + set + { + this.OnPropertyChanging("EMailAddress2"); + this.SetAttributeValue("emailaddress2", value); + this.OnPropertyChanged("EMailAddress2"); + } + } + + /// + /// Type an alternate email address for the account. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("emailaddress3")] + public string EMailAddress3 + { + get + { + return this.GetAttributeValue("emailaddress3"); + } + set + { + this.OnPropertyChanging("EMailAddress3"); + this.SetAttributeValue("emailaddress3", value); + this.OnPropertyChanged("EMailAddress3"); + } + } + + /// + /// Shows the default image for the record. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("entityimage")] + public byte[] EntityImage + { + get + { + return this.GetAttributeValue("entityimage"); + } + set + { + this.OnPropertyChanging("EntityImage"); + this.SetAttributeValue("entityimage", value); + this.OnPropertyChanged("EntityImage"); + } + } + + /// + /// + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("entityimage_timestamp")] + public System.Nullable EntityImage_Timestamp + { + get + { + return this.GetAttributeValue>("entityimage_timestamp"); + } + } + + /// + /// + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("entityimage_url")] + public string EntityImage_URL + { + get + { + return this.GetAttributeValue("entityimage_url"); + } + } + + /// + /// For internal use only. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("entityimageid")] + public System.Nullable EntityImageId + { + get + { + return this.GetAttributeValue>("entityimageid"); + } + } + + /// + /// Shows the conversion rate of the record's currency. The exchange rate is used to convert all money fields in the record from the local currency to the system's default currency. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("exchangerate")] + public System.Nullable ExchangeRate + { + get + { + return this.GetAttributeValue>("exchangerate"); + } + } + + /// + /// Type the fax number for the account. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("fax")] + public string Fax + { + get + { + return this.GetAttributeValue("fax"); + } + set + { + this.OnPropertyChanging("Fax"); + this.SetAttributeValue("fax", value); + this.OnPropertyChanged("Fax"); + } + } + + /// + /// Type the URL for the account's FTP site to enable users to access data and share documents. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("ftpsiteurl")] + public string FtpSiteURL + { + get + { + return this.GetAttributeValue("ftpsiteurl"); + } + set + { + this.OnPropertyChanging("FtpSiteURL"); + this.SetAttributeValue("ftpsiteurl", value); + this.OnPropertyChanged("FtpSiteURL"); + } + } + + /// + /// Unique identifier of the data import or data migration that created this record. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("importsequencenumber")] + public System.Nullable ImportSequenceNumber + { + get + { + return this.GetAttributeValue>("importsequencenumber"); + } + set + { + this.OnPropertyChanging("ImportSequenceNumber"); + this.SetAttributeValue("importsequencenumber", value); + this.OnPropertyChanged("ImportSequenceNumber"); + } + } + + /// + /// Select the account's primary industry for use in marketing segmentation and demographic analysis. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("industrycode")] + public Microsoft.Xrm.Sdk.OptionSetValue IndustryCode + { + get + { + return this.GetAttributeValue("industrycode"); + } + set + { + this.OnPropertyChanging("IndustryCode"); + this.SetAttributeValue("industrycode", value); + this.OnPropertyChanged("IndustryCode"); + } + } + + /// + /// Shows the date when the account was last included in a marketing campaign or quick campaign. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("lastusedincampaign")] + public System.Nullable LastUsedInCampaign + { + get + { + return this.GetAttributeValue>("lastusedincampaign"); + } + set + { + this.OnPropertyChanging("LastUsedInCampaign"); + this.SetAttributeValue("lastusedincampaign", value); + this.OnPropertyChanged("LastUsedInCampaign"); + } + } + + /// + /// Type the market capitalization of the account to identify the company's equity, used as an indicator in financial performance analysis. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("marketcap")] + public Microsoft.Xrm.Sdk.Money MarketCap + { + get + { + return this.GetAttributeValue("marketcap"); + } + set + { + this.OnPropertyChanging("MarketCap"); + this.SetAttributeValue("marketcap", value); + this.OnPropertyChanged("MarketCap"); + } + } + + /// + /// Shows the market capitalization converted to the system's default base currency. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("marketcap_base")] + public Microsoft.Xrm.Sdk.Money MarketCap_Base + { + get + { + return this.GetAttributeValue("marketcap_base"); + } + } + + /// + /// Shows the master account that the account was merged with. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("masterid")] + public Microsoft.Xrm.Sdk.EntityReference MasterId + { + get + { + return this.GetAttributeValue("masterid"); + } + } + + /// + /// Shows whether the account has been merged with another account. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("merged")] + public System.Nullable Merged + { + get + { + return this.GetAttributeValue>("merged"); + } + } + + /// + /// Shows who last updated the record. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("modifiedby")] + public Microsoft.Xrm.Sdk.EntityReference ModifiedBy + { + get + { + return this.GetAttributeValue("modifiedby"); + } + } + + /// + /// Shows the date and time when the record was last updated. The date and time are displayed in the time zone selected in Microsoft Dynamics CRM options. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("modifiedon")] + public System.Nullable ModifiedOn + { + get + { + return this.GetAttributeValue>("modifiedon"); + } + } + + /// + /// Shows who created the record on behalf of another user. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("modifiedonbehalfby")] + public Microsoft.Xrm.Sdk.EntityReference ModifiedOnBehalfBy + { + get + { + return this.GetAttributeValue("modifiedonbehalfby"); + } + } + + /// + /// Type the company or business name. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("name")] + public string Name + { + get + { + return this.GetAttributeValue("name"); + } + set + { + this.OnPropertyChanging("Name"); + this.SetAttributeValue("name", value); + this.OnPropertyChanged("Name"); + } + } + + /// + /// Type the number of employees that work at the account for use in marketing segmentation and demographic analysis. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("numberofemployees")] + public System.Nullable NumberOfEmployees + { + get + { + return this.GetAttributeValue>("numberofemployees"); + } + set + { + this.OnPropertyChanging("NumberOfEmployees"); + this.SetAttributeValue("numberofemployees", value); + this.OnPropertyChanged("NumberOfEmployees"); + } + } + + /// + /// Shows the lead that the account was created from if the account was created by converting a lead in Microsoft Dynamics CRM. This is used to relate the account to data on the originating lead for use in reporting and analytics. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("originatingleadid")] + public Microsoft.Xrm.Sdk.EntityReference OriginatingLeadId + { + get + { + return this.GetAttributeValue("originatingleadid"); + } + set + { + this.OnPropertyChanging("OriginatingLeadId"); + this.SetAttributeValue("originatingleadid", value); + this.OnPropertyChanged("OriginatingLeadId"); + } + } + + /// + /// Date and time that the record was migrated. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("overriddencreatedon")] + public System.Nullable OverriddenCreatedOn + { + get + { + return this.GetAttributeValue>("overriddencreatedon"); + } + set + { + this.OnPropertyChanging("OverriddenCreatedOn"); + this.SetAttributeValue("overriddencreatedon", value); + this.OnPropertyChanged("OverriddenCreatedOn"); + } + } + + /// + /// Enter the user or team who is assigned to manage the record. This field is updated every time the record is assigned to a different user. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("ownerid")] + public Microsoft.Xrm.Sdk.EntityReference OwnerId + { + get + { + return this.GetAttributeValue("ownerid"); + } + set + { + this.OnPropertyChanging("OwnerId"); + this.SetAttributeValue("ownerid", value); + this.OnPropertyChanged("OwnerId"); + } + } + + /// + /// Select the account's ownership structure, such as public or private. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("ownershipcode")] + public Microsoft.Xrm.Sdk.OptionSetValue OwnershipCode + { + get + { + return this.GetAttributeValue("ownershipcode"); + } + set + { + this.OnPropertyChanging("OwnershipCode"); + this.SetAttributeValue("ownershipcode", value); + this.OnPropertyChanged("OwnershipCode"); + } + } + + /// + /// Shows the business unit that the record owner belongs to. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("owningbusinessunit")] + public Microsoft.Xrm.Sdk.EntityReference OwningBusinessUnit + { + get + { + return this.GetAttributeValue("owningbusinessunit"); + } + } + + /// + /// Unique identifier of the team who owns the account. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("owningteam")] + public Microsoft.Xrm.Sdk.EntityReference OwningTeam + { + get + { + return this.GetAttributeValue("owningteam"); + } + } + + /// + /// Unique identifier of the user who owns the account. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("owninguser")] + public Microsoft.Xrm.Sdk.EntityReference OwningUser + { + get + { + return this.GetAttributeValue("owninguser"); + } + } + + /// + /// Choose the parent account associated with this account to show parent and child businesses in reporting and analytics. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("parentaccountid")] + public Microsoft.Xrm.Sdk.EntityReference ParentAccountId + { + get + { + return this.GetAttributeValue("parentaccountid"); + } + set + { + this.OnPropertyChanging("ParentAccountId"); + this.SetAttributeValue("parentaccountid", value); + this.OnPropertyChanged("ParentAccountId"); + } + } + + /// + /// For system use only. Legacy Microsoft Dynamics CRM 3.0 workflow data. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("participatesinworkflow")] + public System.Nullable ParticipatesInWorkflow + { + get + { + return this.GetAttributeValue>("participatesinworkflow"); + } + set + { + this.OnPropertyChanging("ParticipatesInWorkflow"); + this.SetAttributeValue("participatesinworkflow", value); + this.OnPropertyChanged("ParticipatesInWorkflow"); + } + } + + /// + /// Select the payment terms to indicate when the customer needs to pay the total amount. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("paymenttermscode")] + public Microsoft.Xrm.Sdk.OptionSetValue PaymentTermsCode + { + get + { + return this.GetAttributeValue("paymenttermscode"); + } + set + { + this.OnPropertyChanging("PaymentTermsCode"); + this.SetAttributeValue("paymenttermscode", value); + this.OnPropertyChanged("PaymentTermsCode"); + } + } + + /// + /// Select the preferred day of the week for service appointments. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("preferredappointmentdaycode")] + public Microsoft.Xrm.Sdk.OptionSetValue PreferredAppointmentDayCode + { + get + { + return this.GetAttributeValue("preferredappointmentdaycode"); + } + set + { + this.OnPropertyChanging("PreferredAppointmentDayCode"); + this.SetAttributeValue("preferredappointmentdaycode", value); + this.OnPropertyChanged("PreferredAppointmentDayCode"); + } + } + + /// + /// Select the preferred time of day for service appointments. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("preferredappointmenttimecode")] + public Microsoft.Xrm.Sdk.OptionSetValue PreferredAppointmentTimeCode + { + get + { + return this.GetAttributeValue("preferredappointmenttimecode"); + } + set + { + this.OnPropertyChanging("PreferredAppointmentTimeCode"); + this.SetAttributeValue("preferredappointmenttimecode", value); + this.OnPropertyChanged("PreferredAppointmentTimeCode"); + } + } + + /// + /// Select the preferred method of contact. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("preferredcontactmethodcode")] + public Microsoft.Xrm.Sdk.OptionSetValue PreferredContactMethodCode + { + get + { + return this.GetAttributeValue("preferredcontactmethodcode"); + } + set + { + this.OnPropertyChanging("PreferredContactMethodCode"); + this.SetAttributeValue("preferredcontactmethodcode", value); + this.OnPropertyChanged("PreferredContactMethodCode"); + } + } + + /// + /// Choose the account's preferred service facility or equipment to make sure services are scheduled correctly for the customer. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("preferredequipmentid")] + public Microsoft.Xrm.Sdk.EntityReference PreferredEquipmentId + { + get + { + return this.GetAttributeValue("preferredequipmentid"); + } + set + { + this.OnPropertyChanging("PreferredEquipmentId"); + this.SetAttributeValue("preferredequipmentid", value); + this.OnPropertyChanged("PreferredEquipmentId"); + } + } + + /// + /// Choose the account's preferred service for reference when you schedule service activities. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("preferredserviceid")] + public Microsoft.Xrm.Sdk.EntityReference PreferredServiceId + { + get + { + return this.GetAttributeValue("preferredserviceid"); + } + set + { + this.OnPropertyChanging("PreferredServiceId"); + this.SetAttributeValue("preferredserviceid", value); + this.OnPropertyChanged("PreferredServiceId"); + } + } + + /// + /// Choose the preferred service representative for reference when you schedule service activities for the account. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("preferredsystemuserid")] + public Microsoft.Xrm.Sdk.EntityReference PreferredSystemUserId + { + get + { + return this.GetAttributeValue("preferredsystemuserid"); + } + set + { + this.OnPropertyChanging("PreferredSystemUserId"); + this.SetAttributeValue("preferredsystemuserid", value); + this.OnPropertyChanged("PreferredSystemUserId"); + } + } + + /// + /// Choose the primary contact for the account to provide quick access to contact details. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("primarycontactid")] + public Microsoft.Xrm.Sdk.EntityReference PrimaryContactId + { + get + { + return this.GetAttributeValue("primarycontactid"); + } + set + { + this.OnPropertyChanging("PrimaryContactId"); + this.SetAttributeValue("primarycontactid", value); + this.OnPropertyChanged("PrimaryContactId"); + } + } + + /// + /// Shows the ID of the process. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("processid")] + public System.Nullable ProcessId + { + get + { + return this.GetAttributeValue>("processid"); + } + set + { + this.OnPropertyChanging("ProcessId"); + this.SetAttributeValue("processid", value); + this.OnPropertyChanged("ProcessId"); + } + } + + /// + /// Type the annual revenue for the account, used as an indicator in financial performance analysis. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("revenue")] + public Microsoft.Xrm.Sdk.Money Revenue + { + get + { + return this.GetAttributeValue("revenue"); + } + set + { + this.OnPropertyChanging("Revenue"); + this.SetAttributeValue("revenue", value); + this.OnPropertyChanged("Revenue"); + } + } + + /// + /// Shows the annual revenue converted to the system's default base currency. The calculations use the exchange rate specified in the Currencies area. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("revenue_base")] + public Microsoft.Xrm.Sdk.Money Revenue_Base + { + get + { + return this.GetAttributeValue("revenue_base"); + } + } + + /// + /// Type the number of shares available to the public for the account. This number is used as an indicator in financial performance analysis. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("sharesoutstanding")] + public System.Nullable SharesOutstanding + { + get + { + return this.GetAttributeValue>("sharesoutstanding"); + } + set + { + this.OnPropertyChanging("SharesOutstanding"); + this.SetAttributeValue("sharesoutstanding", value); + this.OnPropertyChanged("SharesOutstanding"); + } + } + + /// + /// Select a shipping method for deliveries sent to the account's address to designate the preferred carrier or other delivery option. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("shippingmethodcode")] + public Microsoft.Xrm.Sdk.OptionSetValue ShippingMethodCode + { + get + { + return this.GetAttributeValue("shippingmethodcode"); + } + set + { + this.OnPropertyChanging("ShippingMethodCode"); + this.SetAttributeValue("shippingmethodcode", value); + this.OnPropertyChanged("ShippingMethodCode"); + } + } + + /// + /// Type the Standard Industrial Classification (SIC) code that indicates the account's primary industry of business, for use in marketing segmentation and demographic analysis. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("sic")] + public string SIC + { + get + { + return this.GetAttributeValue("sic"); + } + set + { + this.OnPropertyChanging("SIC"); + this.SetAttributeValue("sic", value); + this.OnPropertyChanged("SIC"); + } + } + + /// + /// Shows the ID of the stage. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("stageid")] + public System.Nullable StageId + { + get + { + return this.GetAttributeValue>("stageid"); + } + set + { + this.OnPropertyChanging("StageId"); + this.SetAttributeValue("stageid", value); + this.OnPropertyChanged("StageId"); + } + } + + /// + /// Shows whether the account is active or inactive. Inactive accounts are read-only and can't be edited unless they are reactivated. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("statecode")] + public System.Nullable StateCode + { + get + { + Microsoft.Xrm.Sdk.OptionSetValue optionSet = this.GetAttributeValue("statecode"); + if ((optionSet != null)) + { + return ((AccountState)(System.Enum.ToObject(typeof(AccountState), optionSet.Value))); + } + else + { + return null; + } + } + } + + /// + /// Select the account's status. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("statuscode")] + public Microsoft.Xrm.Sdk.OptionSetValue StatusCode + { + get + { + return this.GetAttributeValue("statuscode"); + } + set + { + this.OnPropertyChanging("StatusCode"); + this.SetAttributeValue("statuscode", value); + this.OnPropertyChanged("StatusCode"); + } + } + + /// + /// Type the stock exchange at which the account is listed to track their stock and financial performance of the company. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("stockexchange")] + public string StockExchange + { + get + { + return this.GetAttributeValue("stockexchange"); + } + set + { + this.OnPropertyChanging("StockExchange"); + this.SetAttributeValue("stockexchange", value); + this.OnPropertyChanged("StockExchange"); + } + } + + /// + /// Type the main phone number for this account. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("telephone1")] + public string Telephone1 + { + get + { + return this.GetAttributeValue("telephone1"); + } + set + { + this.OnPropertyChanging("Telephone1"); + this.SetAttributeValue("telephone1", value); + this.OnPropertyChanged("Telephone1"); + } + } + + /// + /// Type a second phone number for this account. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("telephone2")] + public string Telephone2 + { + get + { + return this.GetAttributeValue("telephone2"); + } + set + { + this.OnPropertyChanging("Telephone2"); + this.SetAttributeValue("telephone2", value); + this.OnPropertyChanged("Telephone2"); + } + } + + /// + /// Type a third phone number for this account. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("telephone3")] + public string Telephone3 + { + get + { + return this.GetAttributeValue("telephone3"); + } + set + { + this.OnPropertyChanging("Telephone3"); + this.SetAttributeValue("telephone3", value); + this.OnPropertyChanged("Telephone3"); + } + } + + /// + /// Select a region or territory for the account for use in segmentation and analysis. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("territorycode")] + public Microsoft.Xrm.Sdk.OptionSetValue TerritoryCode + { + get + { + return this.GetAttributeValue("territorycode"); + } + set + { + this.OnPropertyChanging("TerritoryCode"); + this.SetAttributeValue("territorycode", value); + this.OnPropertyChanged("TerritoryCode"); + } + } + + /// + /// Choose the sales region or territory for the account to make sure the account is assigned to the correct representative and for use in segmentation and analysis. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("territoryid")] + public Microsoft.Xrm.Sdk.EntityReference TerritoryId + { + get + { + return this.GetAttributeValue("territoryid"); + } + set + { + this.OnPropertyChanging("TerritoryId"); + this.SetAttributeValue("territoryid", value); + this.OnPropertyChanged("TerritoryId"); + } + } + + /// + /// Type the stock exchange symbol for the account to track financial performance of the company. You can click the code entered in this field to access the latest trading information from MSN Money. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("tickersymbol")] + public string TickerSymbol + { + get + { + return this.GetAttributeValue("tickersymbol"); + } + set + { + this.OnPropertyChanging("TickerSymbol"); + this.SetAttributeValue("tickersymbol", value); + this.OnPropertyChanged("TickerSymbol"); + } + } + + /// + /// For internal use only. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("timezoneruleversionnumber")] + public System.Nullable TimeZoneRuleVersionNumber + { + get + { + return this.GetAttributeValue>("timezoneruleversionnumber"); + } + set + { + this.OnPropertyChanging("TimeZoneRuleVersionNumber"); + this.SetAttributeValue("timezoneruleversionnumber", value); + this.OnPropertyChanged("TimeZoneRuleVersionNumber"); + } + } + + /// + /// Choose the local currency for the record to make sure budgets are reported in the correct currency. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("transactioncurrencyid")] + public Microsoft.Xrm.Sdk.EntityReference TransactionCurrencyId + { + get + { + return this.GetAttributeValue("transactioncurrencyid"); + } + set + { + this.OnPropertyChanging("TransactionCurrencyId"); + this.SetAttributeValue("transactioncurrencyid", value); + this.OnPropertyChanged("TransactionCurrencyId"); + } + } + + /// + /// Time zone code that was in use when the record was created. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("utcconversiontimezonecode")] + public System.Nullable UTCConversionTimeZoneCode + { + get + { + return this.GetAttributeValue>("utcconversiontimezonecode"); + } + set + { + this.OnPropertyChanging("UTCConversionTimeZoneCode"); + this.SetAttributeValue("utcconversiontimezonecode", value); + this.OnPropertyChanged("UTCConversionTimeZoneCode"); + } + } + + /// + /// Version number of the account. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("versionnumber")] + public System.Nullable VersionNumber + { + get + { + return this.GetAttributeValue>("versionnumber"); + } + } + + /// + /// Type the account's website URL to get quick details about the company profile. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("websiteurl")] + public string WebSiteURL + { + get + { + return this.GetAttributeValue("websiteurl"); + } + set + { + this.OnPropertyChanging("WebSiteURL"); + this.SetAttributeValue("websiteurl", value); + this.OnPropertyChanged("WebSiteURL"); + } + } + + /// + /// Type the phonetic spelling of the company name, if specified in Japanese, to make sure the name is pronounced correctly in phone calls and other communications. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("yominame")] + public string YomiName + { + get + { + return this.GetAttributeValue("yominame"); + } + set + { + this.OnPropertyChanging("YomiName"); + this.SetAttributeValue("yominame", value); + this.OnPropertyChanged("YomiName"); + } + } + + /// + /// 1:N account_activity_parties + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("account_activity_parties")] + public System.Collections.Generic.IEnumerable account_activity_parties + { + get + { + return this.GetRelatedEntities("account_activity_parties", null); + } + set + { + this.OnPropertyChanging("account_activity_parties"); + this.SetRelatedEntities("account_activity_parties", null, value); + this.OnPropertyChanged("account_activity_parties"); + } + } + + /// + /// 1:N Account_ActivityPointers + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("Account_ActivityPointers")] + public System.Collections.Generic.IEnumerable Account_ActivityPointers + { + get + { + return this.GetRelatedEntities("Account_ActivityPointers", null); + } + set + { + this.OnPropertyChanging("Account_ActivityPointers"); + this.SetRelatedEntities("Account_ActivityPointers", null, value); + this.OnPropertyChanged("Account_ActivityPointers"); + } + } + + /// + /// 1:N Account_Annotation + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("Account_Annotation")] + public System.Collections.Generic.IEnumerable Account_Annotation + { + get + { + return this.GetRelatedEntities("Account_Annotation", null); + } + set + { + this.OnPropertyChanging("Account_Annotation"); + this.SetRelatedEntities("Account_Annotation", null, value); + this.OnPropertyChanged("Account_Annotation"); + } + } + + /// + /// 1:N Account_Appointments + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("Account_Appointments")] + public System.Collections.Generic.IEnumerable Account_Appointments + { + get + { + return this.GetRelatedEntities("Account_Appointments", null); + } + set + { + this.OnPropertyChanging("Account_Appointments"); + this.SetRelatedEntities("Account_Appointments", null, value); + this.OnPropertyChanged("Account_Appointments"); + } + } + + /// + /// 1:N Account_AsyncOperations + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("Account_AsyncOperations")] + public System.Collections.Generic.IEnumerable Account_AsyncOperations + { + get + { + return this.GetRelatedEntities("Account_AsyncOperations", null); + } + set + { + this.OnPropertyChanging("Account_AsyncOperations"); + this.SetRelatedEntities("Account_AsyncOperations", null, value); + this.OnPropertyChanged("Account_AsyncOperations"); + } + } + + /// + /// 1:N Account_BulkDeleteFailures + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("Account_BulkDeleteFailures")] + public System.Collections.Generic.IEnumerable Account_BulkDeleteFailures + { + get + { + return this.GetRelatedEntities("Account_BulkDeleteFailures", null); + } + set + { + this.OnPropertyChanging("Account_BulkDeleteFailures"); + this.SetRelatedEntities("Account_BulkDeleteFailures", null, value); + this.OnPropertyChanged("Account_BulkDeleteFailures"); + } + } + + /// + /// 1:N account_connections1 + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("account_connections1")] + public System.Collections.Generic.IEnumerable account_connections1 + { + get + { + return this.GetRelatedEntities("account_connections1", null); + } + set + { + this.OnPropertyChanging("account_connections1"); + this.SetRelatedEntities("account_connections1", null, value); + this.OnPropertyChanged("account_connections1"); + } + } + + /// + /// 1:N account_connections2 + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("account_connections2")] + public System.Collections.Generic.IEnumerable account_connections2 + { + get + { + return this.GetRelatedEntities("account_connections2", null); + } + set + { + this.OnPropertyChanging("account_connections2"); + this.SetRelatedEntities("account_connections2", null, value); + this.OnPropertyChanged("account_connections2"); + } + } + + /// + /// 1:N account_customer_opportunity_roles + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("account_customer_opportunity_roles")] + public System.Collections.Generic.IEnumerable account_customer_opportunity_roles + { + get + { + return this.GetRelatedEntities("account_customer_opportunity_roles", null); + } + set + { + this.OnPropertyChanging("account_customer_opportunity_roles"); + this.SetRelatedEntities("account_customer_opportunity_roles", null, value); + this.OnPropertyChanged("account_customer_opportunity_roles"); + } + } + + /// + /// 1:N account_customer_relationship_customer + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("account_customer_relationship_customer")] + public System.Collections.Generic.IEnumerable account_customer_relationship_customer + { + get + { + return this.GetRelatedEntities("account_customer_relationship_customer", null); + } + set + { + this.OnPropertyChanging("account_customer_relationship_customer"); + this.SetRelatedEntities("account_customer_relationship_customer", null, value); + this.OnPropertyChanged("account_customer_relationship_customer"); + } + } + + /// + /// 1:N account_customer_relationship_partner + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("account_customer_relationship_partner")] + public System.Collections.Generic.IEnumerable account_customer_relationship_partner + { + get + { + return this.GetRelatedEntities("account_customer_relationship_partner", null); + } + set + { + this.OnPropertyChanging("account_customer_relationship_partner"); + this.SetRelatedEntities("account_customer_relationship_partner", null, value); + this.OnPropertyChanged("account_customer_relationship_partner"); + } + } + + /// + /// 1:N Account_CustomerAddress + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("Account_CustomerAddress")] + public System.Collections.Generic.IEnumerable Account_CustomerAddress + { + get + { + return this.GetRelatedEntities("Account_CustomerAddress", null); + } + set + { + this.OnPropertyChanging("Account_CustomerAddress"); + this.SetRelatedEntities("Account_CustomerAddress", null, value); + this.OnPropertyChanged("Account_CustomerAddress"); + } + } + + /// + /// 1:N Account_DuplicateBaseRecord + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("Account_DuplicateBaseRecord")] + public System.Collections.Generic.IEnumerable Account_DuplicateBaseRecord + { + get + { + return this.GetRelatedEntities("Account_DuplicateBaseRecord", null); + } + set + { + this.OnPropertyChanging("Account_DuplicateBaseRecord"); + this.SetRelatedEntities("Account_DuplicateBaseRecord", null, value); + this.OnPropertyChanged("Account_DuplicateBaseRecord"); + } + } + + /// + /// 1:N Account_DuplicateMatchingRecord + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("Account_DuplicateMatchingRecord")] + public System.Collections.Generic.IEnumerable Account_DuplicateMatchingRecord + { + get + { + return this.GetRelatedEntities("Account_DuplicateMatchingRecord", null); + } + set + { + this.OnPropertyChanging("Account_DuplicateMatchingRecord"); + this.SetRelatedEntities("Account_DuplicateMatchingRecord", null, value); + this.OnPropertyChanged("Account_DuplicateMatchingRecord"); + } + } + + /// + /// 1:N Account_Emails + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("Account_Emails")] + public System.Collections.Generic.IEnumerable Account_Emails + { + get + { + return this.GetRelatedEntities("Account_Emails", null); + } + set + { + this.OnPropertyChanging("Account_Emails"); + this.SetRelatedEntities("Account_Emails", null, value); + this.OnPropertyChanged("Account_Emails"); + } + } + + /// + /// 1:N Account_Faxes + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("Account_Faxes")] + public System.Collections.Generic.IEnumerable Account_Faxes + { + get + { + return this.GetRelatedEntities("Account_Faxes", null); + } + set + { + this.OnPropertyChanging("Account_Faxes"); + this.SetRelatedEntities("Account_Faxes", null, value); + this.OnPropertyChanged("Account_Faxes"); + } + } + + /// + /// 1:N Account_Letters + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("Account_Letters")] + public System.Collections.Generic.IEnumerable Account_Letters + { + get + { + return this.GetRelatedEntities("Account_Letters", null); + } + set + { + this.OnPropertyChanging("Account_Letters"); + this.SetRelatedEntities("Account_Letters", null, value); + this.OnPropertyChanged("Account_Letters"); + } + } + + /// + /// 1:N account_master_account + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("account_master_account", Microsoft.Xrm.Sdk.EntityRole.Referenced)] + public System.Collections.Generic.IEnumerable Referencedaccount_master_account + { + get + { + return this.GetRelatedEntities("account_master_account", Microsoft.Xrm.Sdk.EntityRole.Referenced); + } + set + { + this.OnPropertyChanging("Referencedaccount_master_account"); + this.SetRelatedEntities("account_master_account", Microsoft.Xrm.Sdk.EntityRole.Referenced, value); + this.OnPropertyChanged("Referencedaccount_master_account"); + } + } + + /// + /// 1:N account_parent_account + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("account_parent_account", Microsoft.Xrm.Sdk.EntityRole.Referenced)] + public System.Collections.Generic.IEnumerable Referencedaccount_parent_account + { + get + { + return this.GetRelatedEntities("account_parent_account", Microsoft.Xrm.Sdk.EntityRole.Referenced); + } + set + { + this.OnPropertyChanging("Referencedaccount_parent_account"); + this.SetRelatedEntities("account_parent_account", Microsoft.Xrm.Sdk.EntityRole.Referenced, value); + this.OnPropertyChanged("Referencedaccount_parent_account"); + } + } + + /// + /// 1:N Account_Phonecalls + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("Account_Phonecalls")] + public System.Collections.Generic.IEnumerable Account_Phonecalls + { + get + { + return this.GetRelatedEntities("Account_Phonecalls", null); + } + set + { + this.OnPropertyChanging("Account_Phonecalls"); + this.SetRelatedEntities("Account_Phonecalls", null, value); + this.OnPropertyChanged("Account_Phonecalls"); + } + } + + /// + /// 1:N account_PostFollows + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("account_PostFollows")] + public System.Collections.Generic.IEnumerable account_PostFollows + { + get + { + return this.GetRelatedEntities("account_PostFollows", null); + } + set + { + this.OnPropertyChanging("account_PostFollows"); + this.SetRelatedEntities("account_PostFollows", null, value); + this.OnPropertyChanged("account_PostFollows"); + } + } + + /// + /// 1:N account_principalobjectattributeaccess + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("account_principalobjectattributeaccess")] + public System.Collections.Generic.IEnumerable account_principalobjectattributeaccess + { + get + { + return this.GetRelatedEntities("account_principalobjectattributeaccess", null); + } + set + { + this.OnPropertyChanging("account_principalobjectattributeaccess"); + this.SetRelatedEntities("account_principalobjectattributeaccess", null, value); + this.OnPropertyChanged("account_principalobjectattributeaccess"); + } + } + + /// + /// 1:N Account_ProcessSessions + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("Account_ProcessSessions")] + public System.Collections.Generic.IEnumerable Account_ProcessSessions + { + get + { + return this.GetRelatedEntities("Account_ProcessSessions", null); + } + set + { + this.OnPropertyChanging("Account_ProcessSessions"); + this.SetRelatedEntities("Account_ProcessSessions", null, value); + this.OnPropertyChanged("Account_ProcessSessions"); + } + } + + /// + /// 1:N Account_RecurringAppointmentMasters + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("Account_RecurringAppointmentMasters")] + public System.Collections.Generic.IEnumerable Account_RecurringAppointmentMasters + { + get + { + return this.GetRelatedEntities("Account_RecurringAppointmentMasters", null); + } + set + { + this.OnPropertyChanging("Account_RecurringAppointmentMasters"); + this.SetRelatedEntities("Account_RecurringAppointmentMasters", null, value); + this.OnPropertyChanged("Account_RecurringAppointmentMasters"); + } + } + + /// + /// 1:N Account_ServiceAppointments + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("Account_ServiceAppointments")] + public System.Collections.Generic.IEnumerable Account_ServiceAppointments + { + get + { + return this.GetRelatedEntities("Account_ServiceAppointments", null); + } + set + { + this.OnPropertyChanging("Account_ServiceAppointments"); + this.SetRelatedEntities("Account_ServiceAppointments", null, value); + this.OnPropertyChanged("Account_ServiceAppointments"); + } + } + + /// + /// 1:N Account_SharepointDocumentLocation + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("Account_SharepointDocumentLocation")] + public System.Collections.Generic.IEnumerable Account_SharepointDocumentLocation + { + get + { + return this.GetRelatedEntities("Account_SharepointDocumentLocation", null); + } + set + { + this.OnPropertyChanging("Account_SharepointDocumentLocation"); + this.SetRelatedEntities("Account_SharepointDocumentLocation", null, value); + this.OnPropertyChanged("Account_SharepointDocumentLocation"); + } + } + + /// + /// 1:N Account_Tasks + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("Account_Tasks")] + public System.Collections.Generic.IEnumerable Account_Tasks + { + get + { + return this.GetRelatedEntities("Account_Tasks", null); + } + set + { + this.OnPropertyChanging("Account_Tasks"); + this.SetRelatedEntities("Account_Tasks", null, value); + this.OnPropertyChanged("Account_Tasks"); + } + } + + /// + /// 1:N contact_customer_accounts + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("contact_customer_accounts")] + public System.Collections.Generic.IEnumerable contact_customer_accounts + { + get + { + return this.GetRelatedEntities("contact_customer_accounts", null); + } + set + { + this.OnPropertyChanging("contact_customer_accounts"); + this.SetRelatedEntities("contact_customer_accounts", null, value); + this.OnPropertyChanged("contact_customer_accounts"); + } + } + + /// + /// 1:N contract_billingcustomer_accounts + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("contract_billingcustomer_accounts")] + public System.Collections.Generic.IEnumerable contract_billingcustomer_accounts + { + get + { + return this.GetRelatedEntities("contract_billingcustomer_accounts", null); + } + set + { + this.OnPropertyChanging("contract_billingcustomer_accounts"); + this.SetRelatedEntities("contract_billingcustomer_accounts", null, value); + this.OnPropertyChanged("contract_billingcustomer_accounts"); + } + } + + /// + /// 1:N contract_customer_accounts + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("contract_customer_accounts")] + public System.Collections.Generic.IEnumerable contract_customer_accounts + { + get + { + return this.GetRelatedEntities("contract_customer_accounts", null); + } + set + { + this.OnPropertyChanging("contract_customer_accounts"); + this.SetRelatedEntities("contract_customer_accounts", null, value); + this.OnPropertyChanged("contract_customer_accounts"); + } + } + + /// + /// 1:N contractlineitem_customer_accounts + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("contractlineitem_customer_accounts")] + public System.Collections.Generic.IEnumerable contractlineitem_customer_accounts + { + get + { + return this.GetRelatedEntities("contractlineitem_customer_accounts", null); + } + set + { + this.OnPropertyChanging("contractlineitem_customer_accounts"); + this.SetRelatedEntities("contractlineitem_customer_accounts", null, value); + this.OnPropertyChanged("contractlineitem_customer_accounts"); + } + } + + /// + /// 1:N CreatedAccount_BulkOperationLogs2 + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("CreatedAccount_BulkOperationLogs2")] + public System.Collections.Generic.IEnumerable CreatedAccount_BulkOperationLogs2 + { + get + { + return this.GetRelatedEntities("CreatedAccount_BulkOperationLogs2", null); + } + set + { + this.OnPropertyChanging("CreatedAccount_BulkOperationLogs2"); + this.SetRelatedEntities("CreatedAccount_BulkOperationLogs2", null, value); + this.OnPropertyChanged("CreatedAccount_BulkOperationLogs2"); + } + } + + /// + /// 1:N incident_customer_accounts + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("incident_customer_accounts")] + public System.Collections.Generic.IEnumerable incident_customer_accounts + { + get + { + return this.GetRelatedEntities("incident_customer_accounts", null); + } + set + { + this.OnPropertyChanging("incident_customer_accounts"); + this.SetRelatedEntities("incident_customer_accounts", null, value); + this.OnPropertyChanged("incident_customer_accounts"); + } + } + + /// + /// 1:N invoice_customer_accounts + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("invoice_customer_accounts")] + public System.Collections.Generic.IEnumerable invoice_customer_accounts + { + get + { + return this.GetRelatedEntities("invoice_customer_accounts", null); + } + set + { + this.OnPropertyChanging("invoice_customer_accounts"); + this.SetRelatedEntities("invoice_customer_accounts", null, value); + this.OnPropertyChanged("invoice_customer_accounts"); + } + } + + /// + /// 1:N lead_customer_accounts + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("lead_customer_accounts")] + public System.Collections.Generic.IEnumerable lead_customer_accounts + { + get + { + return this.GetRelatedEntities("lead_customer_accounts", null); + } + set + { + this.OnPropertyChanging("lead_customer_accounts"); + this.SetRelatedEntities("lead_customer_accounts", null, value); + this.OnPropertyChanged("lead_customer_accounts"); + } + } + + /// + /// 1:N lead_parent_account + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("lead_parent_account")] + public System.Collections.Generic.IEnumerable lead_parent_account + { + get + { + return this.GetRelatedEntities("lead_parent_account", null); + } + set + { + this.OnPropertyChanging("lead_parent_account"); + this.SetRelatedEntities("lead_parent_account", null, value); + this.OnPropertyChanged("lead_parent_account"); + } + } + + /// + /// 1:N opportunity_customer_accounts + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("opportunity_customer_accounts")] + public System.Collections.Generic.IEnumerable opportunity_customer_accounts + { + get + { + return this.GetRelatedEntities("opportunity_customer_accounts", null); + } + set + { + this.OnPropertyChanging("opportunity_customer_accounts"); + this.SetRelatedEntities("opportunity_customer_accounts", null, value); + this.OnPropertyChanged("opportunity_customer_accounts"); + } + } + + /// + /// 1:N opportunity_parent_account + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("opportunity_parent_account")] + public System.Collections.Generic.IEnumerable opportunity_parent_account + { + get + { + return this.GetRelatedEntities("opportunity_parent_account", null); + } + set + { + this.OnPropertyChanging("opportunity_parent_account"); + this.SetRelatedEntities("opportunity_parent_account", null, value); + this.OnPropertyChanged("opportunity_parent_account"); + } + } + + /// + /// 1:N order_customer_accounts + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("order_customer_accounts")] + public System.Collections.Generic.IEnumerable order_customer_accounts + { + get + { + return this.GetRelatedEntities("order_customer_accounts", null); + } + set + { + this.OnPropertyChanging("order_customer_accounts"); + this.SetRelatedEntities("order_customer_accounts", null, value); + this.OnPropertyChanged("order_customer_accounts"); + } + } + + /// + /// 1:N quote_customer_accounts + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("quote_customer_accounts")] + public System.Collections.Generic.IEnumerable quote_customer_accounts + { + get + { + return this.GetRelatedEntities("quote_customer_accounts", null); + } + set + { + this.OnPropertyChanging("quote_customer_accounts"); + this.SetRelatedEntities("quote_customer_accounts", null, value); + this.OnPropertyChanged("quote_customer_accounts"); + } + } + + /// + /// 1:N SourceAccount_BulkOperationLogs + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("SourceAccount_BulkOperationLogs")] + public System.Collections.Generic.IEnumerable SourceAccount_BulkOperationLogs + { + get + { + return this.GetRelatedEntities("SourceAccount_BulkOperationLogs", null); + } + set + { + this.OnPropertyChanging("SourceAccount_BulkOperationLogs"); + this.SetRelatedEntities("SourceAccount_BulkOperationLogs", null, value); + this.OnPropertyChanged("SourceAccount_BulkOperationLogs"); + } + } + + /// + /// 1:N userentityinstancedata_account + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("userentityinstancedata_account")] + public System.Collections.Generic.IEnumerable userentityinstancedata_account + { + get + { + return this.GetRelatedEntities("userentityinstancedata_account", null); + } + set + { + this.OnPropertyChanging("userentityinstancedata_account"); + this.SetRelatedEntities("userentityinstancedata_account", null, value); + this.OnPropertyChanged("userentityinstancedata_account"); + } + } + + /// + /// N:N accountleads_association + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("accountleads_association")] + public System.Collections.Generic.IEnumerable accountleads_association + { + get + { + return this.GetRelatedEntities("accountleads_association", null); + } + set + { + this.OnPropertyChanging("accountleads_association"); + this.SetRelatedEntities("accountleads_association", null, value); + this.OnPropertyChanged("accountleads_association"); + } + } + + /// + /// N:N listaccount_association + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("listaccount_association")] + public System.Collections.Generic.IEnumerable listaccount_association + { + get + { + return this.GetRelatedEntities("listaccount_association", null); + } + set + { + this.OnPropertyChanging("listaccount_association"); + this.SetRelatedEntities("listaccount_association", null, value); + this.OnPropertyChanged("listaccount_association"); + } + } + + /// + /// N:1 account_master_account + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("masterid")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("account_master_account", Microsoft.Xrm.Sdk.EntityRole.Referencing)] + public Account Referencingaccount_master_account + { + get + { + return this.GetRelatedEntity("account_master_account", Microsoft.Xrm.Sdk.EntityRole.Referencing); + } + } + + /// + /// N:1 account_originating_lead + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("originatingleadid")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("account_originating_lead")] + public Lead account_originating_lead + { + get + { + return this.GetRelatedEntity("account_originating_lead", null); + } + set + { + this.OnPropertyChanging("account_originating_lead"); + this.SetRelatedEntity("account_originating_lead", null, value); + this.OnPropertyChanged("account_originating_lead"); + } + } + + /// + /// N:1 account_parent_account + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("parentaccountid")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("account_parent_account", Microsoft.Xrm.Sdk.EntityRole.Referencing)] + public Account Referencingaccount_parent_account + { + get + { + return this.GetRelatedEntity("account_parent_account", Microsoft.Xrm.Sdk.EntityRole.Referencing); + } + set + { + this.OnPropertyChanging("Referencingaccount_parent_account"); + this.SetRelatedEntity("account_parent_account", Microsoft.Xrm.Sdk.EntityRole.Referencing, value); + this.OnPropertyChanged("Referencingaccount_parent_account"); + } + } + + /// + /// N:1 account_primary_contact + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("primarycontactid")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("account_primary_contact")] + public Contact account_primary_contact + { + get + { + return this.GetRelatedEntity("account_primary_contact", null); + } + set + { + this.OnPropertyChanging("account_primary_contact"); + this.SetRelatedEntity("account_primary_contact", null, value); + this.OnPropertyChanged("account_primary_contact"); + } + } + + /// + /// N:1 business_unit_accounts + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("owningbusinessunit")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("business_unit_accounts")] + public BusinessUnit business_unit_accounts + { + get + { + return this.GetRelatedEntity("business_unit_accounts", null); + } + } + + /// + /// N:1 equipment_accounts + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("preferredequipmentid")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("equipment_accounts")] + public Equipment equipment_accounts + { + get + { + return this.GetRelatedEntity("equipment_accounts", null); + } + set + { + this.OnPropertyChanging("equipment_accounts"); + this.SetRelatedEntity("equipment_accounts", null, value); + this.OnPropertyChanged("equipment_accounts"); + } + } + + /// + /// N:1 lk_accountbase_createdby + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("createdby")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("lk_accountbase_createdby")] + public SystemUser lk_accountbase_createdby + { + get + { + return this.GetRelatedEntity("lk_accountbase_createdby", null); + } + } + + /// + /// N:1 lk_accountbase_createdonbehalfby + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("createdonbehalfby")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("lk_accountbase_createdonbehalfby")] + public SystemUser lk_accountbase_createdonbehalfby + { + get + { + return this.GetRelatedEntity("lk_accountbase_createdonbehalfby", null); + } + } + + /// + /// N:1 lk_accountbase_modifiedby + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("modifiedby")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("lk_accountbase_modifiedby")] + public SystemUser lk_accountbase_modifiedby + { + get + { + return this.GetRelatedEntity("lk_accountbase_modifiedby", null); + } + } + + /// + /// N:1 lk_accountbase_modifiedonbehalfby + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("modifiedonbehalfby")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("lk_accountbase_modifiedonbehalfby")] + public SystemUser lk_accountbase_modifiedonbehalfby + { + get + { + return this.GetRelatedEntity("lk_accountbase_modifiedonbehalfby", null); + } + } + + /// + /// N:1 price_level_accounts + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("defaultpricelevelid")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("price_level_accounts")] + public PriceLevel price_level_accounts + { + get + { + return this.GetRelatedEntity("price_level_accounts", null); + } + set + { + this.OnPropertyChanging("price_level_accounts"); + this.SetRelatedEntity("price_level_accounts", null, value); + this.OnPropertyChanged("price_level_accounts"); + } + } + + /// + /// N:1 processstage_account + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("stageid")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("processstage_account")] + public ProcessStage processstage_account + { + get + { + return this.GetRelatedEntity("processstage_account", null); + } + set + { + this.OnPropertyChanging("processstage_account"); + this.SetRelatedEntity("processstage_account", null, value); + this.OnPropertyChanged("processstage_account"); + } + } + + /// + /// N:1 service_accounts + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("preferredserviceid")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("service_accounts")] + public Service service_accounts + { + get + { + return this.GetRelatedEntity("service_accounts", null); + } + set + { + this.OnPropertyChanging("service_accounts"); + this.SetRelatedEntity("service_accounts", null, value); + this.OnPropertyChanged("service_accounts"); + } + } + + /// + /// N:1 system_user_accounts + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("preferredsystemuserid")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("system_user_accounts")] + public SystemUser system_user_accounts + { + get + { + return this.GetRelatedEntity("system_user_accounts", null); + } + set + { + this.OnPropertyChanging("system_user_accounts"); + this.SetRelatedEntity("system_user_accounts", null, value); + this.OnPropertyChanged("system_user_accounts"); + } + } + + /// + /// N:1 team_accounts + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("owningteam")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("team_accounts")] + public Team team_accounts + { + get + { + return this.GetRelatedEntity("team_accounts", null); + } + } + + /// + /// N:1 territory_accounts + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("territoryid")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("territory_accounts")] + public Territory territory_accounts + { + get + { + return this.GetRelatedEntity("territory_accounts", null); + } + set + { + this.OnPropertyChanging("territory_accounts"); + this.SetRelatedEntity("territory_accounts", null, value); + this.OnPropertyChanged("territory_accounts"); + } + } + + /// + /// N:1 transactioncurrency_account + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("transactioncurrencyid")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("transactioncurrency_account")] + public TransactionCurrency transactioncurrency_account + { + get + { + return this.GetRelatedEntity("transactioncurrency_account", null); + } + set + { + this.OnPropertyChanging("transactioncurrency_account"); + this.SetRelatedEntity("transactioncurrency_account", null, value); + this.OnPropertyChanged("transactioncurrency_account"); + } + } + + /// + /// N:1 user_accounts + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("owninguser")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("user_accounts")] + public SystemUser user_accounts + { + get + { + return this.GetRelatedEntity("user_accounts", null); + } + } +} + +/// +/// +/// +[System.Runtime.Serialization.DataContractAttribute()] +[Microsoft.Xrm.Sdk.Client.EntityLogicalNameAttribute("accountleads")] +[System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "6.0.0001.0059")] +public partial class AccountLeads : Microsoft.Xrm.Sdk.Entity, System.ComponentModel.INotifyPropertyChanging, System.ComponentModel.INotifyPropertyChanged +{ + + /// + /// Default Constructor. + /// + public AccountLeads() : + base(EntityLogicalName) + { + } + + public const string EntityLogicalName = "accountleads"; + + public const int EntityTypeCode = 16; + + public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; + + public event System.ComponentModel.PropertyChangingEventHandler PropertyChanging; + + private void OnPropertyChanged(string propertyName) + { + if ((this.PropertyChanged != null)) + { + this.PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName)); + } + } + + private void OnPropertyChanging(string propertyName) + { + if ((this.PropertyChanging != null)) + { + this.PropertyChanging(this, new System.ComponentModel.PropertyChangingEventArgs(propertyName)); + } + } + + /// + /// + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("accountid")] + public System.Nullable AccountId + { + get + { + return this.GetAttributeValue>("accountid"); + } + } + + /// + /// Unique identifier of the lead for the account. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("accountleadid")] + public System.Nullable AccountLeadId + { + get + { + return this.GetAttributeValue>("accountleadid"); + } + set + { + this.OnPropertyChanging("AccountLeadId"); + this.SetAttributeValue("accountleadid", value); + if (value.HasValue) + { + base.Id = value.Value; + } + else + { + base.Id = System.Guid.Empty; + } + this.OnPropertyChanged("AccountLeadId"); + } + } + + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("accountleadid")] + public override System.Guid Id + { + get + { + return base.Id; + } + set + { + this.AccountLeadId = value; + } + } + + /// + /// + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("leadid")] + public System.Nullable LeadId + { + get + { + return this.GetAttributeValue>("leadid"); + } + } + + /// + /// + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("versionnumber")] + public System.Nullable VersionNumber + { + get + { + return this.GetAttributeValue>("versionnumber"); + } + } + + /// + /// N:N accountleads_association + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("accountleads_association")] + public System.Collections.Generic.IEnumerable accountleads_association + { + get + { + return this.GetRelatedEntities("accountleads_association", null); + } + set + { + this.OnPropertyChanging("accountleads_association"); + this.SetRelatedEntities("accountleads_association", null, value); + this.OnPropertyChanged("accountleads_association"); + } + } +} + +/// +/// MIME attachment for an email activity. +/// +[System.Runtime.Serialization.DataContractAttribute()] +[Microsoft.Xrm.Sdk.Client.EntityLogicalNameAttribute("activitymimeattachment")] +[System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "6.0.0001.0059")] +public partial class ActivityMimeAttachment : Microsoft.Xrm.Sdk.Entity, System.ComponentModel.INotifyPropertyChanging, System.ComponentModel.INotifyPropertyChanged +{ + + /// + /// Default Constructor. + /// + public ActivityMimeAttachment() : + base(EntityLogicalName) + { + } + + public const string EntityLogicalName = "activitymimeattachment"; + + public const int EntityTypeCode = 1001; + + public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; + + public event System.ComponentModel.PropertyChangingEventHandler PropertyChanging; + + private void OnPropertyChanged(string propertyName) + { + if ((this.PropertyChanged != null)) + { + this.PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName)); + } + } + + private void OnPropertyChanging(string propertyName) + { + if ((this.PropertyChanging != null)) + { + this.PropertyChanging(this, new System.ComponentModel.PropertyChangingEventArgs(propertyName)); + } + } + + /// + /// Unique identifier of the activity with which the email attachment is associated. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("activityid")] + [System.ObsoleteAttribute()] + public Microsoft.Xrm.Sdk.EntityReference ActivityId + { + get + { + return this.GetAttributeValue("activityid"); + } + set + { + this.OnPropertyChanging("ActivityId"); + this.SetAttributeValue("activityid", value); + this.OnPropertyChanged("ActivityId"); + } + } + + /// + /// Unique identifier of the email attachment. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("activitymimeattachmentid")] + public System.Nullable ActivityMimeAttachmentId + { + get + { + return this.GetAttributeValue>("activitymimeattachmentid"); + } + set + { + this.OnPropertyChanging("ActivityMimeAttachmentId"); + this.SetAttributeValue("activitymimeattachmentid", value); + if (value.HasValue) + { + base.Id = value.Value; + } + else + { + base.Id = System.Guid.Empty; + } + this.OnPropertyChanged("ActivityMimeAttachmentId"); + } + } + + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("activitymimeattachmentid")] + public override System.Guid Id + { + get + { + return base.Id; + } + set + { + this.ActivityMimeAttachmentId = value; + } + } + + /// + /// For internal use only. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("activitymimeattachmentidunique")] + public System.Nullable ActivityMimeAttachmentIdUnique + { + get + { + return this.GetAttributeValue>("activitymimeattachmentidunique"); + } + set + { + this.OnPropertyChanging("ActivityMimeAttachmentIdUnique"); + this.SetAttributeValue("activitymimeattachmentidunique", value); + this.OnPropertyChanged("ActivityMimeAttachmentIdUnique"); + } + } + + /// + /// Unique identifier of the attachment with which this activitymimeattachment is associated. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("attachmentid")] + public Microsoft.Xrm.Sdk.EntityReference AttachmentId + { + get + { + return this.GetAttributeValue("attachmentid"); + } + set + { + this.OnPropertyChanging("AttachmentId"); + this.SetAttributeValue("attachmentid", value); + this.OnPropertyChanged("AttachmentId"); + } + } + + /// + /// Number of the email attachment. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("attachmentnumber")] + public System.Nullable AttachmentNumber + { + get + { + return this.GetAttributeValue>("attachmentnumber"); + } + set + { + this.OnPropertyChanging("AttachmentNumber"); + this.SetAttributeValue("attachmentnumber", value); + this.OnPropertyChanged("AttachmentNumber"); + } + } + + /// + /// Contents of the email attachment. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("body")] + public string Body + { + get + { + return this.GetAttributeValue("body"); + } + set + { + this.OnPropertyChanging("Body"); + this.SetAttributeValue("body", value); + this.OnPropertyChanged("Body"); + } + } + + /// + /// For internal use only. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("componentstate")] + public Microsoft.Xrm.Sdk.OptionSetValue ComponentState + { + get + { + return this.GetAttributeValue("componentstate"); + } + } + + /// + /// File name of the attachment. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("filename")] + public string FileName + { + get + { + return this.GetAttributeValue("filename"); + } + set + { + this.OnPropertyChanging("FileName"); + this.SetAttributeValue("filename", value); + this.OnPropertyChanged("FileName"); + } + } + + /// + /// File size of the email attachment. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("filesize")] + public System.Nullable FileSize + { + get + { + return this.GetAttributeValue>("filesize"); + } + } + + /// + /// Indicates whether the solution component is part of a managed solution. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("ismanaged")] + public System.Nullable IsManaged + { + get + { + return this.GetAttributeValue>("ismanaged"); + } + } + + /// + /// MIME type of the email attachment. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("mimetype")] + public string MimeType + { + get + { + return this.GetAttributeValue("mimetype"); + } + set + { + this.OnPropertyChanging("MimeType"); + this.SetAttributeValue("mimetype", value); + this.OnPropertyChanged("MimeType"); + } + } + + /// + /// Unique identifier of the record with which the attachment is associated + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("objectid")] + public Microsoft.Xrm.Sdk.EntityReference ObjectId + { + get + { + return this.GetAttributeValue("objectid"); + } + set + { + this.OnPropertyChanging("ObjectId"); + this.SetAttributeValue("objectid", value); + this.OnPropertyChanged("ObjectId"); + } + } + + /// + /// Object Type Code of the entity that is associated with the attachment. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("objecttypecode")] + public string ObjectTypeCode + { + get + { + return this.GetAttributeValue("objecttypecode"); + } + set + { + this.OnPropertyChanging("ObjectTypeCode"); + this.SetAttributeValue("objecttypecode", value); + this.OnPropertyChanged("ObjectTypeCode"); + } + } + + /// + /// For internal use only. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("overwritetime")] + public System.Nullable OverwriteTime + { + get + { + return this.GetAttributeValue>("overwritetime"); + } + } + + /// + /// Unique identifier of the user or team who owns the activity_mime_attachment. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("ownerid")] + public Microsoft.Xrm.Sdk.EntityReference OwnerId + { + get + { + return this.GetAttributeValue("ownerid"); + } + } + + /// + /// Unique identifier of the business unit that owns the activity mime attachment. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("owningbusinessunit")] + public Microsoft.Xrm.Sdk.EntityReference OwningBusinessUnit + { + get + { + return this.GetAttributeValue("owningbusinessunit"); + } + } + + /// + /// Unique identifier of the user who owns the activity mime attachment. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("owninguser")] + public Microsoft.Xrm.Sdk.EntityReference OwningUser + { + get + { + return this.GetAttributeValue("owninguser"); + } + } + + /// + /// Unique identifier of the associated solution. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("solutionid")] + public System.Nullable SolutionId + { + get + { + return this.GetAttributeValue>("solutionid"); + } + } + + /// + /// Descriptive subject for the email attachment. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("subject")] + public string Subject + { + get + { + return this.GetAttributeValue("subject"); + } + set + { + this.OnPropertyChanging("Subject"); + this.SetAttributeValue("subject", value); + this.OnPropertyChanged("Subject"); + } + } + + /// + /// Version number of the activity mime attachment. + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("versionnumber")] + public System.Nullable VersionNumber + { + get + { + return this.GetAttributeValue>("versionnumber"); + } + } + + /// + /// 1:N ActivityMimeAttachment_AsyncOperations + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("ActivityMimeAttachment_AsyncOperations")] + public System.Collections.Generic.IEnumerable ActivityMimeAttachment_AsyncOperations + { + get + { + return this.GetRelatedEntities("ActivityMimeAttachment_AsyncOperations", null); + } + set + { + this.OnPropertyChanging("ActivityMimeAttachment_AsyncOperations"); + this.SetRelatedEntities("ActivityMimeAttachment_AsyncOperations", null, value); + this.OnPropertyChanged("ActivityMimeAttachment_AsyncOperations"); + } + } + + /// + /// 1:N ActivityMimeAttachment_BulkDeleteFailures + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("ActivityMimeAttachment_BulkDeleteFailures")] + public System.Collections.Generic.IEnumerable ActivityMimeAttachment_BulkDeleteFailures + { + get + { + return this.GetRelatedEntities("ActivityMimeAttachment_BulkDeleteFailures", null); + } + set + { + this.OnPropertyChanging("ActivityMimeAttachment_BulkDeleteFailures"); + this.SetRelatedEntities("ActivityMimeAttachment_BulkDeleteFailures", null, value); + this.OnPropertyChanged("ActivityMimeAttachment_BulkDeleteFailures"); + } + } + + /// + /// 1:N userentityinstancedata_activitymimeattachment + /// + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("userentityinstancedata_activitymimeattachment")] + public System.Collections.Generic.IEnumerable userentityinstancedata_activitymimeattachment + { + get + { + return this.GetRelatedEntities("userentityinstancedata_activitymimeattachment", null); + } + set + { + this.OnPropertyChanging("userentityinstancedata_activitymimeattachment"); + this.SetRelatedEntities("userentityinstancedata_activitymimeattachment", null, value); + this.OnPropertyChanged("userentityinstancedata_activitymimeattachment"); + } + } + + /// + /// N:1 activity_pointer_activity_mime_attachment + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("objectid")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("activity_pointer_activity_mime_attachment")] + public ActivityPointer activity_pointer_activity_mime_attachment + { + get + { + return this.GetRelatedEntity("activity_pointer_activity_mime_attachment", null); + } + set + { + this.OnPropertyChanging("activity_pointer_activity_mime_attachment"); + this.SetRelatedEntity("activity_pointer_activity_mime_attachment", null, value); + this.OnPropertyChanged("activity_pointer_activity_mime_attachment"); + } + } + + /// + /// N:1 email_activity_mime_attachment + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("objectid")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("email_activity_mime_attachment")] + public Email email_activity_mime_attachment + { + get + { + return this.GetRelatedEntity("email_activity_mime_attachment", null); + } + set + { + this.OnPropertyChanging("email_activity_mime_attachment"); + this.SetRelatedEntity("email_activity_mime_attachment", null, value); + this.OnPropertyChanged("email_activity_mime_attachment"); + } + } + + /// + /// N:1 template_activity_mime_attachments + /// + [Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("objectid")] + [Microsoft.Xrm.Sdk.RelationshipSchemaNameAttribute("template_activity_mime_attachments")] + public Template template_activity_mime_attachments + { + get + { + return this.GetRelatedEntity

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 @=$F~=~w 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 literal 0 HcmV?d00001 diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/HostedSolution/CRMLycenseTypes.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/HostedSolution/CRMLycenseTypes.cs new file mode 100644 index 00000000..a38a0c7c --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/HostedSolution/CRMLycenseTypes.cs @@ -0,0 +1,50 @@ +// 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. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using WebsitePanel.EnterpriseServer; + +namespace WebsitePanel.EnterpriseServer +{ + public class CRMUserLycenseTypes + { + // CRM 2011 + public const int FULL = 0; + public const int LIMITED = 2; + public const int ESS = 22; + + // CRM 2013 + public const int PROFESSIONAL = 0; + public const int BASIC = 2; + public const int ESSENTIAL = 5; + + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs index 35dc110f..03374d8e 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Packages/Quotas.cs @@ -163,6 +163,14 @@ order by rg.groupOrder public const string CRM_ESSUSERS = "HostedCRM.ESSUsers"; public const string CRM_MAXDATABASESIZE = "HostedCRM.MaxDatabaseSize"; + public const string CRM2013_ORGANIZATION = "HostedCRM2013.Organization"; + public const string CRM2013_MAXDATABASESIZE = "HostedCRM2013.MaxDatabaseSize"; + + public const string CRM2013_ESSENTIALUSERS = "HostedCRM2013.EssentialUsers"; + public const string CRM2013_BASICUSERS = "HostedCRM2013.BasicUsers"; + public const string CRM2013_PROFESSIONALUSERS = "HostedCRM2013.ProfessionalUsers"; + + public const string VPS_SERVERS_NUMBER = "VPS.ServersNumber"; // Number of VPS public const string VPS_MANAGING_ALLOWED = "VPS.ManagingAllowed"; // Allow user to create VPS public const string VPS_CPU_NUMBER = "VPS.CpuNumber"; // Number of CPU cores diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Servers/ResourceGroups.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Servers/ResourceGroups.cs index 43fb177f..da82621d 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Servers/ResourceGroups.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Servers/ResourceGroups.cs @@ -47,6 +47,7 @@ namespace WebsitePanel.EnterpriseServer public const string Exchange = "Exchange"; public const string HostedOrganizations = "Hosted Organizations"; public const string HostedCRM = "Hosted CRM"; + public const string HostedCRM2013 = "Hosted CRM2013"; public const string VPS = "VPS"; public const string BlackBerry = "BlackBerry"; public const string OCS = "OCS"; diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/WebsitePanel.EnterpriseServer.Base.csproj b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/WebsitePanel.EnterpriseServer.Base.csproj index 082f5542..90172b0b 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/WebsitePanel.EnterpriseServer.Base.csproj +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/WebsitePanel.EnterpriseServer.Base.csproj @@ -117,6 +117,7 @@ + diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/CRMProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/CRMProxy.cs index e77c153c..1bb230d9 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/CRMProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/CRMProxy.cs @@ -26,23 +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.5466 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -// -// This source code was auto-generated by wsdl, Version=2.0.50727.42. -// using WebsitePanel.Providers; using WebsitePanel.Providers.Common; using WebsitePanel.Providers.HostedSolution; using WebsitePanel.Providers.ResultObjects; + // // This source code was auto-generated by wsdl, Version=2.0.50727.42. // @@ -67,8 +55,12 @@ namespace WebsitePanel.EnterpriseServer { private System.Threading.SendOrPostCallback GetCollationOperationCompleted; + private System.Threading.SendOrPostCallback GetCollationByServiceIdOperationCompleted; + private System.Threading.SendOrPostCallback GetCurrencyOperationCompleted; + private System.Threading.SendOrPostCallback GetCurrencyByServiceIdOperationCompleted; + private System.Threading.SendOrPostCallback DeleteCRMOrganizationOperationCompleted; private System.Threading.SendOrPostCallback GetCRMUsersPagedOperationCompleted; @@ -95,6 +87,10 @@ namespace WebsitePanel.EnterpriseServer { private System.Threading.SendOrPostCallback GetMaxDBSizeOperationCompleted; + private System.Threading.SendOrPostCallback GetInstalledLanguagePacksOperationCompleted; + + private System.Threading.SendOrPostCallback GetInstalledLanguagePacksByServiceIdOperationCompleted; + /// public esCRM() { this.Url = "http://localhost:9002/esCRM.asmx"; @@ -106,9 +102,15 @@ namespace WebsitePanel.EnterpriseServer { /// public event GetCollationCompletedEventHandler GetCollationCompleted; + /// + public event GetCollationByServiceIdCompletedEventHandler GetCollationByServiceIdCompleted; + /// public event GetCurrencyCompletedEventHandler GetCurrencyCompleted; + /// + public event GetCurrencyByServiceIdCompletedEventHandler GetCurrencyByServiceIdCompleted; + /// public event DeleteCRMOrganizationCompletedEventHandler DeleteCRMOrganizationCompleted; @@ -148,9 +150,15 @@ namespace WebsitePanel.EnterpriseServer { /// public event GetMaxDBSizeCompletedEventHandler GetMaxDBSizeCompleted; + /// + public event GetInstalledLanguagePacksCompletedEventHandler GetInstalledLanguagePacksCompleted; + + /// + public event GetInstalledLanguagePacksByServiceIdCompletedEventHandler GetInstalledLanguagePacksByServiceIdCompleted; + /// [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/CreateOrganization", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public OrganizationResult CreateOrganization(int organizationId, string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, string regionName, int userId, string collation) { + public OrganizationResult CreateOrganization(int organizationId, string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, string regionName, int userId, string collation, int baseLanguageCode) { object[] results = this.Invoke("CreateOrganization", new object[] { organizationId, baseCurrencyCode, @@ -158,12 +166,13 @@ namespace WebsitePanel.EnterpriseServer { baseCurrencySymbol, regionName, userId, - collation}); + collation, + baseLanguageCode}); return ((OrganizationResult)(results[0])); } /// - public System.IAsyncResult BeginCreateOrganization(int organizationId, string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, string regionName, int userId, string collation, System.AsyncCallback callback, object asyncState) { + public System.IAsyncResult BeginCreateOrganization(int organizationId, string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, string regionName, int userId, string collation, int baseLanguageCode, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("CreateOrganization", new object[] { organizationId, baseCurrencyCode, @@ -171,7 +180,8 @@ namespace WebsitePanel.EnterpriseServer { baseCurrencySymbol, regionName, userId, - collation}, callback, asyncState); + collation, + baseLanguageCode}, callback, asyncState); } /// @@ -181,12 +191,12 @@ namespace WebsitePanel.EnterpriseServer { } /// - public void CreateOrganizationAsync(int organizationId, string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, string regionName, int userId, string collation) { - this.CreateOrganizationAsync(organizationId, baseCurrencyCode, baseCurrencyName, baseCurrencySymbol, regionName, userId, collation, null); + public void CreateOrganizationAsync(int organizationId, string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, string regionName, int userId, string collation, int baseLanguageCode) { + this.CreateOrganizationAsync(organizationId, baseCurrencyCode, baseCurrencyName, baseCurrencySymbol, regionName, userId, collation, baseLanguageCode, null); } /// - public void CreateOrganizationAsync(int organizationId, string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, string regionName, int userId, string collation, object userState) { + public void CreateOrganizationAsync(int organizationId, string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, string regionName, int userId, string collation, int baseLanguageCode, object userState) { if ((this.CreateOrganizationOperationCompleted == null)) { this.CreateOrganizationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateOrganizationOperationCompleted); } @@ -197,7 +207,8 @@ namespace WebsitePanel.EnterpriseServer { baseCurrencySymbol, regionName, userId, - collation}, this.CreateOrganizationOperationCompleted, userState); + collation, + baseLanguageCode}, this.CreateOrganizationOperationCompleted, userState); } private void OnCreateOrganizationOperationCompleted(object arg) { @@ -248,6 +259,47 @@ namespace WebsitePanel.EnterpriseServer { } } + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetCollationByServiceId", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public StringArrayResultObject GetCollationByServiceId(int serviceId) { + object[] results = this.Invoke("GetCollationByServiceId", new object[] { + serviceId}); + return ((StringArrayResultObject)(results[0])); + } + + /// + public System.IAsyncResult BeginGetCollationByServiceId(int serviceId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetCollationByServiceId", new object[] { + serviceId}, callback, asyncState); + } + + /// + public StringArrayResultObject EndGetCollationByServiceId(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((StringArrayResultObject)(results[0])); + } + + /// + public void GetCollationByServiceIdAsync(int serviceId) { + this.GetCollationByServiceIdAsync(serviceId, null); + } + + /// + public void GetCollationByServiceIdAsync(int serviceId, object userState) { + if ((this.GetCollationByServiceIdOperationCompleted == null)) { + this.GetCollationByServiceIdOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetCollationByServiceIdOperationCompleted); + } + this.InvokeAsync("GetCollationByServiceId", new object[] { + serviceId}, this.GetCollationByServiceIdOperationCompleted, userState); + } + + private void OnGetCollationByServiceIdOperationCompleted(object arg) { + if ((this.GetCollationByServiceIdCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetCollationByServiceIdCompleted(this, new GetCollationByServiceIdCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetCurrency", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] public CurrencyArrayResultObject GetCurrency(int packageId) { @@ -289,6 +341,47 @@ namespace WebsitePanel.EnterpriseServer { } } + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetCurrencyByServiceId", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public CurrencyArrayResultObject GetCurrencyByServiceId(int serviceId) { + object[] results = this.Invoke("GetCurrencyByServiceId", new object[] { + serviceId}); + return ((CurrencyArrayResultObject)(results[0])); + } + + /// + public System.IAsyncResult BeginGetCurrencyByServiceId(int serviceId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetCurrencyByServiceId", new object[] { + serviceId}, callback, asyncState); + } + + /// + public CurrencyArrayResultObject EndGetCurrencyByServiceId(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((CurrencyArrayResultObject)(results[0])); + } + + /// + public void GetCurrencyByServiceIdAsync(int serviceId) { + this.GetCurrencyByServiceIdAsync(serviceId, null); + } + + /// + public void GetCurrencyByServiceIdAsync(int serviceId, object userState) { + if ((this.GetCurrencyByServiceIdOperationCompleted == null)) { + this.GetCurrencyByServiceIdOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetCurrencyByServiceIdOperationCompleted); + } + this.InvokeAsync("GetCurrencyByServiceId", new object[] { + serviceId}, this.GetCurrencyByServiceIdOperationCompleted, userState); + } + + private void OnGetCurrencyByServiceIdOperationCompleted(object arg) { + if ((this.GetCurrencyByServiceIdCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetCurrencyByServiceIdCompleted(this, new GetCurrencyByServiceIdCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/DeleteCRMOrganization", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] public ResultObject DeleteCRMOrganization(int organizationId) { @@ -909,6 +1002,89 @@ namespace WebsitePanel.EnterpriseServer { } } + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetInstalledLanguagePacks", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public int[] GetInstalledLanguagePacks(int packageId) { + object[] results = this.Invoke("GetInstalledLanguagePacks", new object[] { + packageId}); + return ((int[])(results[0])); + } + + /// + public System.IAsyncResult BeginGetInstalledLanguagePacks(int packageId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetInstalledLanguagePacks", new object[] { + packageId}, callback, asyncState); + } + + /// + public int[] EndGetInstalledLanguagePacks(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((int[])(results[0])); + } + + /// + public void GetInstalledLanguagePacksAsync(int packageId) { + this.GetInstalledLanguagePacksAsync(packageId, null); + } + + /// + public void GetInstalledLanguagePacksAsync(int packageId, object userState) { + if ((this.GetInstalledLanguagePacksOperationCompleted == null)) { + this.GetInstalledLanguagePacksOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetInstalledLanguagePacksOperationCompleted); + } + this.InvokeAsync("GetInstalledLanguagePacks", new object[] { + packageId}, this.GetInstalledLanguagePacksOperationCompleted, userState); + } + + private void OnGetInstalledLanguagePacksOperationCompleted(object arg) { + if ((this.GetInstalledLanguagePacksCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetInstalledLanguagePacksCompleted(this, new GetInstalledLanguagePacksCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetInstalledLanguagePacksByServiceId" + + "", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public int[] GetInstalledLanguagePacksByServiceId(int serviceId) { + object[] results = this.Invoke("GetInstalledLanguagePacksByServiceId", new object[] { + serviceId}); + return ((int[])(results[0])); + } + + /// + public System.IAsyncResult BeginGetInstalledLanguagePacksByServiceId(int serviceId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetInstalledLanguagePacksByServiceId", new object[] { + serviceId}, callback, asyncState); + } + + /// + public int[] EndGetInstalledLanguagePacksByServiceId(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((int[])(results[0])); + } + + /// + public void GetInstalledLanguagePacksByServiceIdAsync(int serviceId) { + this.GetInstalledLanguagePacksByServiceIdAsync(serviceId, null); + } + + /// + public void GetInstalledLanguagePacksByServiceIdAsync(int serviceId, object userState) { + if ((this.GetInstalledLanguagePacksByServiceIdOperationCompleted == null)) { + this.GetInstalledLanguagePacksByServiceIdOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetInstalledLanguagePacksByServiceIdOperationCompleted); + } + this.InvokeAsync("GetInstalledLanguagePacksByServiceId", new object[] { + serviceId}, this.GetInstalledLanguagePacksByServiceIdOperationCompleted, userState); + } + + private void OnGetInstalledLanguagePacksByServiceIdOperationCompleted(object arg) { + if ((this.GetInstalledLanguagePacksByServiceIdCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetInstalledLanguagePacksByServiceIdCompleted(this, new GetInstalledLanguagePacksByServiceIdCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// public new void CancelAsync(object userState) { base.CancelAsync(userState); @@ -967,6 +1143,32 @@ namespace WebsitePanel.EnterpriseServer { } } + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetCollationByServiceIdCompletedEventHandler(object sender, GetCollationByServiceIdCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetCollationByServiceIdCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetCollationByServiceIdCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public StringArrayResultObject Result { + get { + this.RaiseExceptionIfNecessary(); + return ((StringArrayResultObject)(this.results[0])); + } + } + } + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetCurrencyCompletedEventHandler(object sender, GetCurrencyCompletedEventArgs e); @@ -993,6 +1195,32 @@ namespace WebsitePanel.EnterpriseServer { } } + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetCurrencyByServiceIdCompletedEventHandler(object sender, GetCurrencyByServiceIdCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetCurrencyByServiceIdCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetCurrencyByServiceIdCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public CurrencyArrayResultObject Result { + get { + this.RaiseExceptionIfNecessary(); + return ((CurrencyArrayResultObject)(this.results[0])); + } + } + } + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void DeleteCRMOrganizationCompletedEventHandler(object sender, DeleteCRMOrganizationCompletedEventArgs e); @@ -1330,4 +1558,56 @@ namespace WebsitePanel.EnterpriseServer { } } } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetInstalledLanguagePacksCompletedEventHandler(object sender, GetInstalledLanguagePacksCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetInstalledLanguagePacksCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetInstalledLanguagePacksCompletedEventArgs(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.42")] + public delegate void GetInstalledLanguagePacksByServiceIdCompletedEventHandler(object sender, GetInstalledLanguagePacksByServiceIdCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetInstalledLanguagePacksByServiceIdCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetInstalledLanguagePacksByServiceIdCompletedEventArgs(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])); + } + } + } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/CRMController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/CRMController.cs index 6ca779d3..9679be40 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/CRMController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/CRMController.cs @@ -49,8 +49,19 @@ namespace WebsitePanel.EnterpriseServer } private static int GetCRMServiceId(int packageId) - { - int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.HostedCRM); + { + int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.HostedCRM2013); + if (serviceId == 0) + serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.HostedCRM); + return serviceId; + } + + private static int GetCRMServiceId(int packageId, ResultObject res) + { + int serviceId = GetCRMServiceId(packageId); + if (serviceId == 0) + CompleteTask(res, CrmErrorCodes.CRM_IS_NOT_SELECTED_IN_HOSTING_PLAN, null, + "CRM is not selected in hosting plan."); return serviceId; } @@ -226,7 +237,7 @@ namespace WebsitePanel.EnterpriseServer return value; } - public static OrganizationResult CreateOrganization(int organizationId, string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, string regionName, int userId, string collation) + public static OrganizationResult CreateOrganization(int organizationId, string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, string regionName, int userId, string collation, int baseLanguageCode) { OrganizationResult res = StartTask("CRM", "CREATE_ORGANIZATION"); @@ -269,7 +280,12 @@ namespace WebsitePanel.EnterpriseServer string rootOU = GetProviderProperty(serviceid, "rootou"); PackageContext cntx = PackageController.GetPackageContext(org.PackageId); - long maxDBSize = cntx.Quotas[Quotas.CRM_MAXDATABASESIZE].QuotaAllocatedValue; + + string maxDBSizeQuotaName = ""; + if (cntx.Groups.ContainsKey(ResourceGroups.HostedCRM2013)) maxDBSizeQuotaName = Quotas.CRM2013_MAXDATABASESIZE; + else if (cntx.Groups.ContainsKey(ResourceGroups.HostedCRM)) maxDBSizeQuotaName = Quotas.CRM_MAXDATABASESIZE; + + long maxDBSize = cntx.Quotas[maxDBSizeQuotaName].QuotaAllocatedValue; if (maxDBSize != -1) maxDBSize = maxDBSize * 1024 * 1024; org.CrmAdministratorId = user.AccountId; @@ -277,10 +293,12 @@ namespace WebsitePanel.EnterpriseServer string.Join("|", new[] {baseCurrencyCode, baseCurrencyName, baseCurrencySymbol, regionName}); org.CrmCollation = collation; org.CrmOrgState = (int) CrmOrganizationState.Enabled; + org.CrmLanguadgeCode = baseLanguageCode.ToString(); org.CrmOrganizationId = orgId; OrganizationResult serverRes = crm.CreateOrganization(orgId, org.OrganizationId, org.Name, + baseLanguageCode, org.OrganizationId + "." + rootOU, baseCurrencyCode, baseCurrencyName, baseCurrencySymbol, user.SamAccountName, user.FirstName, user.LastName, user.PrimaryEmailAddress, @@ -343,19 +361,35 @@ namespace WebsitePanel.EnterpriseServer return res; } - public static StringArrayResultObject GetCollationNames(int packageId) + public static StringArrayResultObject GetCollationByServiceId(int serviceId) + { + StringArrayResultObject ret = StartTask("CRM", "GET_COLLATION_NAMES"); + ret.IsSuccess = true; + try + { + CRM crm = new CRM(); + ServiceProviderProxy.Init(crm, serviceId); + ret.Value = crm.GetSupportedCollationNames(); + } + catch (Exception ex) + { + CompleteTask(ret, CrmErrorCodes.CANNOT_GET_COLLATION_NAMES, ex); + return ret; + } + CompleteTask(); + return ret; + } + + public static StringArrayResultObject GetCollation(int packageId) { StringArrayResultObject ret = StartTask("CRM", "GET_COLLATION_NAMES"); ret.IsSuccess = true; try { - int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.HostedCRM); + int serviceId = GetCRMServiceId(packageId, ret); if (serviceId == 0) - { - CompleteTask(ret, CrmErrorCodes.CRM_IS_NOT_SELECTED_IN_HOSTING_PLAN); return ret; - } CRM crm = new CRM(); ServiceProviderProxy.Init(crm, serviceId); @@ -372,18 +406,35 @@ namespace WebsitePanel.EnterpriseServer return ret; } + public static CurrencyArrayResultObject GetCurrencyByServiceId(int serviceId) + { + CurrencyArrayResultObject ret = StartTask("CRM", "GET_CURRENCY"); + ret.IsSuccess = true; + try + { + CRM crm = new CRM(); + ServiceProviderProxy.Init(crm, serviceId); + ret.Value = crm.GetCurrencyList(); + } + catch (Exception ex) + { + CompleteTask(ret, CrmErrorCodes.CANNOT_GET_CURRENCY_LIST, ex); + return ret; + } + CompleteTask(); + + return ret; + } + public static CurrencyArrayResultObject GetCurrency(int packageId) { CurrencyArrayResultObject ret = StartTask("CRM", "GET_CURRENCY"); ret.IsSuccess = true; try { - int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.HostedCRM); + int serviceId = GetCRMServiceId(packageId, ret); if (serviceId == 0) - { - CompleteTask(ret, CrmErrorCodes.CRM_IS_NOT_SELECTED_IN_HOSTING_PLAN, null, "CRM is not selected in hosting plan."); return ret; - } CRM crm = new CRM(); ServiceProviderProxy.Init(crm, serviceId); @@ -550,9 +601,12 @@ namespace WebsitePanel.EnterpriseServer PackageContext cntx = PackageController.GetPackageContext(packageId); - return (cntx.Quotas[Quotas.CRM_ORGANIZATION] != null && !cntx.Quotas[Quotas.CRM_ORGANIZATION].QuotaExhausted); - - + + string quotaName = ""; + if (cntx.Groups.ContainsKey(ResourceGroups.HostedCRM2013)) quotaName = Quotas.CRM2013_ORGANIZATION; + else if (cntx.Groups.ContainsKey(ResourceGroups.HostedCRM)) quotaName = Quotas.CRM_ORGANIZATION; + + return (cntx.Quotas[quotaName] != null && !cntx.Quotas[quotaName].QuotaExhausted); } catch(Exception ex) @@ -676,19 +730,22 @@ namespace WebsitePanel.EnterpriseServer if (!quotaRes.Value) { - CompleteTask(ret, CrmErrorCodes.USER_QUOTA_HAS_BEEN_REACHED + CALType.ToString(), null, "CRM user quota has been reached."); + string errorCode = CrmErrorCodes.USER_QUOTA_HAS_BEEN_REACHED; + PackageContext cntx = PackageController.GetPackageContext(packageId); + if (cntx.Groups.ContainsKey(ResourceGroups.HostedCRM2013)) + errorCode += "2013_"; + errorCode += CALType.ToString(); + + CompleteTask(ret, errorCode , null, "CRM user quota has been reached."); return ret; } Guid crmId; try { - int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.HostedCRM); + int serviceId = GetCRMServiceId(packageId, ret); if (serviceId == 0) - { - CompleteTask(ret, CrmErrorCodes.CRM_IS_NOT_SELECTED_IN_HOSTING_PLAN, null, "CRM is not selected in hosting plan."); return ret; - } Organization org = OrganizationController.GetOrganization(itemId); @@ -735,12 +792,9 @@ namespace WebsitePanel.EnterpriseServer CRMBusinessUnitsResult res = StartTask("CRM", "GET_CRM_BUSINESS_UNITS"); try { - int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.HostedCRM); + int serviceId = GetCRMServiceId(packageId, res); if (serviceId == 0) - { - CompleteTask(res, CrmErrorCodes.CRM_IS_NOT_SELECTED_IN_HOSTING_PLAN, null, "CRM is not selected in hosting plan."); return res; - } Organization org; try @@ -784,12 +838,9 @@ namespace WebsitePanel.EnterpriseServer try { - int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.HostedCRM); + int serviceId = GetCRMServiceId(packageId, res); if (serviceId == 0) - { - CompleteTask(res, CrmErrorCodes.CRM_IS_NOT_SELECTED_IN_HOSTING_PLAN, null, "CRM is not selected in hosting plan."); return res; - } CRM crm = new CRM(); ServiceProviderProxy.Init(crm, serviceId); @@ -874,13 +925,9 @@ namespace WebsitePanel.EnterpriseServer } - int serviceId = PackageController.GetPackageServiceId(org.PackageId, ResourceGroups.HostedCRM); + int serviceId = GetCRMServiceId(org.PackageId, res); if (serviceId == 0) - { - CompleteTask(res, CrmErrorCodes.CRM_IS_NOT_SELECTED_IN_HOSTING_PLAN, null, - "CRM is not selected in hosting plan."); return res; - } try { @@ -919,13 +966,9 @@ namespace WebsitePanel.EnterpriseServer try { - int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.HostedCRM); + int serviceId = GetCRMServiceId(packageId, res); if (serviceId == 0) - { - CompleteTask(res, CrmErrorCodes.CRM_IS_NOT_SELECTED_IN_HOSTING_PLAN, null, - "CRM is not selected in hosting plan."); return res; - } CRM crm = new CRM(); ServiceProviderProxy.Init(crm, serviceId); @@ -978,13 +1021,9 @@ namespace WebsitePanel.EnterpriseServer return res; } - int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.HostedCRM); + int serviceId = GetCRMServiceId(packageId, res); if (serviceId == 0) - { - CompleteTask(res, CrmErrorCodes.CRM_IS_NOT_SELECTED_IN_HOSTING_PLAN, null, - "CRM is not selected in hosting plan."); return res; - } CRM crm = new CRM(); ServiceProviderProxy.Init(crm, serviceId); @@ -1012,7 +1051,13 @@ namespace WebsitePanel.EnterpriseServer } if (!quotaRes.Value) { - CompleteTask(res, CrmErrorCodes.USER_QUOTA_HAS_BEEN_REACHED + CALType.ToString(), null, "CRM user quota has been reached."); + string errorCode = CrmErrorCodes.USER_QUOTA_HAS_BEEN_REACHED; + PackageContext cntx = PackageController.GetPackageContext(packageId); + if (cntx.Groups.ContainsKey(ResourceGroups.HostedCRM2013)) + errorCode += "2013_"; + errorCode += CALType.ToString(); + + CompleteTask(res, errorCode, null, "CRM user quota has been reached."); return res; } @@ -1058,13 +1103,9 @@ namespace WebsitePanel.EnterpriseServer return res; } - int serviceId = PackageController.GetPackageServiceId(org.PackageId, ResourceGroups.HostedCRM); + int serviceId = GetCRMServiceId(org.PackageId, res); if (serviceId == 0) - { - CompleteTask(res, CrmErrorCodes.CRM_IS_NOT_SELECTED_IN_HOSTING_PLAN, null, - "CRM is not selected in hosting plan."); return res; - } CRM crm = new CRM(); ServiceProviderProxy.Init(crm, serviceId); @@ -1105,19 +1146,37 @@ namespace WebsitePanel.EnterpriseServer return res; } - string quotaName = Quotas.CRM_USERS; + string quotaName = ""; - switch (CALType) + if (cntx.Groups.ContainsKey(ResourceGroups.HostedCRM2013)) { - case 0: - quotaName = Quotas.CRM_USERS; - break; - case 2: - quotaName = Quotas.CRM_LIMITEDUSERS; - break; - case 22: - quotaName = Quotas.CRM_ESSUSERS; - break; + switch (CALType) + { + case CRMUserLycenseTypes.PROFESSIONAL: + quotaName = Quotas.CRM2013_PROFESSIONALUSERS; + break; + case CRMUserLycenseTypes.BASIC: + quotaName = Quotas.CRM2013_BASICUSERS; + break; + case CRMUserLycenseTypes.ESSENTIAL: + quotaName = Quotas.CRM2013_ESSENTIALUSERS; + break; + } + } + else if (cntx.Groups.ContainsKey(ResourceGroups.HostedCRM)) + { + switch (CALType) + { + case CRMUserLycenseTypes.FULL: + quotaName = Quotas.CRM_USERS; + break; + case CRMUserLycenseTypes.LIMITED: + quotaName = Quotas.CRM_LIMITEDUSERS; + break; + case CRMUserLycenseTypes.ESS: + quotaName = Quotas.CRM_ESSUSERS; + break; + } } int allocatedCrmUsers = cntx.Quotas[quotaName].QuotaAllocatedValue; @@ -1137,18 +1196,14 @@ namespace WebsitePanel.EnterpriseServer public static ResultObject SetMaxDBSize(int itemId, int packageId, long maxSize) { - ResultObject res = StartTask("CRM", "SET_CRM_MAXDBSIZE"); + ResultObject res = StartTask("CRM", "SET_CRM_MAXDBSIZE"); try { - int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.HostedCRM); + int serviceId = GetCRMServiceId(packageId, res); if (serviceId == 0) - { - CompleteTask(res, CrmErrorCodes.CRM_IS_NOT_SELECTED_IN_HOSTING_PLAN, null, - "CRM is not selected in hosting plan."); return res; - } CRM crm = new CRM(); ServiceProviderProxy.Init(crm, serviceId); @@ -1169,7 +1224,11 @@ namespace WebsitePanel.EnterpriseServer PackageContext cntx = PackageController.GetPackageContext(packageId); - long limitSize = cntx.Quotas[Quotas.CRM_MAXDATABASESIZE].QuotaAllocatedValue; + string quotaName = ""; + if (cntx.Groups.ContainsKey(ResourceGroups.HostedCRM2013)) quotaName = Quotas.CRM2013_MAXDATABASESIZE; + else if (cntx.Groups.ContainsKey(ResourceGroups.HostedCRM)) quotaName = Quotas.CRM_MAXDATABASESIZE; + + long limitSize = cntx.Quotas[quotaName].QuotaAllocatedValue; if (limitSize != -1) { @@ -1199,19 +1258,15 @@ namespace WebsitePanel.EnterpriseServer public static long GetDBSize(int itemId, int packageId) { - ResultObject res = StartTask("CRM", "GET_CRM_DBSIZE"); + ResultObject res = StartTask("CRM", "GET_CRM_DBSIZE"); long size = -1; try { - int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.HostedCRM); + int serviceId = GetCRMServiceId(packageId, res); if (serviceId == 0) - { - CompleteTask(res, CrmErrorCodes.CRM_IS_NOT_SELECTED_IN_HOSTING_PLAN, null, - "CRM is not selected in hosting plan."); return -1; - } CRM crm = new CRM(); ServiceProviderProxy.Init(crm, serviceId); @@ -1244,19 +1299,15 @@ namespace WebsitePanel.EnterpriseServer public static long GetMaxDBSize(int itemId, int packageId) { - ResultObject res = StartTask("CRM", "GET_CRM_MAXDBSIZE"); + ResultObject res = StartTask("CRM", "GET_CRM_MAXDBSIZE"); long size = -1; try { - int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.HostedCRM); + int serviceId = GetCRMServiceId(packageId, res); if (serviceId == 0) - { - CompleteTask(res, CrmErrorCodes.CRM_IS_NOT_SELECTED_IN_HOSTING_PLAN, null, - "CRM is not selected in hosting plan."); return -1; - } CRM crm = new CRM(); ServiceProviderProxy.Init(crm, serviceId); @@ -1287,5 +1338,52 @@ namespace WebsitePanel.EnterpriseServer return size; } + + public static int[] GetInstalledLanguagePacks(int packageId) + { + ResultObject res = StartTask("CRM", "GET_CRM_MAXDBSIZE"); + int[] ret = null; + + try + { + int serviceId = GetCRMServiceId(packageId, res); + if (serviceId == 0) + return null; + + CRM crm = new CRM(); + ServiceProviderProxy.Init(crm, serviceId); + + ret = crm.GetInstalledLanguagePacks(); + } + catch (Exception ex) + { + CompleteTask(res, CrmErrorCodes.CANNOT_CONFIGURE_CRM_ORGANIZATION, ex); + return null; + } + CompleteTask(); + return ret; + } + + public static int[] GetInstalledLanguagePacksByServiceId(int serviceId) + { + ResultObject res = StartTask("CRM", "GET_CRM_MAXDBSIZE"); + int[] ret = null; + + try + { + CRM crm = new CRM(); + ServiceProviderProxy.Init(crm, serviceId); + + ret = crm.GetInstalledLanguagePacks(); + } + catch (Exception ex) + { + CompleteTask(res, CrmErrorCodes.CANNOT_CONFIGURE_CRM_ORGANIZATION, ex); + return null; + } + CompleteTask(); + return ret; + } + } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs index 4239f90a..3a992ff8 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs @@ -932,12 +932,20 @@ namespace WebsitePanel.EnterpriseServer if (cntxTmp.Groups.ContainsKey(ResourceGroups.HostedCRM)) { - stats.CreatedCRMUsers = CRMController.GetCRMUsersCount(org.Id, string.Empty, string.Empty, 0).Value; - stats.CreatedLimitedCRMUsers = CRMController.GetCRMUsersCount(org.Id, string.Empty, string.Empty, 2).Value; - stats.CreatedESSCRMUsers = CRMController.GetCRMUsersCount(org.Id, string.Empty, string.Empty, 22).Value; + stats.CreatedCRMUsers = CRMController.GetCRMUsersCount(org.Id, string.Empty, string.Empty, CRMUserLycenseTypes.FULL).Value; + stats.CreatedLimitedCRMUsers = CRMController.GetCRMUsersCount(org.Id, string.Empty, string.Empty, CRMUserLycenseTypes.LIMITED).Value; + stats.CreatedESSCRMUsers = CRMController.GetCRMUsersCount(org.Id, string.Empty, string.Empty, CRMUserLycenseTypes.ESS).Value; + stats.UsedCRMDiskSpace = CRMController.GetDBSize(org.Id, org.PackageId); + stats.AllocatedCRMDiskSpace = CRMController.GetMaxDBSize(org.Id, org.PackageId); + } + + if (cntxTmp.Groups.ContainsKey(ResourceGroups.HostedCRM2013)) + { + stats.CreatedProfessionalCRMUsers = CRMController.GetCRMUsersCount(org.Id, string.Empty, string.Empty, CRMUserLycenseTypes.PROFESSIONAL).Value; + stats.CreatedBasicCRMUsers = CRMController.GetCRMUsersCount(org.Id, string.Empty, string.Empty, CRMUserLycenseTypes.BASIC).Value; + stats.CreatedEssentialCRMUsers = CRMController.GetCRMUsersCount(org.Id, string.Empty, string.Empty, CRMUserLycenseTypes.ESSENTIAL).Value; stats.UsedCRMDiskSpace = CRMController.GetDBSize(org.Id, org.PackageId); stats.AllocatedCRMDiskSpace = CRMController.GetMaxDBSize(org.Id, org.PackageId); - } if (cntxTmp.Groups.ContainsKey(ResourceGroups.BlackBerry)) @@ -996,9 +1004,18 @@ namespace WebsitePanel.EnterpriseServer if (cntxTmp.Groups.ContainsKey(ResourceGroups.HostedCRM)) { - stats.CreatedCRMUsers += CRMController.GetCRMUsersCount(o.Id, string.Empty, string.Empty, 0 ).Value; - stats.CreatedLimitedCRMUsers += CRMController.GetCRMUsersCount(o.Id, string.Empty, string.Empty, 2).Value; - stats.CreatedESSCRMUsers += CRMController.GetCRMUsersCount(o.Id, string.Empty, string.Empty, 22).Value; + stats.CreatedCRMUsers += CRMController.GetCRMUsersCount(o.Id, string.Empty, string.Empty, CRMUserLycenseTypes.FULL ).Value; + stats.CreatedLimitedCRMUsers += CRMController.GetCRMUsersCount(o.Id, string.Empty, string.Empty, CRMUserLycenseTypes.LIMITED).Value; + stats.CreatedESSCRMUsers += CRMController.GetCRMUsersCount(o.Id, string.Empty, string.Empty, CRMUserLycenseTypes.ESS).Value; + stats.UsedCRMDiskSpace += CRMController.GetDBSize(o.Id, o.PackageId); + stats.AllocatedCRMDiskSpace += CRMController.GetMaxDBSize(o.Id, o.PackageId); + } + + if (cntxTmp.Groups.ContainsKey(ResourceGroups.HostedCRM2013)) + { + stats.CreatedProfessionalCRMUsers += CRMController.GetCRMUsersCount(o.Id, string.Empty, string.Empty, CRMUserLycenseTypes.PROFESSIONAL).Value; + stats.CreatedBasicCRMUsers += CRMController.GetCRMUsersCount(o.Id, string.Empty, string.Empty, CRMUserLycenseTypes.BASIC).Value; + stats.CreatedEssentialCRMUsers += CRMController.GetCRMUsersCount(o.Id, string.Empty, string.Empty, CRMUserLycenseTypes.ESSENTIAL).Value; stats.UsedCRMDiskSpace += CRMController.GetDBSize(o.Id, o.PackageId); stats.AllocatedCRMDiskSpace += CRMController.GetMaxDBSize(o.Id, o.PackageId); } @@ -1049,6 +1066,13 @@ namespace WebsitePanel.EnterpriseServer stats.AllocatedESSCRMUsers = cntx.Quotas[Quotas.CRM_ESSUSERS].QuotaAllocatedValue; } + if (cntx.Groups.ContainsKey(ResourceGroups.HostedCRM2013)) + { + stats.AllocatedProfessionalCRMUsers = cntx.Quotas[Quotas.CRM2013_PROFESSIONALUSERS].QuotaAllocatedValue; + stats.AllocatedBasicCRMUsers = cntx.Quotas[Quotas.CRM2013_BASICUSERS].QuotaAllocatedValue; + stats.AllocatedEssentialCRMUsers = cntx.Quotas[Quotas.CRM2013_ESSENTIALUSERS].QuotaAllocatedValue; + } + if (cntx.Groups.ContainsKey(ResourceGroups.BlackBerry)) { stats.AllocatedBlackBerryUsers = cntx.Quotas[Quotas.BLACKBERRY_USERS].QuotaAllocatedValue; diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esCRM.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esCRM.asmx.cs index e7f3d8de..491875e6 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esCRM.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esCRM.asmx.cs @@ -48,24 +48,34 @@ namespace WebsitePanel.EnterpriseServer { [WebMethod] - public OrganizationResult CreateOrganization(int organizationId, string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, string regionName, int userId, string collation) + public OrganizationResult CreateOrganization(int organizationId, string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, string regionName, int userId, string collation, int baseLanguageCode) { - return CRMController.CreateOrganization(organizationId, baseCurrencyCode, baseCurrencyName, baseCurrencySymbol, regionName, userId, collation); + return CRMController.CreateOrganization(organizationId, baseCurrencyCode, baseCurrencyName, baseCurrencySymbol, regionName, userId, collation, baseLanguageCode); } - [WebMethod] public StringArrayResultObject GetCollation(int packageId) { - return CRMController.GetCollationNames(packageId); + return CRMController.GetCollation(packageId); + } + + [WebMethod] + public StringArrayResultObject GetCollationByServiceId(int serviceId) + { + return CRMController.GetCollationByServiceId(serviceId); } [WebMethod] public CurrencyArrayResultObject GetCurrency(int packageId) { - return CRMController.GetCurrency(packageId); } + + [WebMethod] + public CurrencyArrayResultObject GetCurrencyByServiceId(int serviceId) + { + return CRMController.GetCurrencyByServiceId(serviceId); + } [WebMethod] public ResultObject DeleteCRMOrganization(int organizationId) @@ -149,5 +159,17 @@ namespace WebsitePanel.EnterpriseServer return CRMController.GetMaxDBSize(itemId, packageId); } + [WebMethod] + public int[] GetInstalledLanguagePacks(int packageId) + { + return CRMController.GetInstalledLanguagePacks(packageId); + } + + [WebMethod] + public int[] GetInstalledLanguagePacksByServiceId(int serviceId) + { + return CRMController.GetInstalledLanguagePacksByServiceId(serviceId); + } + } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/Common/Constants.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Common/Constants.cs index d99847d0..165991a2 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/Common/Constants.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/Common/Constants.cs @@ -74,6 +74,11 @@ namespace WebsitePanel.Providers.Common public const string UsersHome = "UsersHome"; - + public const string Collation = "Collation"; + + public const string Currency = "Currency"; + + public const string BaseLanguage = "BaseLanguage"; + } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ICRM.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ICRM.cs index 0808f1b8..ef0f3e83 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ICRM.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ICRM.cs @@ -35,6 +35,7 @@ namespace WebsitePanel.Providers.HostedSolution public interface ICRM { OrganizationResult CreateOrganization(Guid organizationId, string organizationUniqueName, string organizationFriendlyName, + int baseLanguageCode, string ou, string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, string initialUserDomainName, string initialUserFirstName, string initialUserLastName, string initialUserPrimaryEmail, @@ -44,6 +45,8 @@ namespace WebsitePanel.Providers.HostedSolution string[] GetSupportedCollationNames(); Currency[] GetCurrencyList(); + + int[] GetInstalledLanguagePacks(); ResultObject DeleteOrganization(Guid orgId); diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatistics.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatistics.cs index b107d59a..a68cb77a 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatistics.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/OrganizationStatistics.cs @@ -75,7 +75,53 @@ namespace WebsitePanel.Providers.HostedSolution private int allocatedEnterpriseStorageSpace; private int usedEnterpriseStorageSpace; - + + private int createdProfessionalCRMUsers; + private int allocatedProfessionalCRMUsers; + + public int CreatedProfessionalCRMUsers + { + get { return createdProfessionalCRMUsers; } + set { createdProfessionalCRMUsers = value; } + } + + public int AllocatedProfessionalCRMUsers + { + get { return allocatedProfessionalCRMUsers; } + set { allocatedProfessionalCRMUsers = value; } + } + + + private int createdBasicCRMUsers; + private int allocatedBasicCRMUsers; + + public int CreatedBasicCRMUsers + { + get { return createdBasicCRMUsers; } + set { createdBasicCRMUsers = value; } + } + + public int AllocatedBasicCRMUsers + { + get { return allocatedBasicCRMUsers; } + set { allocatedBasicCRMUsers = value; } + } + + private int createdEssentialCRMUsers; + private int allocatedEssentialCRMUsers; + + public int CreatedEssentialCRMUsers + { + get { return createdEssentialCRMUsers; } + set { createdEssentialCRMUsers = value; } + } + + public int AllocatedEssentialCRMUsers + { + get { return allocatedEssentialCRMUsers; } + set { allocatedEssentialCRMUsers = value; } + } + public int CreatedCRMUsers { diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/CRMBase.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/CRMBase.cs new file mode 100644 index 00000000..c07b7594 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/CRMBase.cs @@ -0,0 +1,2096 @@ +// Copyright (c) 2012 - 2013, 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. + +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Globalization; +using System.IO; +using System.Net; +using System.Reflection; +using System.Net.Security; +using System.Security.Principal; +using System.Security.Cryptography.X509Certificates; +using System.Threading; +using System.ServiceModel.Description; +using System.Text.RegularExpressions; +using Microsoft.Win32; +using WebsitePanel.Providers.Common; +using WebsitePanel.Providers.ResultObjects; +using WebsitePanel.Server.Utils; +using WebsitePanel.Providers.HostedSolution; +using WebsitePanel.Providers; +using WebsitePanel.Providers.Utils; +using Microsoft.Xrm.Sdk; +using Microsoft.Xrm.Sdk.Query; +using Microsoft.Xrm.Sdk.Discovery; +using Microsoft.Xrm.Sdk.Client; +using Microsoft.Xrm.Sdk.Deployment; +using Microsoft.Xrm.Sdk.Messages; + +namespace WebsitePanel.Providers.HostedSolution +{ + public class CRMBase : HostingServiceProviderBase, ICRM + { + #region Properties + + protected virtual string UserName + { + get { return ProviderSettings[Constants.UserName]; } + } + + protected virtual string Password + { + get { return ProviderSettings[Constants.Password]; } + } + + protected virtual string SqlServer + { + get { return ProviderSettings[Constants.SqlServer]; } + } + + protected virtual string ReportingServer + { + get { return ProviderSettings[Constants.ReportingServer]; } + } + + protected virtual string UrlSchema + { + get { return ProviderSettings[Constants.UrlSchema] == "http" ? "http://" : "https://"; } + } + + protected virtual string CRMDeploymentUrl + { + get + { + string uri = ProviderSettings[Constants.DeploymentWebService]; + if (String.IsNullOrEmpty(uri)) uri = ProviderSettings[Constants.AppRootDomain]; + string cRMServiceUrl = UrlSchema + uri + ":" + ProviderSettings[Constants.Port] + "/XRMDeployment/2011/Deployment.svc"; + return cRMServiceUrl; + } + } + + protected virtual string CRMDiscoveryUrl + { + get + { + string uri = ProviderSettings[Constants.DiscoveryWebService]; + if (String.IsNullOrEmpty(uri)) uri = ProviderSettings[Constants.AppRootDomain]; + string cRMDiscoveryUri = UrlSchema + uri + ":" + ProviderSettings[Constants.Port] + "/XRMServices/2011/Discovery.svc"; + return cRMDiscoveryUri; + } + } + + private static string crmPath = null; + protected static string CRMPath + { + get + { + if (string.IsNullOrEmpty(crmPath)) + { + RegistryKey root = Registry.LocalMachine; + RegistryKey rk = root.OpenSubKey("SOFTWARE\\Microsoft\\MSCRM"); + if (rk != null) + { + crmPath = (string)rk.GetValue("CRM_Server_InstallDir", string.Empty); + } + } + return crmPath; + } + } + + protected static string CRMDatabaseName = "MSCRM_CONFIG"; + + #endregion + + #region Service + + protected virtual ClientCredentials GetUserLogonCredentials() + { + ClientCredentials credentials = new ClientCredentials(); + + if (String.IsNullOrEmpty(UserName)) + { + credentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials; + } + else + { + credentials.UserName.UserName = UserName; + credentials.UserName.Password = Password; + } + + return credentials; + } + + protected virtual DeploymentServiceClient GetDeploymentProxy() + { + Uri serviceUrl = new Uri(CRMDeploymentUrl); + + DeploymentServiceClient deploymentService = Microsoft.Xrm.Sdk.Deployment.Proxy.ProxyClientHelper.CreateClient(serviceUrl); + if (!String.IsNullOrEmpty(UserName)) + deploymentService.ClientCredentials.Windows.ClientCredential = new NetworkCredential(UserName, Password); + + return deploymentService; + } + + protected virtual DiscoveryServiceProxy GetDiscoveryProxy() + { + + IServiceManagement serviceManagement = + ServiceConfigurationFactory.CreateManagement( + new Uri(CRMDiscoveryUrl)); + + ClientCredentials Credentials = GetUserLogonCredentials(); + + DiscoveryServiceProxy r = new DiscoveryServiceProxy(serviceManagement, Credentials); + + return r; + } + + private OrganizationDetailCollection DiscoverOrganizations(IDiscoveryService service) + { + if (service == null) throw new ArgumentNullException("service"); + RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest(); + RetrieveOrganizationsResponse orgResponse = + (RetrieveOrganizationsResponse)service.Execute(orgRequest); + + return orgResponse.Details; + } + + protected virtual Uri GetCRMOrganizationUrl(string orgName) + { + //string url = "https://" + ProviderSettings[Constants.AppRootDomain] + ":" + ProviderSettings[Constants.Port] + "/" + orgName + "/XRMServices/2011/Organization.svc"; + + string url; + + string organizationWebServiceUri = ProviderSettings[Constants.OrganizationWebService]; + + if (String.IsNullOrEmpty(orgName)) + return null; + + if (!String.IsNullOrEmpty(organizationWebServiceUri)) + { + url = UrlSchema + organizationWebServiceUri + ":" + ProviderSettings[Constants.Port] + "/" + orgName + "/XRMServices/2011/Organization.svc"; + } + else + { + url = UrlSchema + orgName + "." + ProviderSettings[Constants.IFDWebApplicationRootDomain] + ":" + ProviderSettings[Constants.Port] + "/XRMServices/2011/Organization.svc"; + } + + try + { + + using (DiscoveryServiceProxy serviceProxy = GetDiscoveryProxy()) + { + // Obtain organization information from the Discovery service. + if (serviceProxy != null) + { + // Obtain information about the organizations that the system user belongs to. + OrganizationDetailCollection orgs = DiscoverOrganizations(serviceProxy); + + for (int n = 0; n < orgs.Count; n++) + { + if (orgs[n].UniqueName == orgName) + { + // Return the organization Uri. + return new System.Uri(orgs[n].Endpoints[EndpointType.OrganizationService]); + } + } + + } + } + } + catch { } + + return new Uri(url); + } + + private int getOrganizationProxyTryCount = 10; + private int getOrganizationProxyTryTimeout = 30000; + protected virtual OrganizationServiceProxy GetOrganizationProxy(string orgName) + { + return GetOrganizationProxy(orgName, getOrganizationProxyTryCount, getOrganizationProxyTryTimeout); + } + + protected virtual OrganizationServiceProxy GetOrganizationProxy(string orgName, int TryCount, int TryTimeout) + { + + Uri OrganizationUri = GetCRMOrganizationUrl(orgName); + + OrganizationServiceProxy r = null; + + bool success = false; + int tryItem = 0; + Exception exception = null; + + while (!success) + { + + try + { + // Set IServiceManagement for the current organization. + IServiceManagement orgServiceManagement = + ServiceConfigurationFactory.CreateManagement( + OrganizationUri); + + r = new OrganizationServiceProxy( + orgServiceManagement, + GetUserLogonCredentials()); + + success = true; + + } + catch (Exception exc) + { + Thread.Sleep(TryTimeout); + tryItem++; + if (tryItem >= TryCount) + { + exception = exc; + success = true; + } + } + + } + + if (exception != null) + throw new ArgumentException(exception.ToString()); + + r.EnableProxyTypes(); + + return r; + } + + #endregion + + #region Static constructor + + static CRMBase() + { + AppDomain.CurrentDomain.AssemblyResolve += ResolveCRMAssembly; + } + + static Assembly ResolveCRMAssembly(object sender, ResolveEventArgs args) + { + // Ensure we load DLLs only. + if (args.Name.ToLower().Contains("microsoft.crm") || args.Name.ToLower().Contains("antixsslibrary") || args.Name.ToLower().Contains("microsoft.xrm")) + { + string dllName = args.Name.Split(',')[0] + ".dll"; + + List paths = new List(); + + // assembly location + paths.Add( Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().EscapedCodeBase).LocalPath) ); + // crm tools path + paths.Add(CRMPath); + + foreach(string path in paths) + { + string filename = Path.Combine(path, dllName); + if (File.Exists(filename)) + return Assembly.LoadFrom(filename); + } + } + + return default(Assembly); + } + + #endregion + + #region Check environment + + protected virtual bool CheckCRMWebServicesAccess() + { + Log.WriteStart("CheckCRMWebServicesAccess"); + bool ret = false; + HttpWebResponse response = null; + HttpWebRequest request; + + try + { + WindowsIdentity.GetCurrent(); + + request = WebRequest.Create(CRMDeploymentUrl) as HttpWebRequest; + + if (request != null) + { + request.UseDefaultCredentials = true; + request.Credentials = CredentialCache.DefaultCredentials; + response = request.GetResponse() as HttpWebResponse; + + } + if (response != null) + ret = (response.StatusCode == HttpStatusCode.OK); + } + catch (Exception ex) + { + Log.WriteError(ex); + ret = false; + } + + Log.WriteEnd("CheckCRMWebServicesAccess"); + return ret; + } + + protected virtual bool CheckPermissions() + { + Log.WriteStart("CheckPermissions"); + bool res = false; + try + { + string group = "PrivUserGroup"; + string user = WindowsIdentity.GetCurrent().Name.Split(new char[] { '\\' })[1]; + res = ActiveDirectoryUtils.IsUserInGroup(user, group); + } + catch (Exception ex) + { + Log.WriteError(ex); + res = false; + } + + Log.WriteEnd("CheckPermissions"); + return res; + } + + protected virtual bool CheckOrganizationUnique(string databaseName, string orgName) + { + Log.WriteStart("CheckOrganizationUnique"); + bool res = false; + + SqlConnection connection = null; + try + { + connection = new SqlConnection(); + connection.ConnectionString = + string.Format("Server={1};Initial Catalog={0};Integrated Security=SSPI", + databaseName, SqlServer); + + connection.Open(); + + string commandText = string.Format("SELECT COUNT(*) FROM dbo.Organization WHERE UniqueName = '{0}'", orgName); + SqlCommand command = new SqlCommand(commandText, connection); + int count = (int)command.ExecuteScalar(); + res = count == 0; + + + } + catch (Exception ex) + { + res = false; + Log.WriteError(ex); + } + finally + { + if (connection != null) + connection.Dispose(); + + } + + Log.WriteEnd("CheckOrganizationUnique"); + return res; + } + + protected virtual bool CheckSqlServerConnection() + { + Log.WriteStart("CheckSqlServerConnection"); + bool res = false; + SqlConnection connection = null; + try + { + connection = new SqlConnection(); + connection.ConnectionString = + string.Format("server={0}; Integrated Security=SSPI", + SqlServer); + + connection.Open(); + res = true; + } + catch (Exception ex) + { + Log.WriteError(ex); + res = false; + } + finally + { + if (connection != null) + connection.Dispose(); + } + + Log.WriteEnd("CheckSqlServerConnection"); + + return res; + } + + protected virtual bool CheckReportServerConnection() + { + Log.WriteStart("CheckReportServerConnection"); + bool ret = false; + HttpWebResponse response = null; + HttpWebRequest request; + + try + { + WindowsIdentity.GetCurrent(); + + request = WebRequest.Create(ReportingServer) as HttpWebRequest; + + if (request != null) + { + request.UseDefaultCredentials = true; + request.Credentials = CredentialCache.DefaultCredentials; + response = request.GetResponse() as HttpWebResponse; + + } + if (response != null) + ret = (response.StatusCode == HttpStatusCode.OK); + } + catch (Exception ex) + { + Log.WriteError(ex); + ret = false; + } + + Log.WriteEnd("CheckReportServerConnection"); + return ret; + } + + protected virtual OrganizationResult CheckCrmEnvironment(string strDataBaseName, string organizationUniqueName) + { + OrganizationResult retOrganization = StartLog("CheckCrmEnvironment"); + bool res = CheckSqlServerConnection(); + + if (!res) + { + EndLog("CheckCrmEnvironment", retOrganization, CrmErrorCodes.CRM_SQL_SERVER_ERROR); + return retOrganization; + } + + res = CheckOrganizationUnique(strDataBaseName, organizationUniqueName); + if (!res) + { + EndLog("CheckCrmEnvironment", retOrganization, CrmErrorCodes.CRM_ORGANIZATION_ALREADY_EXISTS); + return retOrganization; + } + + res = CheckReportServerConnection(); + if (!res) + { + EndLog("CheckCrmEnvironment", retOrganization, CrmErrorCodes.CRM_REPORT_SERVER_ERROR); + return retOrganization; + } + + res = CheckPermissions(); + if (!res) + { + EndLog("CheckCrmEnvironment", retOrganization, CrmErrorCodes.CRM_PERMISSIONS_ERROR); + return retOrganization; + } + + res = CheckCRMWebServicesAccess(); + if (!res) + { + EndLog("CheckCrmEnvironment", retOrganization, CrmErrorCodes.CRM_WEB_SERVICE_ERROR); + return retOrganization; + } + + EndLog("CheckCrmEnvironment"); + return retOrganization; + } + + #endregion + + #region DataBase + + protected virtual string GetDataBaseName(Guid organizationId) + { + string databasename = null; + + SqlConnection connection = null; + try + { + connection = new SqlConnection(); + connection.ConnectionString = + string.Format("Server={1};Initial Catalog={0};Integrated Security=SSPI", + CRMDatabaseName, SqlServer); + + connection.Open(); + + string commandText = string.Format("SELECT DatabaseName FROM dbo.Organization where id = '{0}'", organizationId); + SqlCommand command = new SqlCommand(commandText, connection); + object result = command.ExecuteScalar(); + if (result!=null) + databasename = result.ToString(); + + } + catch (Exception ex) + { + Log.WriteError(ex); + } + finally + { + if (connection != null) + connection.Dispose(); + } + + return databasename; + } + + public virtual long GetDBSize(Guid organizationId) + { + StartLog("GetDBSize"); + long res = 0; + + string databasename = GetDataBaseName(organizationId); + if (databasename == null) return 0; + + if (databasename == null) return 0; + + SqlConnection connection = null; + try + { + connection = new SqlConnection(); + connection.ConnectionString = + string.Format("Server={1};Initial Catalog={0};Integrated Security=SSPI", + databasename, SqlServer); + + connection.Open(); + + string commandText = "SELECT ((dbsize ) * 8192 ) size FROM " + // + logsize + "( " + + "SELECT SUM(CONVERT(BIGINT,CASE WHEN status & 64 = 0 THEN size ELSE 0 END)) dbsize " + + ", SUM(CONVERT(BIGINT,CASE WHEN status & 64 <> 0 THEN size ELSE 0 END)) logsize " + + "FROM dbo.sysfiles " + + ") big"; + + SqlCommand command = new SqlCommand(commandText, connection); + res = (long)command.ExecuteScalar(); + + } + catch (Exception ex) + { + EndLog("GetDBSize", null, null, ex); + } + finally + { + if (connection != null) + connection.Dispose(); + + } + + EndLog("GetDBSize"); + return res; + + } + + public virtual long GetMaxDBSize(Guid organizationId) + { + StartLog("GetMaxDBSize"); + long res = 0; + + string databasename = GetDataBaseName(organizationId); + if (databasename == null) return 0; + + SqlConnection connection = null; + try + { + connection = new SqlConnection(); + connection.ConnectionString = + string.Format("Server={1};Initial Catalog={0};Integrated Security=SSPI", + databasename, SqlServer); + + connection.Open(); + + string commandText = "SELECT SUM(CONVERT(BIGINT,CASE WHEN status & 64 = 0 THEN maxsize ELSE 0 END)) dbsize FROM dbo.sysfiles"; + + SqlCommand command = new SqlCommand(commandText, connection); + res = (long)command.ExecuteScalar(); + if (res > 0) res = res * 8192; + + } + catch (Exception ex) + { + EndLog("GetMaxDBSize", null, null, ex); + } + finally + { + if (connection != null) + connection.Dispose(); + + } + + EndLog("GetMaxDBSize"); + return res; + } + + public virtual ResultObject SetMaxDBSize(Guid organizationId, long maxSize) + { + ResultObject res = StartLog("SetMaxDBSize"); + + SqlConnection connection = null; + try + { + string databasename = GetDataBaseName(organizationId); + if (databasename == null) throw new Exception("Can not get database name"); + + connection = new SqlConnection(); + connection.ConnectionString = + string.Format("Server={1};Initial Catalog={0};Integrated Security=SSPI", + databasename, SqlServer); + + connection.Open(); + + string maxSizeStr = maxSize == -1 ? "UNLIMITED" : (maxSize / (1024 * 1024)).ToString() + " MB"; + + string commandText = "ALTER DATABASE [" + databasename + "] MODIFY FILE ( NAME = N'mscrm', MAXSIZE = " + maxSizeStr + " )"; + + SqlCommand command = new SqlCommand(commandText, connection); + command.ExecuteNonQuery(); + + res.IsSuccess = true; + + } + catch (Exception ex) + { + EndLog("SetMaxDBSize", res, CrmErrorCodes.CANNOT_CHANGE_CRM_ORGANIZATION_STATE, ex); + } + finally + { + if (connection != null) + connection.Dispose(); + + } + + EndLog("SetMaxDBSize"); + return res; + } + + #endregion + + #region Organization + + public virtual OrganizationResult CreateOrganization(Guid organizationId, string organizationUniqueName, string organizationFriendlyName, + int baseLanguageCode, + string ou, + string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, + string initialUserDomainName, string initialUserFirstName, string initialUserLastName, string initialUserPrimaryEmail, + string organizationCollation, + long maxSize) + { + return CreateOrganizationInternal(organizationId, organizationUniqueName, organizationFriendlyName, + baseLanguageCode, + ou , baseCurrencyCode, baseCurrencyName, baseCurrencySymbol, + initialUserDomainName, initialUserFirstName, initialUserLastName, initialUserPrimaryEmail, + organizationCollation, + maxSize); + } + + protected const string CRMSysAdminRoleStr = "Системный администратор;System Administrator"; + + internal virtual OrganizationResult CreateOrganizationInternal(Guid organizationId, string organizationUniqueName, string organizationFriendlyName, + int baseLanguageCode, + string ou, + string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, + string initialUserDomainName, string initialUserFirstName, string initialUserLastName, string initialUserPrimaryEmail, + string organizationCollation, + long maxSize) + { + + OrganizationResult ret = StartLog("CreateOrganizationInternal"); + + organizationUniqueName = Regex.Replace(organizationUniqueName, @"[^\dA-Za-z]", "-", RegexOptions.Compiled); + + // calculate UserRootPath + string ldapstr = ""; + + string[] ouItems = ou.Split('.'); + foreach (string ouItem in ouItems) + { + if (ldapstr.Length != 0) ldapstr += ","; + ldapstr += "OU=" + ouItem; + } + + string rootDomain = ServerSettings.ADRootDomain; + string[] domainItems = rootDomain.Split('.'); + foreach (string domainItem in domainItems) + ldapstr += ",DC=" + domainItem; + + ldapstr = @"LDAP://" + rootDomain + "/" + ldapstr; + + + + if (organizationId == Guid.Empty) + throw new ArgumentException("OrganizationId is Guid.Empty"); + + if (string.IsNullOrEmpty(organizationFriendlyName)) + throw new ArgumentNullException("organizationFriendlyName"); + + if (string.IsNullOrEmpty(baseCurrencyCode)) + throw new ArgumentNullException("baseCurrencyCode"); + + if (string.IsNullOrEmpty(baseCurrencySymbol)) + throw new ArgumentNullException("baseCurrencySymbol"); + + if (string.IsNullOrEmpty(initialUserDomainName)) + throw new ArgumentNullException("initialUserDomainName"); + + OrganizationResult retCheckEn = CheckCrmEnvironment(CRMDatabaseName, organizationUniqueName); + + if (!retCheckEn.IsSuccess) + { + ret.ErrorCodes.AddRange(retCheckEn.ErrorCodes); + EndLog("CreateOrganizationInternal", ret, null, null); + return ret; + } + + try + { + + DeploymentServiceClient deploymentService = GetDeploymentProxy(); + + Microsoft.Xrm.Sdk.Deployment.Organization org = new Microsoft.Xrm.Sdk.Deployment.Organization + { + Id = organizationId, + UniqueName = organizationUniqueName, + FriendlyName = organizationFriendlyName, + SqlServerName = SqlServer, + SrsUrl = ReportingServer, + BaseCurrencyCode = baseCurrencyCode, + BaseCurrencyName = baseCurrencyName, + BaseCurrencySymbol = baseCurrencySymbol, + SqlCollation = organizationCollation, + State = Microsoft.Xrm.Sdk.Deployment.OrganizationState.Enabled + }; + + if (baseLanguageCode > 0) + org.BaseLanguageCode = baseLanguageCode; + + BeginCreateOrganizationRequest req = new BeginCreateOrganizationRequest + { + Organization = org + }; + + if (!String.IsNullOrEmpty(UserName)) + { + req.SysAdminName = UserName; + } + + BeginCreateOrganizationResponse resp = deploymentService.Execute(req) as BeginCreateOrganizationResponse; + + if (resp == null) + throw new ArgumentException("BeginCreateOrganizationResponse is Null"); + + EntityInstanceId id = new EntityInstanceId(); + id.Name = org.UniqueName; + + Microsoft.Xrm.Sdk.Deployment.OrganizationState OperationState = Microsoft.Xrm.Sdk.Deployment.OrganizationState.Pending; + + int timeout = 30000; + + do + { + Thread.Sleep(timeout); + try + { + Microsoft.Xrm.Sdk.Deployment.Organization getorg + = (Microsoft.Xrm.Sdk.Deployment.Organization)deploymentService.Retrieve(DeploymentEntityType.Organization, id); + OperationState = getorg.State; + } + catch { } + } while ((OperationState != Microsoft.Xrm.Sdk.Deployment.OrganizationState.Enabled) && + (OperationState != Microsoft.Xrm.Sdk.Deployment.OrganizationState.Failed)); + + if (OperationState == Microsoft.Xrm.Sdk.Deployment.OrganizationState.Failed) + throw new ArgumentException("Create organization failed."); + + // update UserRootPath setting + Microsoft.Xrm.Sdk.Deployment.ConfigurationEntity orgSettings = new Microsoft.Xrm.Sdk.Deployment.ConfigurationEntity + { + Id = org.Id, + LogicalName = "Organization" + }; + orgSettings.Attributes = new Microsoft.Xrm.Sdk.Deployment.AttributeCollection(); + orgSettings.Attributes.Add(new KeyValuePair("UserRootPath", ldapstr)); + Microsoft.Xrm.Sdk.Deployment.UpdateAdvancedSettingsRequest reqUpdateSettings = new Microsoft.Xrm.Sdk.Deployment.UpdateAdvancedSettingsRequest + { + Entity = orgSettings + }; + Microsoft.Xrm.Sdk.Deployment.UpdateAdvancedSettingsResponse respUpdateSettings = (Microsoft.Xrm.Sdk.Deployment.UpdateAdvancedSettingsResponse) deploymentService.Execute(reqUpdateSettings); + + // DB size limit + if (maxSize!=-1) + SetMaxDBSize(organizationId, maxSize); + + int tryTimeout = 30000; + int tryCount = 10; + + bool success = false; + int tryItem = 0; + + while (!success) + { + + try + { + Thread.Sleep(tryTimeout); + + OrganizationServiceProxy _serviceProxy = GetOrganizationProxy(organizationUniqueName, 0, 0); + + string ldap = ""; + + Guid SysAdminGuid = RetrieveSystemUser(GetDomainName(initialUserDomainName), initialUserFirstName, initialUserLastName, CRMSysAdminRoleStr, _serviceProxy, ref ldap, 0); + + success = true; + + } + catch + { + tryItem++; + if (tryItem >= tryCount) + success = true; + } + } + + + } + catch (Exception ex) + { + EndLog("CheckCrmEnvironment", ret, CrmErrorCodes.CREATE_CRM_ORGANIZATION_GENERAL_ERROR, ex); + return ret; + + } + + EndLog("CheckCrmEnvironment"); + + return ret; + } + + protected string GetDomainName(string username) + { + string domain = ActiveDirectoryUtils.GetNETBIOSDomainName(ServerSettings.ADRootDomain); + string ret = string.Format(@"{0}\{1}", domain, username); + return ret; + } + + public virtual string[] GetSupportedCollationNames() + { + return GetSupportedCollationNamesInternal(SqlServer); + } + + internal virtual string[] GetSupportedCollationNamesInternal(string SqlServer) + { + StartLog("GetSupportedCollationNamesInternal"); + + List ret = new List(); + + SqlConnection connection = null; + try + { + connection = new SqlConnection(); + connection.ConnectionString = + string.Format("Server={1};Initial Catalog={0};Integrated Security=SSPI", + CRMDatabaseName, SqlServer); + + connection.Open(); + + string commandText = "select * from fn_helpcollations() where " + + "(name not like '%_WS') AND (name not like '%_KS') AND (name not like '%_100_%') " + + " AND (name not like 'SQL_%') " + + " order by name"; + SqlCommand command = new SqlCommand(commandText, connection); + SqlDataReader reader = command.ExecuteReader(); + + while (reader.Read()) + { + string name = reader["name"] as string; + ret.Add(name); + } + + } + catch (Exception ex) + { + Log.WriteError(ex); + } + finally + { + if (connection != null) + connection.Dispose(); + + } + + EndLog("GetSupportedCollationNamesInternal"); + return ret.ToArray(); + } + + public virtual Currency[] GetCurrencyList() + { + return GetCurrencyListInternal(); + } + + internal virtual Currency[] GetCurrencyListInternal() + { + StartLog("GetCurrencyListInternal"); + List retList = new List(); + + CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures); + + foreach (CultureInfo culture in cultures) + { + if (culture.IsNeutralCulture) continue; + + try + { + RegionInfo Region = new RegionInfo(culture.LCID); + + Currency currency = new Currency(); + currency.RegionName = Region.NativeName; + currency.CurrencyName = Region.CurrencyNativeName; + currency.CurrencyCode = Region.ISOCurrencySymbol; + currency.CurrencySymbol = Region.CurrencySymbol; + retList.Add(currency); + + } + catch + { + continue; + } + } + + retList.Sort(delegate(Currency a, Currency b) { return a.RegionName.CompareTo(b.RegionName); }); + + EndLog("GetCurrencyListInternal"); + return retList.ToArray(); + } + + public virtual int[] GetInstalledLanguagePacks() + { + return GetInstalledLanguagePacksInternal(); + } + + internal virtual int[] GetInstalledLanguagePacksInternal() + { + StartLog("GetInstalledLanguagePacks"); + List res = new List(); + + try + { + RegistryKey root = Registry.LocalMachine; + RegistryKey rk = root.OpenSubKey("SOFTWARE\\Microsoft\\MSCRM"); + + if (rk == null) + rk = root.OpenSubKey("SOFTWARE\\Wow6432Node\\Microsoft\\MSCRM"); + + if (rk == null) throw new Exception("Can't open SOFTWARE\\Microsoft\\MSCRM"); + + RegistryKey langPacksKey = rk.OpenSubKey("LangPacks"); + if (langPacksKey == null) throw new Exception("Can't open SOFTWARE\\Microsoft\\MSCRM\\LangPacks"); + + string[] langPacksId = langPacksKey.GetSubKeyNames(); + + foreach (string strLangId in langPacksId) + { + int langId = 0; + if (int.TryParse(strLangId, out langId)) + res.Add(langId); + } + + } + catch (Exception ex) + { + EndLog("GetInstalledLanguagePacks", null, null, ex); + return null; + } + + EndLog("GetInstalledLanguagePacks"); + return res.ToArray(); + } + + public virtual ResultObject DeleteOrganization(Guid orgId) + { + return DeleteOrganizationInternal(orgId); + } + + internal virtual ResultObject DeleteOrganizationInternal(Guid orgId) + { + ResultObject res = StartLog("DeleteOrganizationInternal"); + + + res.IsSuccess = true; + try + { + DeploymentServiceClient deploymentService = GetDeploymentProxy(); + + EntityInstanceId i = new EntityInstanceId(); + i.Id = orgId; //Organisation Id + + Microsoft.Xrm.Sdk.Deployment.Organization org = (Microsoft.Xrm.Sdk.Deployment.Organization)deploymentService.Retrieve(DeploymentEntityType.Organization, i); + + org.State = Microsoft.Xrm.Sdk.Deployment.OrganizationState.Disabled; + + Microsoft.Xrm.Sdk.Deployment.UpdateRequest updateRequest = new Microsoft.Xrm.Sdk.Deployment.UpdateRequest(); + updateRequest.Entity = org; + + deploymentService.Execute(updateRequest); + + } + catch (Exception ex) + { + EndLog("DeleteOrganizationInternal", res, CrmErrorCodes.DELETE_CRM_ORGANIZATION_GENERAL_ERROR, ex); + return res; + + } + + + EndLog("DeleteOrganizationInternal"); + return res; + } + + public override void DeleteServiceItems(ServiceProviderItem[] items) + { + foreach (ServiceProviderItem item in items) + { + try + { + if (item is Organization) + { + Organization org = item as Organization; + DeleteOrganization(org.CrmOrganizationId); + } + + } + catch (Exception ex) + { + Log.WriteError(String.Format("Error deleting '{0}' {1}", item.Name, item.GetType().Name), ex); + } + } + base.DeleteServiceItems(items); + + } + + #endregion + + #region Log + + private static void EndLog(string message, ResultObject res, string errorCode, Exception ex) + { + if (res != null) + { + res.IsSuccess = false; + + if (!string.IsNullOrEmpty(errorCode)) + res.ErrorCodes.Add(errorCode); + } + + if (ex != null) + HostedSolutionLog.LogError(ex); + + HostedSolutionLog.LogEnd(message); + } + + private static void EndLog(string message, ResultObject res, string errorCode) + { + EndLog(message, res, errorCode, null); + } + + private static void EndLog(string message, ResultObject res) + { + EndLog(message, res, null); + } + + private static void EndLog(string message) + { + EndLog(message, null); + } + + private static T StartLog(string message) where T : ResultObject, new() + { + HostedSolutionLog.LogStart(message); + T res = new T(); + res.IsSuccess = true; + return res; + } + + private static void StartLog(string message) + { + HostedSolutionLog.LogStart(message); + } + + #endregion + + #region User + + public virtual UserResult CreateCRMUser(OrganizationUser user, string orgName, Guid organizationId, Guid baseUnitId, int CALType) + { + return CreateCRMUserInternal(user, orgName, organizationId, baseUnitId, CALType); + } + + internal virtual UserResult CreateCRMUserInternal(OrganizationUser user, string orgName, Guid organizationId, Guid businessUnitId, int CALType) + { + UserResult res = StartLog("CreateCRMUserInternal"); + + try + { + if (user == null) + throw new ArgumentNullException("user"); + + if (string.IsNullOrEmpty(orgName)) + throw new ArgumentNullException("orgName"); + + if (organizationId == Guid.Empty) + throw new ArgumentException("organizationId"); + + if (businessUnitId == Guid.Empty) + throw new ArgumentException("businessUnitId"); + + try + { + OrganizationServiceProxy _serviceProxy = GetOrganizationProxy(orgName); + + + string ldap = ""; + Guid guid = RetrieveSystemUser(user.DomainUserName, user.FirstName, user.LastName, CRMSysAdminRoleStr, _serviceProxy, ref ldap, CALType); + + user.CrmUserId = guid; + res.Value = user; + + } + catch (Exception ex) + { + EndLog("CreateCRMUserInternal", res, CrmErrorCodes.CANNOT_CREATE_CRM_USER, ex); + return res; + } + } + catch (Exception ex) + { + EndLog("CreateCRMUserInternal", res, CrmErrorCodes.CANNOT_CREATE_CRM_USER_GENERAL_ERROR, ex); + return res; + + } + + EndLog("CreateCRMUserInternal"); + return res; + } + + protected virtual Guid CreateSystemUser(String userName, String firstName, + String lastName, String domain, String roleStr, + OrganizationServiceProxy serviceProxy, ref String ldapPath, int CALType) + { + + if (serviceProxy.ServiceConfiguration.AuthenticationType == AuthenticationProviderType.LiveId || + serviceProxy.ServiceConfiguration.AuthenticationType == AuthenticationProviderType.OnlineFederation) + throw new Exception(String.Format("To run this sample, {0} {1} must be an active system user in your Microsoft Dynamics CRM Online organization.", firstName, lastName)); + + Guid userId = Guid.Empty; + + Microsoft.Xrm.Sdk.Query.QueryExpression businessUnitQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression + { + EntityName = BusinessUnit.EntityLogicalName, + ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("businessunitid"), + Criteria = + { + Conditions = + { + new Microsoft.Xrm.Sdk.Query.ConditionExpression("parentbusinessunitid", + Microsoft.Xrm.Sdk.Query.ConditionOperator.Null) + } + } + }; + + BusinessUnit defaultBusinessUnit = serviceProxy.RetrieveMultiple( + businessUnitQuery).Entities[0].ToEntity(); + + // Retrieve the specified security role. + Role role = RetrieveRoleByName(serviceProxy, roleStr); + + // CALType and AccessMode + int accessmode = CALType / 10; + int caltype = CALType % 10; + + //Create a new system user. + SystemUser user = new SystemUser + { + DomainName = userName, + FirstName = firstName, + LastName = lastName, + BusinessUnitId = new EntityReference + { + LogicalName = BusinessUnit.EntityLogicalName, + Name = BusinessUnit.EntityLogicalName, + Id = defaultBusinessUnit.Id + }, + CALType = new OptionSetValue(caltype), + AccessMode = new OptionSetValue(accessmode) + }; + userId = serviceProxy.Create(user); + + // Assign the security role to the newly created Microsoft Dynamics CRM user. + AssociateRequest associate = new AssociateRequest() + { + Target = new EntityReference(SystemUser.EntityLogicalName, userId), + RelatedEntities = new EntityReferenceCollection() + { + new EntityReference(Role.EntityLogicalName, role.Id), + }, + Relationship = new Relationship("systemuserroles_association") + }; + serviceProxy.Execute(associate); + + return userId; + } + + + protected virtual Guid RetrieveSystemUser(String userName, String firstName, + String lastName, String roleStr, OrganizationServiceProxy serviceProxy, + ref String ldapPath, + int CALType) + { + String domain; + Guid userId = Guid.Empty; + + if (serviceProxy == null) + throw new ArgumentNullException("serviceProxy"); + + if (String.IsNullOrWhiteSpace(userName)) + throw new ArgumentNullException("UserName"); + + if (String.IsNullOrWhiteSpace(firstName)) + throw new ArgumentNullException("FirstName"); + + if (String.IsNullOrWhiteSpace(lastName)) + throw new ArgumentNullException("LastName"); + + if (String.IsNullOrWhiteSpace(roleStr)) + throw new ArgumentNullException("Role"); + + // Obtain the current user's information. + Microsoft.Crm.Sdk.Messages.WhoAmIRequest who = new Microsoft.Crm.Sdk.Messages.WhoAmIRequest(); + Microsoft.Crm.Sdk.Messages.WhoAmIResponse whoResp = (Microsoft.Crm.Sdk.Messages.WhoAmIResponse)serviceProxy.Execute(who); + Guid currentUserId = whoResp.UserId; + + SystemUser currentUser = + serviceProxy.Retrieve(SystemUser.EntityLogicalName, currentUserId, new Microsoft.Xrm.Sdk.Query.ColumnSet("domainname")).ToEntity(); + + // Extract the domain and create the LDAP object. + String[] userPath = currentUser.DomainName.Split(new char[] { '\\' }); + if (userPath.Length > 1) + domain = userPath[0] + "\\"; + else + domain = String.Empty; + + // Create the system user in Microsoft Dynamics CRM if the user doesn't + // already exist. + Microsoft.Xrm.Sdk.Query.QueryExpression userQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression + { + EntityName = SystemUser.EntityLogicalName, + ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("systemuserid"), + Criteria = + { + FilterOperator = Microsoft.Xrm.Sdk.Query.LogicalOperator.Or, + Filters = + { + new Microsoft.Xrm.Sdk.Query.FilterExpression + { + FilterOperator = Microsoft.Xrm.Sdk.Query.LogicalOperator.And, + Conditions = + { + new Microsoft.Xrm.Sdk.Query.ConditionExpression("domainname", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, domain + userName) + } + }, + new Microsoft.Xrm.Sdk.Query.FilterExpression + { + FilterOperator = Microsoft.Xrm.Sdk.Query.LogicalOperator.And, + Conditions = + { + new Microsoft.Xrm.Sdk.Query.ConditionExpression("firstname", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, firstName), + new Microsoft.Xrm.Sdk.Query.ConditionExpression("lastname", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, lastName) + } + } + } + + } + }; + + DataCollection existingUsers = (DataCollection)serviceProxy.RetrieveMultiple(userQuery).Entities; + + SystemUser existingUser = null; + if (existingUsers.Count > 0) + existingUser = existingUsers[0].ToEntity(); + + if (existingUser != null) + { + userId = existingUser.SystemUserId.Value; + + // Check to make sure the user is assigned the correct role. + Role role = RetrieveRoleByName(serviceProxy, roleStr); + + // Associate the user with the role when needed. + if (!UserInRole(serviceProxy, userId, role.Id)) + { + AssociateRequest associate = new AssociateRequest() + { + Target = new EntityReference(SystemUser.EntityLogicalName, userId), + RelatedEntities = new EntityReferenceCollection() + { + new EntityReference(Role.EntityLogicalName, role.Id) + }, + Relationship = new Relationship("systemuserroles_association") + }; + serviceProxy.Execute(associate); + } + + } + else + { + userId = CreateSystemUser(userName, firstName, lastName, domain, + roleStr, serviceProxy, ref ldapPath, CALType); + } + + return userId; + } + + public virtual CrmUserResult GetCrmUserById(Guid crmUserId, string orgName) + { + return GetCrmUserByIdInternal(crmUserId, orgName); + } + + internal virtual CrmUserResult GetCrmUserByIdInternal(Guid crmUserId, string orgName) + { + CrmUserResult ret = StartLog("GetCrmUserByIdInternal"); + + try + { + if (crmUserId == Guid.Empty) + throw new ArgumentNullException("crmUserId"); + + if (string.IsNullOrEmpty(orgName)) + throw new ArgumentNullException("orgName"); + + OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); + + SystemUser retruveUser = + serviceProxy.Retrieve(SystemUser.EntityLogicalName, crmUserId, new Microsoft.Xrm.Sdk.Query.ColumnSet("domainname", "businessunitid", "accessmode", "isdisabled", "caltype")).ToEntity(); + + CrmUser user = null; + + if (retruveUser != null) + { + user = new CrmUser(); + user.BusinessUnitId = retruveUser.BusinessUnitId.Id; + user.CRMUserId = retruveUser.SystemUserId.Value; + user.ClientAccessMode = (CRMUserAccessMode)retruveUser.AccessMode.Value; + user.IsDisabled = (bool)retruveUser.IsDisabled; + user.CALType = retruveUser.CALType.Value; + + ret.Value = user; + } + } + catch (Exception ex) + { + EndLog("GetCrmUserByIdInternal", ret, CrmErrorCodes.CANONT_GET_CRM_USER_BY_ID, ex); + return ret; + } + + EndLog("GetCrmUserByIdInternal"); + return ret; + } + + internal virtual CrmUserResult GetCrmUserByDomainNameInternal(string domainName, string orgName) + { + CrmUserResult ret = StartLog("GetCrmUserByDomainNameInternal"); + + try + { + if (string.IsNullOrEmpty(domainName)) + throw new ArgumentNullException("domainName"); + + if (string.IsNullOrEmpty(orgName)) + throw new ArgumentNullException("orgName"); + + + OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); + + Microsoft.Xrm.Sdk.Query.QueryExpression usereQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression + { + EntityName = SystemUser.EntityLogicalName, + ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("domainname", "businessunitid", "accessmode", "isdisabled", "systemuserid", "caltype"), + }; + + EntityCollection users = serviceProxy.RetrieveMultiple(usereQuery); + + foreach (Entity entityuser in users.Entities) + { + SystemUser sysuser = entityuser.ToEntity(); + + if (sysuser == null) continue; + if (sysuser.DomainName != domainName) continue; + + CrmUser user = new CrmUser(); + user.BusinessUnitId = sysuser.BusinessUnitId.Id; + user.CRMUserId = sysuser.SystemUserId.Value; + user.ClientAccessMode = (CRMUserAccessMode)sysuser.AccessMode.Value; + user.IsDisabled = sysuser.IsDisabled.Value; + user.CALType = sysuser.CALType.Value; + ret.Value = user; + } + } + catch (Exception ex) + { + EndLog("GetCrmUserByDomainNameInternal", ret, CrmErrorCodes.CANONT_GET_CRM_USER_BY_DOMAIN_NAME, ex); + return ret; + } + + EndLog("GetCrmUserByDomainNameInternal"); + return ret; + } + + public virtual CrmUserResult GetCrmUserByDomainName(string domainName, string orgName) + { + return GetCrmUserByDomainNameInternal(domainName, orgName); + } + + public virtual ResultObject ChangeUserState(bool disable, string orgName, Guid crmUserId) + { + return ChangeUserStateInternal(disable, orgName, crmUserId); + } + + internal virtual ResultObject ChangeUserStateInternal(bool disable, string orgName, Guid crmUserId) + { + ResultObject res = StartLog("ChangeUserStateInternal"); + + res.IsSuccess = true; + try + { + if (crmUserId == Guid.Empty) + throw new ArgumentNullException("crmUserId"); + + if (string.IsNullOrEmpty(orgName)) + throw new ArgumentNullException("orgName"); + + OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); + + // Retrieve a user. + SystemUser user = serviceProxy.Retrieve(SystemUser.EntityLogicalName, + crmUserId, new Microsoft.Xrm.Sdk.Query.ColumnSet(new String[] { "systemuserid", "firstname", "lastname" })).ToEntity(); + + if (user != null) + { + Microsoft.Crm.Sdk.Messages.SetStateRequest request = new Microsoft.Crm.Sdk.Messages.SetStateRequest() + { + EntityMoniker = user.ToEntityReference(), + + // Required by request but always valued at -1 in this context. + Status = new OptionSetValue(-1), + + // Sets the user to disabled. + State = disable ? new OptionSetValue(-1) : new OptionSetValue(0) + }; + + serviceProxy.Execute(request); + + } + } + catch (Exception ex) + { + EndLog("ChangeUserStateInternal", res, CrmErrorCodes.CANNOT_CHANGE_USER_STATE, ex); + return res; + } + + + EndLog("ChangeUserStateInternal"); + return res; + } + + public virtual ResultObject SetUserCALType(string orgName, Guid userId, int CALType) + { + return SetUserCALTypeInternal(orgName, userId, CALType); + } + + internal virtual ResultObject SetUserCALTypeInternal(string orgName, Guid userId, int CALType) + { + ResultObject ret = StartLog("SetUserCALTypeInternal"); + + try + { + if (userId == Guid.Empty) + throw new ArgumentNullException("crmUserId"); + + if (string.IsNullOrEmpty(orgName)) + throw new ArgumentNullException("orgName"); + + OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); + + SystemUser user = + serviceProxy.Retrieve(SystemUser.EntityLogicalName, userId, new Microsoft.Xrm.Sdk.Query.ColumnSet("domainname", "businessunitid", "accessmode", "isdisabled", "caltype")).ToEntity(); + + // CALType and AccessMode + int accessmode = CALType / 10; + int caltype = CALType % 10; + + user.CALType = new OptionSetValue(caltype); + user.AccessMode = new OptionSetValue(accessmode); + + serviceProxy.Update(user); + + } + catch (Exception ex) + { + EndLog("SetUserCALTypeInternal", ret, CrmErrorCodes.CANONT_GET_CRM_USER_BY_ID, ex); + return ret; + } + + EndLog("SetUserCALTypeInternal"); + return ret; + } + + #endregion + + #region Role + + protected virtual Role RetrieveRoleByName(OrganizationServiceProxy serviceProxy, + String roleSplitStr) + { + string[] RolesStr = roleSplitStr.Split(';'); + + foreach (string roleStr in RolesStr) + { + + Microsoft.Xrm.Sdk.Query.QueryExpression roleQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression + { + EntityName = Role.EntityLogicalName, + ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("roleid"), + Criteria = + { + Conditions = + { + new Microsoft.Xrm.Sdk.Query.ConditionExpression("name", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, roleStr) + } + } + }; + + DataCollection roles = serviceProxy.RetrieveMultiple(roleQuery).Entities; + + if (roles.Count > 0) return roles[0].ToEntity(); + } + + return null; + } + + protected virtual bool UserInRole(OrganizationServiceProxy serviceProxy, + Guid userId, Guid roleId) + { + // Establish a SystemUser link for a query. + Microsoft.Xrm.Sdk.Query.LinkEntity systemUserLink = new Microsoft.Xrm.Sdk.Query.LinkEntity() + { + LinkFromEntityName = SystemUserRoles.EntityLogicalName, + LinkFromAttributeName = "systemuserid", + LinkToEntityName = SystemUser.EntityLogicalName, + LinkToAttributeName = "systemuserid", + LinkCriteria = + { + Conditions = + { + new Microsoft.Xrm.Sdk.Query.ConditionExpression( + "systemuserid", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, userId) + } + } + }; + + // Build the query. + Microsoft.Xrm.Sdk.Query.QueryExpression query = new Microsoft.Xrm.Sdk.Query.QueryExpression() + { + EntityName = Role.EntityLogicalName, + ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("roleid"), + LinkEntities = + { + new Microsoft.Xrm.Sdk.Query.LinkEntity() + { + LinkFromEntityName = Role.EntityLogicalName, + LinkFromAttributeName = "roleid", + LinkToEntityName = SystemUserRoles.EntityLogicalName, + LinkToAttributeName = "roleid", + LinkEntities = {systemUserLink} + } + }, + Criteria = + { + Conditions = + { + new Microsoft.Xrm.Sdk.Query.ConditionExpression("roleid", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, roleId) + } + } + }; + + // Retrieve matching roles. + EntityCollection ec = serviceProxy.RetrieveMultiple(query); + + if (ec.Entities.Count > 0) + return true; + + return false; + } + + public virtual CrmRolesResult GetAllCrmRoles(string orgName, Guid businessUnitId) + { + return GetAllCrmRolesInternal(orgName, businessUnitId); + } + + public virtual CrmRolesResult GetCrmUserRoles(string orgName, Guid userId) + { + return GetCrmUserRolesInternal(userId, orgName); + } + + public virtual EntityCollection GetUserRoles(Guid userId, string orgName) + { + OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); + + // Establish a SystemUser link for a query. + Microsoft.Xrm.Sdk.Query.LinkEntity systemUserLink = new Microsoft.Xrm.Sdk.Query.LinkEntity() + { + LinkFromEntityName = SystemUserRoles.EntityLogicalName, + LinkFromAttributeName = "systemuserid", + LinkToEntityName = SystemUser.EntityLogicalName, + LinkToAttributeName = "systemuserid", + LinkCriteria = + { + Conditions = + { + new Microsoft.Xrm.Sdk.Query.ConditionExpression( + "systemuserid", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, userId) + } + } + }; + + // Build the query. + Microsoft.Xrm.Sdk.Query.QueryExpression query = new Microsoft.Xrm.Sdk.Query.QueryExpression() + { + EntityName = Role.EntityLogicalName, + ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("roleid"), + LinkEntities = + { + new Microsoft.Xrm.Sdk.Query.LinkEntity() + { + LinkFromEntityName = Role.EntityLogicalName, + LinkFromAttributeName = "roleid", + LinkToEntityName = SystemUserRoles.EntityLogicalName, + LinkToAttributeName = "roleid", + LinkEntities = {systemUserLink} + } + } + }; + + // Retrieve matching roles. + EntityCollection relations = serviceProxy.RetrieveMultiple(query); + + return relations; + } + + internal virtual CrmRolesResult GetCrmUserRolesInternal(Guid userId, string orgName) + { + CrmRolesResult res = StartLog("GetCrmUserRolesInternal"); + + try + { + EntityCollection relations; + + if (userId == Guid.Empty) + throw new ArgumentException("userId"); + + if (string.IsNullOrEmpty(orgName)) + throw new ArgumentNullException("orgName"); + + try + { + relations = GetUserRoles(userId, orgName); + } + catch (Exception ex) + { + EndLog("GetCrmUserRolesInternal", res, CrmErrorCodes.CANNOT_GET_CRM_USER_ROLES, ex); + return res; + } + + try + { + res.Value = FillCrmRoles(relations, true, Guid.Empty); + } + catch (Exception ex) + { + EndLog("GetCrmUserRolesInternal", res, CrmErrorCodes.CANNOT_FILL_ROLES_COLLECTION, ex); + return res; + } + } + catch (Exception ex) + { + EndLog("GetCrmUserRolesInternal", res, CrmErrorCodes.GET_CRM_USER_ROLE_GENERAL_ERROR, ex); + return res; + } + + EndLog("GetCrmUserRolesInternal"); + return res; + } + + protected static string excludedRolesStr = ";пользователь поддержки;support user;"; + + protected virtual List FillCrmRoles(EntityCollection entities, bool isUserRole, Guid businessUnitId) + { + List res = new List(); + + foreach (Entity current in entities.Entities) + { + Role role = current.ToEntity(); + + if (role == null) continue; + + if (businessUnitId != Guid.Empty) + { + if (businessUnitId != role.BusinessUnitId.Id) + continue; + } + + string roleName = role.Name; + + if (roleName != null) + if (excludedRolesStr.IndexOf(";" + roleName.ToLower() + ";") != -1) + continue; + + CrmRole crmRole = new CrmRole(); + crmRole.IsCurrentUserRole = isUserRole; + crmRole.RoleId = (Guid)role.RoleId; + crmRole.RoleName = roleName; + + res.Add(crmRole); + } + + return res; + } + + protected virtual List FillCrmRoles(EntityCollection entities, Guid businessUnitId) + { + return FillCrmRoles(entities, false, businessUnitId); + } + + internal virtual CrmRolesResult GetAllCrmRolesInternal(string orgName, Guid businessUnitId) + { + CrmRolesResult res = StartLog("GetAllCrmRoles"); + + try + { + if (string.IsNullOrEmpty(orgName)) + throw new ArgumentNullException("orgName"); + + EntityCollection roles; + try + { + OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); + + Microsoft.Xrm.Sdk.Query.QueryExpression roleQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression + { + EntityName = Role.EntityLogicalName, + ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet(new string[] { "roleid", "name", "businessunitid" }), + }; + + roles = serviceProxy.RetrieveMultiple(roleQuery); + + + } + catch (Exception ex) + { + EndLog("GetAllCrmRoles", res, CrmErrorCodes.CANNOT_GET_ALL_CRM_ROLES, ex); + return res; + } + + try + { + List crmRoles = FillCrmRoles(roles, businessUnitId); + res.Value = crmRoles; + } + catch (Exception ex) + { + EndLog("GetAllCrmRoles", res, CrmErrorCodes.CANNOT_FILL_ROLES_COLLECTION, ex); + return res; + } + } + catch (Exception ex) + { + EndLog("GetAllCrmRoles", res, CrmErrorCodes.GET_ALL_CRM_ROLES_GENERAL_ERROR, ex); + return res; + } + + EndLog("GetAllCrmRoles"); + return res; + } + + public virtual ResultObject SetUserRoles(string orgName, Guid userId, Guid[] roles) + { + return SetUserRolesInternal(orgName, userId, roles); + } + + internal virtual ResultObject SetUserRolesInternal(string orgName, Guid userId, Guid[] roles) + { + CrmRolesResult res = StartLog("SetUserRolesInternal"); + + try + { + if (string.IsNullOrEmpty(orgName)) + throw new ArgumentNullException("orgName"); + + if (userId == Guid.Empty) + throw new ArgumentException("userId"); + + if (roles == null) + throw new ArgumentNullException("roles"); + + OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); + + + CrmRolesResult tmpRoles = GetCrmUserRoles(orgName, userId); + res.ErrorCodes.AddRange(tmpRoles.ErrorCodes); + + if (!tmpRoles.IsSuccess) + return res; + + List remRoles = new List(); + + for (int i = 0; i < tmpRoles.Value.Count; i++) + { + if (Array.Find(roles, delegate(Guid current) { return current == tmpRoles.Value[i].RoleId; }) == Guid.Empty) + { + remRoles.Add(tmpRoles.Value[i].RoleId); + } + } + + try + { + DisassociateRequest removeRole = new DisassociateRequest() + { + Target = new EntityReference(SystemUser.EntityLogicalName, userId), + RelatedEntities = new EntityReferenceCollection(), + Relationship = new Relationship("systemuserroles_association") + }; + + for (int i = 0; i < remRoles.Count; i++) + removeRole.RelatedEntities.Add(new EntityReference(Role.EntityLogicalName, remRoles[i])); + + serviceProxy.Execute(removeRole); + + } + catch (Exception ex) + { + EndLog("SetUserRolesInternal", res, CrmErrorCodes.CANNOT_REMOVE_CRM_USER_ROLES, ex); + return res; + } + + + try + { + // Assign the security role to the newly created Microsoft Dynamics CRM user. + AssociateRequest associate = new AssociateRequest() + { + Target = new EntityReference(SystemUser.EntityLogicalName, userId), + RelatedEntities = new EntityReferenceCollection(), + Relationship = new Relationship("systemuserroles_association") + }; + + for (int i = 0; i < roles.Length; i++) + { + bool find = false; + foreach (CrmRole current in tmpRoles.Value) + { + if (current.RoleId == roles[i]) + find = true; + } + if (find) continue; + + associate.RelatedEntities.Add(new EntityReference(Role.EntityLogicalName, roles[i])); + } + + serviceProxy.Execute(associate); + } + catch (Exception ex) + { + EndLog("SetUserRolesInternal", res, CrmErrorCodes.CANNOT_ASSIGN_CRM_USER_ROLES, ex); + return res; + } + + } + catch (Exception ex) + { + EndLog("SetUserRolesInternal", res, CrmErrorCodes.CANNOT_SET_CRM_USER_ROLES_GENERAL_ERROR, ex); + return res; + } + + + EndLog("SetUserRolesInternal"); + return res; + + } + + #endregion + + #region Business Units + + internal virtual CRMBusinessUnitsResult GetOrganizationBusinessUnitsInternal(Guid organizationId, string orgName) + { + CRMBusinessUnitsResult res = StartLog("GetOrganizationBusinessUnitsInternal"); + + try + { + if (organizationId == Guid.Empty) + throw new ArgumentException("organizationId"); + + if (string.IsNullOrEmpty(orgName)) + throw new ArgumentNullException("orgName"); + + OrganizationServiceProxy serviceProxy; + + try + { + serviceProxy = GetOrganizationProxy(orgName); + } + catch (Exception ex) + { + EndLog("GetOrganizationBusinessUnitsInternal", res, CrmErrorCodes.CANNOT_GET_CRM_SERVICE, ex); + return res; + } + + DataCollection BusinessUnits; + + try + { + + Microsoft.Xrm.Sdk.Query.QueryExpression businessUnitQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression + { + EntityName = BusinessUnit.EntityLogicalName, + ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet(new string[] { "businessunitid", "name" }), + Criteria = + { + Conditions = + { + new Microsoft.Xrm.Sdk.Query.ConditionExpression("parentbusinessunitid", + Microsoft.Xrm.Sdk.Query.ConditionOperator.Null) + } + } + }; + + BusinessUnits = serviceProxy.RetrieveMultiple( + businessUnitQuery).Entities; + + } + catch (Exception ex) + { + EndLog("GetOrganizationBusinessUnitsInternal", res, CrmErrorCodes.CANNOT_GET_CRM_BUSINESS_UNITS, ex); + return res; + } + + List businessUnits = new List(); + + try + { + for (int i = 0; i < BusinessUnits.Count; i++) + { + BusinessUnit bu = BusinessUnits[i].ToEntity(); + + CRMBusinessUnit unit = new CRMBusinessUnit(); + unit.BusinessUnitId = (Guid)bu.BusinessUnitId; + unit.BusinessUnitName = bu.Name; + + if (unit.BusinessUnitName == null) + unit.BusinessUnitName = "default"; + + businessUnits.Add(unit); + + } + + res.Value = businessUnits; + } + catch (Exception ex) + { + EndLog("GetOrganizationBusinessUnitsInternal", res, CrmErrorCodes.CANNOT_FILL_BASE_UNITS_COLLECTION, + ex); + return res; + } + } + catch (Exception ex) + { + EndLog("GetOrganizationBusinessUnitsInternal", res, CrmErrorCodes.GET_ORGANIZATION_BUSINESS_UNITS_GENERAL_ERROR, + ex); + return res; + + } + + EndLog("GetOrganizationBusinessUnitsInternal"); + return res; + + } + + public virtual CRMBusinessUnitsResult GetOrganizationBusinessUnits(Guid organizationId, string orgName) + { + return GetOrganizationBusinessUnitsInternal(organizationId, orgName); + } + + #endregion + + #region Version + + public virtual string CRMServerVersion + { + get + { + string value = ""; + try + { + RegistryKey root = Registry.LocalMachine; + RegistryKey rk = root.OpenSubKey("SOFTWARE\\Microsoft\\MSCRM"); + + if (rk == null) + rk = root.OpenSubKey("SOFTWARE\\Wow6432Node\\Microsoft\\MSCRM"); + + if (rk != null) + { + value = (string)rk.GetValue("CRM_Server_Version", null); + rk.Close(); + } + } + catch (Exception ex) + { + Log.WriteError(ex); + } + + return value; + } + + } + + public override bool IsInstalled() + { + return false; + } + + #endregion + + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/CRMProvider2011.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/CRMProvider2011.cs index 44d03f40..c787aaca 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/CRMProvider2011.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/CRMProvider2011.cs @@ -1,1961 +1,46 @@ -using System; -using System.Collections.Generic; -using System.Data; -using System.Data.SqlClient; -using System.Globalization; -using System.IO; -using System.Net; -using System.Reflection; -using System.Net.Security; -using System.Security.Principal; -using System.Security.Cryptography.X509Certificates; -using System.Threading; -using System.ServiceModel.Description; -using System.Text.RegularExpressions; -using Microsoft.Win32; -using WebsitePanel.Providers.Common; -using WebsitePanel.Providers.ResultObjects; -using WebsitePanel.Server.Utils; +// Copyright (c) 2012 - 2013, 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. + +using System; using WebsitePanel.Providers.HostedSolution; -using WebsitePanel.Providers; -using WebsitePanel.Providers.Utils; -using Microsoft.Xrm.Sdk; -using Microsoft.Xrm.Sdk.Query; -using Microsoft.Xrm.Sdk.Discovery; -using Microsoft.Xrm.Sdk.Client; -using Microsoft.Xrm.Sdk.Deployment; -using Microsoft.Xrm.Sdk.Messages; namespace WebsitePanel.Providers.HostedSolution { - public class CRMProvider2011 : HostingServiceProviderBase, ICRM + public class CRMProvider2011 : CRMBase { - private static string crmPath = null; - - #region Properties - - private string UserName - { - get { return ProviderSettings[Constants.UserName]; } - } - - private string Password - { - get { return ProviderSettings[Constants.Password]; } - } - - private string SqlServer - { - get { return ProviderSettings[Constants.SqlServer]; } - } - - private string ReportingServer - { - get { return ProviderSettings[Constants.ReportingServer]; } - } - - private string CRMServiceUrl - { - get - { - string uri = ProviderSettings[Constants.DeploymentWebService]; - if (String.IsNullOrEmpty(uri)) uri = ProviderSettings[Constants.AppRootDomain]; - string cRMServiceUrl = "https://" + uri + ":" + ProviderSettings[Constants.Port] + "/XRMDeployment/2011/Deployment.svc"; - return cRMServiceUrl; - } - } - - private string CRMDiscoveryUri - { - get - { - string uri = ProviderSettings[Constants.DiscoveryWebService]; - if (String.IsNullOrEmpty(uri)) uri = ProviderSettings[Constants.AppRootDomain]; - string cRMDiscoveryUri = "https://" + uri + ":" + ProviderSettings[Constants.Port] + "/XRMServices/2011/Discovery.svc"; - return cRMDiscoveryUri; - } - } - - private static string CrmPath - { - get - { - if (string.IsNullOrEmpty(crmPath)) - { - RegistryKey root = Registry.LocalMachine; - RegistryKey rk = root.OpenSubKey("SOFTWARE\\Microsoft\\MSCRM"); - if (rk != null) - { - crmPath = (string)rk.GetValue("CRM_Server_InstallDir", string.Empty); - } - } - return crmPath; - } - } - - #endregion - - - #region Static constructor - - static CRMProvider2011() - { - AppDomain.CurrentDomain.AssemblyResolve += ResolveCRMAssembly; - } - - #endregion - - static Assembly ResolveCRMAssembly(object sender, ResolveEventArgs args) - { - var loadedAssembly = default(Assembly); - // Ensure we load DLLs only. - if (args.Name.ToLower().Contains("microsoft.crm") || args.Name.ToLower().Contains("antixsslibrary")) - { - // - string crmToolsPath = Path.Combine(CrmPath, "tools"); - // - string path = Path.Combine(crmToolsPath, args.Name.Split(',')[0] + ".dll"); - // Call to load an assembly only if its existence is confirmed. - if (File.Exists(path)) - { - loadedAssembly = Assembly.LoadFrom(path); - } - } - // - return loadedAssembly; - } - - private bool CheckCRMWebServicesAccess() - { - Log.WriteStart("CheckCRMWebServicesAccess"); - bool ret = false; - HttpWebResponse response = null; - HttpWebRequest request; - - try - { - WindowsIdentity.GetCurrent(); - - request = WebRequest.Create(CRMServiceUrl) as HttpWebRequest; - - if (request != null) - { - request.UseDefaultCredentials = true; - request.Credentials = CredentialCache.DefaultCredentials; - response = request.GetResponse() as HttpWebResponse; - - } - if (response != null) - ret = (response.StatusCode == HttpStatusCode.OK); - } - catch (Exception ex) - { - Log.WriteError(ex); - ret = false; - } - - Log.WriteEnd("CheckCRMWebServicesAccess"); - return ret; - } - - private static bool CheckPermissions() - { - Log.WriteStart("CheckPermissions"); - bool res = false; - try - { - string group = "PrivUserGroup"; - string user = WindowsIdentity.GetCurrent().Name.Split(new char[] { '\\' })[1]; - res = ActiveDirectoryUtils.IsUserInGroup(user, group); - } - catch (Exception ex) - { - Log.WriteError(ex); - res = false; - } - - Log.WriteEnd("CheckPermissions"); - return res; - } - - private string GetDataBaseName(Guid organizationId) - { - string crmDatabaseName = "MSCRM_CONFIG"; - string databasename = ""; - - SqlConnection connection = null; - try - { - connection = new SqlConnection(); - connection.ConnectionString = - string.Format("Server={1};Initial Catalog={0};Integrated Security=SSPI", - crmDatabaseName, SqlServer); - - connection.Open(); - - string commandText = string.Format("SELECT DatabaseName FROM dbo.Organization where id = '{0}'", organizationId); - SqlCommand command = new SqlCommand(commandText, connection); - databasename = command.ExecuteScalar().ToString(); - - } - catch (Exception ex) - { - Log.WriteError(ex); - } - finally - { - if (connection != null) - connection.Dispose(); - } - - return databasename; - } - - public long GetDBSize(Guid organizationId) - { - Log.WriteStart("GetDBSize"); - long res = 0; - - string databasename = GetDataBaseName(organizationId); - - SqlConnection connection = null; - try - { - connection = new SqlConnection(); - connection.ConnectionString = - string.Format("Server={1};Initial Catalog={0};Integrated Security=SSPI", - databasename, SqlServer); - - connection.Open(); - - string commandText = "SELECT ((dbsize ) * 8192 ) size FROM " + // + logsize - "( " + - "SELECT SUM(CONVERT(BIGINT,CASE WHEN status & 64 = 0 THEN size ELSE 0 END)) dbsize " + - ", SUM(CONVERT(BIGINT,CASE WHEN status & 64 <> 0 THEN size ELSE 0 END)) logsize " + - "FROM dbo.sysfiles " + - ") big"; - - SqlCommand command = new SqlCommand(commandText, connection); - res = (long)command.ExecuteScalar(); - - } - catch (Exception ex) - { - Log.WriteError(ex); - } - finally - { - if (connection != null) - connection.Dispose(); - - } - - Log.WriteEnd("GetDBSize"); - return res; - - } - - public long GetMaxDBSize(Guid organizationId) - { - Log.WriteStart("GetMaxDBSize"); - long res = 0; - - string databasename = GetDataBaseName(organizationId); - - SqlConnection connection = null; - try - { - connection = new SqlConnection(); - connection.ConnectionString = - string.Format("Server={1};Initial Catalog={0};Integrated Security=SSPI", - databasename, SqlServer); - - connection.Open(); - - string commandText = "SELECT SUM(CONVERT(BIGINT,CASE WHEN status & 64 = 0 THEN maxsize ELSE 0 END)) dbsize FROM dbo.sysfiles"; - - SqlCommand command = new SqlCommand(commandText, connection); - res = (long)command.ExecuteScalar(); - if (res > 0) res = res * 8192; - - } - catch (Exception ex) - { - Log.WriteError(ex); - } - finally - { - if (connection != null) - connection.Dispose(); - - } - - Log.WriteEnd("GetMaxDBSize"); - return res; - - } - - public ResultObject SetMaxDBSize(Guid organizationId, long maxSize) - { - ResultObject res = StartLog("SetMaxDBSize"); - - string databasename = GetDataBaseName(organizationId); - - SqlConnection connection = null; - try - { - connection = new SqlConnection(); - connection.ConnectionString = - string.Format("Server={1};Initial Catalog={0};Integrated Security=SSPI", - databasename, SqlServer); - - connection.Open(); - - string maxSizeStr = maxSize == -1 ? "UNLIMITED" : (maxSize/(1024*1024)).ToString() +" MB"; - - string commandText = "ALTER DATABASE [" + databasename + "] MODIFY FILE ( NAME = N'mscrm', MAXSIZE = " + maxSizeStr + " )"; - - SqlCommand command = new SqlCommand(commandText, connection); - command.ExecuteNonQuery(); - - res.IsSuccess = true; - - } - catch (Exception ex) - { - EndLog("SetMaxDBSize", res, CrmErrorCodes.CANNOT_CHANGE_CRM_ORGANIZATION_STATE, ex); - } - finally - { - if (connection != null) - connection.Dispose(); - - } - - - EndLog("SetMaxDBSize"); - return res; - } - - private bool CheckOrganizationUnique(string databaseName, string orgName) - { - Log.WriteStart("CheckOrganizationUnique"); - bool res = false; - - SqlConnection connection = null; - try - { - connection = new SqlConnection(); - connection.ConnectionString = - string.Format("Server={1};Initial Catalog={0};Integrated Security=SSPI", - databaseName, SqlServer); - - connection.Open(); - - string commandText = string.Format("SELECT COUNT(*) FROM dbo.Organization WHERE UniqueName = '{0}'", orgName); - SqlCommand command = new SqlCommand(commandText, connection); - int count = (int)command.ExecuteScalar(); - res = count == 0; - - - } - catch (Exception ex) - { - res = false; - Log.WriteError(ex); - } - finally - { - if (connection != null) - connection.Dispose(); - - } - - Log.WriteEnd("CheckOrganizationUnique"); - return res; - } - - private bool CheckSqlServerConnection() - { - Log.WriteStart("CheckSqlServerConnection"); - bool res = false; - SqlConnection connection = null; - try - { - connection = new SqlConnection(); - connection.ConnectionString = - string.Format("server={0}; Integrated Security=SSPI", - SqlServer); - - connection.Open(); - res = true; - } - catch (Exception ex) - { - Log.WriteError(ex); - res = false; - } - finally - { - if (connection != null) - connection.Dispose(); - } - - Log.WriteEnd("CheckSqlServerConnection"); - - return res; - } - - private bool CheckReportServerConnection() - { - Log.WriteStart("CheckReportServerConnection"); - bool ret = false; - HttpWebResponse response = null; - HttpWebRequest request; - - try - { - WindowsIdentity.GetCurrent(); - - request = WebRequest.Create(ReportingServer) as HttpWebRequest; - - if (request != null) - { - request.UseDefaultCredentials = true; - request.Credentials = CredentialCache.DefaultCredentials; - response = request.GetResponse() as HttpWebResponse; - - } - if (response != null) - ret = (response.StatusCode == HttpStatusCode.OK); - } - catch (Exception ex) - { - Log.WriteError(ex); - ret = false; - } - - Log.WriteEnd("CheckReportServerConnection"); - return ret; - } - - private OrganizationResult CheckCrmEnvironment(string strDataBaseName, string organizationUniqueName) - { - OrganizationResult retOrganization = StartLog("CheckCrmEnvironment"); - bool res = CheckSqlServerConnection(); - - if (!res) - { - EndLog("CheckCrmEnvironment", retOrganization, CrmErrorCodes.CRM_SQL_SERVER_ERROR); - return retOrganization; - } - - res = CheckOrganizationUnique(strDataBaseName, organizationUniqueName); - if (!res) - { - EndLog("CheckCrmEnvironment", retOrganization, CrmErrorCodes.CRM_ORGANIZATION_ALREADY_EXISTS); - return retOrganization; - } - - res = CheckReportServerConnection(); - if (!res) - { - EndLog("CheckCrmEnvironment", retOrganization, CrmErrorCodes.CRM_REPORT_SERVER_ERROR); - return retOrganization; - } - - res = CheckPermissions(); - if (!res) - { - EndLog("CheckCrmEnvironment", retOrganization, CrmErrorCodes.CRM_PERMISSIONS_ERROR); - return retOrganization; - } - - res = CheckCRMWebServicesAccess(); - if (!res) - { - EndLog("CheckCrmEnvironment", retOrganization, CrmErrorCodes.CRM_WEB_SERVICE_ERROR); - return retOrganization; - } - - EndLog("CheckCrmEnvironment"); - return retOrganization; - } - - public OrganizationResult CreateOrganization(Guid organizationId, string organizationUniqueName, string organizationFriendlyName, string ou, string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, string initialUserDomainName, string initialUserFirstName, string initialUserLastName, string initialUserPrimaryEmail, string organizationCollation, long maxSize) - { - return CreateOrganizationInternal(organizationId, organizationUniqueName, organizationFriendlyName, ou , baseCurrencyCode, baseCurrencyName, baseCurrencySymbol, initialUserDomainName, initialUserFirstName, initialUserLastName, initialUserPrimaryEmail, organizationCollation, maxSize); - } - - const string CRMSysAdminRoleStr = "Системный администратор;System Administrator"; - - internal OrganizationResult CreateOrganizationInternal(Guid organizationId, string organizationUniqueName, string organizationFriendlyName, string ou, string baseCurrencyCode, string baseCurrencyName, string baseCurrencySymbol, string initialUserDomainName, string initialUserFirstName, string initialUserLastName, string initialUserPrimaryEmail, string organizationCollation, long maxSize) - { - - OrganizationResult ret = StartLog("CreateOrganizationInternal"); - - organizationUniqueName = Regex.Replace(organizationUniqueName, @"[^\dA-Za-z]", "-", RegexOptions.Compiled); - - // calculate UserRootPath - string ldapstr = ""; - - string[] ouItems = ou.Split('.'); - foreach (string ouItem in ouItems) - { - if (ldapstr.Length != 0) ldapstr += ","; - ldapstr += "OU=" + ouItem; - } - - string rootDomain = ServerSettings.ADRootDomain; - string[] domainItems = rootDomain.Split('.'); - foreach (string domainItem in domainItems) - ldapstr += ",DC=" + domainItem; - - ldapstr = @"LDAP://" + rootDomain + "/" + ldapstr; - - - - if (organizationId == Guid.Empty) - throw new ArgumentException("OrganizationId is Guid.Empty"); - - if (string.IsNullOrEmpty(organizationFriendlyName)) - throw new ArgumentNullException("organizationFriendlyName"); - - if (string.IsNullOrEmpty(baseCurrencyCode)) - throw new ArgumentNullException("baseCurrencyCode"); - - if (string.IsNullOrEmpty(baseCurrencySymbol)) - throw new ArgumentNullException("baseCurrencySymbol"); - - if (string.IsNullOrEmpty(initialUserDomainName)) - throw new ArgumentNullException("initialUserDomainName"); - - string strDataBaseName = "MSCRM_CONFIG"; - - OrganizationResult retCheckEn = CheckCrmEnvironment(strDataBaseName, organizationUniqueName); - - if (!retCheckEn.IsSuccess) - { - ret.ErrorCodes.AddRange(retCheckEn.ErrorCodes); - EndLog("CreateOrganizationInternal", ret, null, null); - return ret; - } - - try - { - - Uri serviceUrl = new Uri(CRMServiceUrl); - - DeploymentServiceClient deploymentService = Microsoft.Xrm.Sdk.Deployment.Proxy.ProxyClientHelper.CreateClient(serviceUrl); - if (!String.IsNullOrEmpty(UserName)) - deploymentService.ClientCredentials.Windows.ClientCredential = new NetworkCredential(UserName, Password); - - Microsoft.Xrm.Sdk.Deployment.Organization org = new Microsoft.Xrm.Sdk.Deployment.Organization - { - Id = organizationId, - UniqueName = organizationUniqueName, - FriendlyName = organizationFriendlyName, - SqlServerName = SqlServer, - SrsUrl = ReportingServer, - BaseCurrencyCode = baseCurrencyCode, - BaseCurrencyName = baseCurrencyName, - BaseCurrencySymbol = baseCurrencySymbol, - SqlCollation = organizationCollation, - State = Microsoft.Xrm.Sdk.Deployment.OrganizationState.Enabled - }; - - BeginCreateOrganizationRequest req = new BeginCreateOrganizationRequest - { - Organization = org - }; - - if (!String.IsNullOrEmpty(UserName)) - { - req.SysAdminName = UserName; - } - - BeginCreateOrganizationResponse resp = deploymentService.Execute(req) as BeginCreateOrganizationResponse; - - if (resp == null) - throw new ArgumentException("BeginCreateOrganizationResponse is Null"); - - EntityInstanceId id = new EntityInstanceId(); - id.Name = org.UniqueName; - - Microsoft.Xrm.Sdk.Deployment.OrganizationState OperationState = Microsoft.Xrm.Sdk.Deployment.OrganizationState.Pending; - - int timeout = 30000; - - do - { - Thread.Sleep(timeout); - try - { - Microsoft.Xrm.Sdk.Deployment.Organization getorg - = (Microsoft.Xrm.Sdk.Deployment.Organization)deploymentService.Retrieve(DeploymentEntityType.Organization, id); - OperationState = getorg.State; - } - catch { } - } while ((OperationState != Microsoft.Xrm.Sdk.Deployment.OrganizationState.Enabled) && - (OperationState != Microsoft.Xrm.Sdk.Deployment.OrganizationState.Failed)); - - if (OperationState == Microsoft.Xrm.Sdk.Deployment.OrganizationState.Failed) - throw new ArgumentException("Create organization failed."); - - // update UserRootPath setting - Microsoft.Xrm.Sdk.Deployment.ConfigurationEntity orgSettings = new Microsoft.Xrm.Sdk.Deployment.ConfigurationEntity - { - Id = org.Id, - LogicalName = "Organization" - }; - orgSettings.Attributes = new Microsoft.Xrm.Sdk.Deployment.AttributeCollection(); - orgSettings.Attributes.Add(new KeyValuePair("UserRootPath", ldapstr)); - Microsoft.Xrm.Sdk.Deployment.UpdateAdvancedSettingsRequest reqUpdateSettings = new Microsoft.Xrm.Sdk.Deployment.UpdateAdvancedSettingsRequest - { - Entity = orgSettings - }; - Microsoft.Xrm.Sdk.Deployment.UpdateAdvancedSettingsResponse respUpdateSettings = (Microsoft.Xrm.Sdk.Deployment.UpdateAdvancedSettingsResponse) deploymentService.Execute(reqUpdateSettings); - - // DB size limit - if (maxSize!=-1) - SetMaxDBSize(organizationId, maxSize); - - int tryTimeout = 30000; - int tryCount = 10; - - bool success = false; - int tryItem = 0; - - while (!success) - { - - try - { - Thread.Sleep(tryTimeout); - - OrganizationServiceProxy _serviceProxy = GetOrganizationProxy(organizationUniqueName, 0, 0); - - string ldap = ""; - - Guid SysAdminGuid = RetrieveSystemUser(GetDomainName(initialUserDomainName), initialUserFirstName, initialUserLastName, CRMSysAdminRoleStr, _serviceProxy, ref ldap, 0); - - success = true; - - } - catch (Exception exc) - { - tryItem++; - if (tryItem >= tryCount) - success = true; - } - } - - - } - catch (Exception ex) - { - HostedSolutionLog.LogError(ex); - EndLog("CheckCrmEnvironment", ret, CrmErrorCodes.CREATE_CRM_ORGANIZATION_GENERAL_ERROR, ex); - return ret; - - } - - EndLog("CheckCrmEnvironment"); - - return ret; - } - - private string GetDomainName(string username) - { - string domain = ActiveDirectoryUtils.GetNETBIOSDomainName(ServerSettings.ADRootDomain); - string ret = string.Format(@"{0}\{1}", domain, username); - return ret; - } - - public string[] GetSupportedCollationNames() - { - return GetSupportedCollationNamesInternal(SqlServer); - } - - internal static string[] GetSupportedCollationNamesInternal(string SqlServer) - { - HostedSolutionLog.LogStart("GetSupportedCollationNamesInternal"); - - List ret = new List(); - - string databaseName = "MSCRM_CONFIG"; - - SqlConnection connection = null; - try - { - connection = new SqlConnection(); - connection.ConnectionString = - string.Format("Server={1};Initial Catalog={0};Integrated Security=SSPI", - databaseName, SqlServer); - - connection.Open(); - - string commandText = "select * from fn_helpcollations() where " + - "(name not like '%_WS') AND (name not like '%_KS') AND (name not like '%_100_%') " + - " AND (name not like 'SQL_%') " + - " order by name"; - SqlCommand command = new SqlCommand(commandText, connection); - SqlDataReader reader = command.ExecuteReader(); - - while (reader.Read()) - { - string name = reader["name"] as string; - ret.Add(name); - } - - } - catch (Exception) - { - } - finally - { - if (connection != null) - connection.Dispose(); - - } - - HostedSolutionLog.LogEnd("GetSupportedCollationNamesInternal"); - return ret.ToArray(); - } - - public Currency[] GetCurrencyList() - { - return GetCurrencyListInternal(); - } - - private Currency[] GetCurrencyListInternal() - { - HostedSolutionLog.LogStart("GetCurrencyListInternal"); - List retList = new List(); - - CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures); - - foreach (CultureInfo cultire in cultures) - { - try - { - RegionInfo Region = new RegionInfo(cultire.LCID); - - Console.WriteLine(cultire.NativeName + " " + Region.CurrencyNativeName); - - Currency currency = new Currency(); - currency.RegionName = Region.NativeName; - currency.CurrencyName = Region.CurrencyNativeName; - currency.CurrencyCode = Region.ISOCurrencySymbol; - currency.CurrencySymbol = Region.CurrencySymbol; - retList.Add(currency); - - } - catch - { - continue; - } - } - - retList.Sort(delegate(Currency a, Currency b) { return a.RegionName.CompareTo(b.RegionName); }); - - HostedSolutionLog.LogEnd("GetCurrencyListInternal"); - return retList.ToArray(); - } - - - public ResultObject DeleteOrganization(Guid orgId) - { - return DeleteOrganizationInternal(orgId); - } - - internal ResultObject DeleteOrganizationInternal(Guid orgId) - { - ResultObject res = StartLog("DeleteOrganizationInternal"); - - - res.IsSuccess = true; - try - { - Uri serviceUrl = new Uri(CRMServiceUrl); - - DeploymentServiceClient deploymentService = Microsoft.Xrm.Sdk.Deployment.Proxy.ProxyClientHelper.CreateClient(serviceUrl); - - EntityInstanceId i = new EntityInstanceId(); - i.Id = orgId; //Organisation Id - - Microsoft.Xrm.Sdk.Deployment.Organization org = (Microsoft.Xrm.Sdk.Deployment.Organization)deploymentService.Retrieve(DeploymentEntityType.Organization, i); - - org.State = Microsoft.Xrm.Sdk.Deployment.OrganizationState.Disabled; - - Microsoft.Xrm.Sdk.Deployment.UpdateRequest updateRequest = new Microsoft.Xrm.Sdk.Deployment.UpdateRequest(); - updateRequest.Entity = org; - - deploymentService.Execute(updateRequest); - - } - catch (Exception ex) - { - EndLog("DeleteOrganizationInternal", res, CrmErrorCodes.DELETE_CRM_ORGANIZATION_GENERAL_ERROR, ex); - return res; - - } - - - EndLog("DeleteOrganizationInternal"); - return res; - } - - public override void DeleteServiceItems(ServiceProviderItem[] items) - { - foreach (ServiceProviderItem item in items) - { - try - { - if (item is Organization) - { - Organization org = item as Organization; - DeleteOrganization(org.CrmOrganizationId); - } - - } - catch (Exception ex) - { - Log.WriteError(String.Format("Error deleting '{0}' {1}", item.Name, item.GetType().Name), ex); - } - } - base.DeleteServiceItems(items); - - } - - private static void EndLog(string message, ResultObject res, string errorCode, Exception ex) - { - if (res != null) - { - res.IsSuccess = false; - - if (!string.IsNullOrEmpty(errorCode)) - res.ErrorCodes.Add(errorCode); - } - - if (ex != null) - HostedSolutionLog.LogError(ex); - - HostedSolutionLog.LogEnd(message); - } - - private static void EndLog(string message, ResultObject res, string errorCode) - { - EndLog(message, res, errorCode, null); - } - - private static void EndLog(string message, ResultObject res) - { - EndLog(message, res, null); - } - - private static void EndLog(string message) - { - EndLog(message, null); - } - - private static T StartLog(string message) where T : ResultObject, new() - { - HostedSolutionLog.LogStart(message); - T res = new T(); - res.IsSuccess = true; - return res; - } - - public UserResult CreateCRMUser(OrganizationUser user, string orgName, Guid organizationId, Guid baseUnitId, int CALType) - { - return CreateCRMUserInternal(user, orgName, organizationId, baseUnitId, CALType); - } - - internal UserResult CreateCRMUserInternal(OrganizationUser user, string orgName, Guid organizationId, Guid businessUnitId, int CALType) - { - UserResult res = StartLog("CreateCRMUserInternal"); - - try - { - if (user == null) - throw new ArgumentNullException("user"); - - if (string.IsNullOrEmpty(orgName)) - throw new ArgumentNullException("orgName"); - - if (organizationId == Guid.Empty) - throw new ArgumentException("organizationId"); - - if (businessUnitId == Guid.Empty) - throw new ArgumentException("businessUnitId"); - - try - { - OrganizationServiceProxy _serviceProxy = GetOrganizationProxy(orgName); - - - string ldap = ""; - Guid guid = RetrieveSystemUser(user.DomainUserName, user.FirstName, user.LastName, CRMSysAdminRoleStr, _serviceProxy, ref ldap, CALType); - - user.CrmUserId = guid; - res.Value = user; - - } - catch (Exception ex) - { - EndLog("CreateCRMUserInternal", res, CrmErrorCodes.CANNOT_CREATE_CRM_USER, ex); - return res; - } - } - catch (Exception ex) - { - EndLog("CreateCRMUserInternal", res, CrmErrorCodes.CANNOT_CREATE_CRM_USER_GENERAL_ERROR, ex); - return res; - - } - - EndLog("CreateCRMUserInternal"); - return res; - } - - private static Guid CreateSystemUser(String userName, String firstName, - String lastName, String domain, String roleStr, - OrganizationServiceProxy serviceProxy, ref String ldapPath, int CALType) - { - - if (serviceProxy.ServiceConfiguration.AuthenticationType == AuthenticationProviderType.LiveId || - serviceProxy.ServiceConfiguration.AuthenticationType == AuthenticationProviderType.OnlineFederation) - throw new Exception(String.Format("To run this sample, {0} {1} must be an active system user in your Microsoft Dynamics CRM Online organization.", firstName, lastName)); - - Guid userId = Guid.Empty; - - Microsoft.Xrm.Sdk.Query.QueryExpression businessUnitQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression - { - EntityName = BusinessUnit.EntityLogicalName, - ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("businessunitid"), - Criteria = - { - Conditions = - { - new Microsoft.Xrm.Sdk.Query.ConditionExpression("parentbusinessunitid", - Microsoft.Xrm.Sdk.Query.ConditionOperator.Null) - } - } - }; - - BusinessUnit defaultBusinessUnit = serviceProxy.RetrieveMultiple( - businessUnitQuery).Entities[0].ToEntity(); - - // Retrieve the specified security role. - Role role = RetrieveRoleByName(serviceProxy, roleStr); - - // CALType and AccessMode - int accessmode = CALType / 10; - int caltype = CALType % 10; - - //Create a new system user. - SystemUser user = new SystemUser - { - DomainName = userName, - FirstName = firstName, - LastName = lastName, - BusinessUnitId = new EntityReference - { - LogicalName = BusinessUnit.EntityLogicalName, - Name = BusinessUnit.EntityLogicalName, - Id = defaultBusinessUnit.Id - }, - CALType = new OptionSetValue(caltype), - AccessMode = new OptionSetValue(accessmode) - }; - userId = serviceProxy.Create(user); - - // Assign the security role to the newly created Microsoft Dynamics CRM user. - AssociateRequest associate = new AssociateRequest() - { - Target = new EntityReference(SystemUser.EntityLogicalName, userId), - RelatedEntities = new EntityReferenceCollection() - { - new EntityReference(Role.EntityLogicalName, role.Id), - }, - Relationship = new Relationship("systemuserroles_association") - }; - serviceProxy.Execute(associate); - - return userId; - } - - - public static Guid RetrieveSystemUser(String userName, String firstName, - String lastName, String roleStr, OrganizationServiceProxy serviceProxy, - ref String ldapPath, - int CALType) - { - String domain; - Guid userId = Guid.Empty; - - if (serviceProxy == null) - throw new ArgumentNullException("serviceProxy"); - - if (String.IsNullOrWhiteSpace(userName)) - throw new ArgumentNullException("UserName"); - - if (String.IsNullOrWhiteSpace(firstName)) - throw new ArgumentNullException("FirstName"); - - if (String.IsNullOrWhiteSpace(lastName)) - throw new ArgumentNullException("LastName"); - - if (String.IsNullOrWhiteSpace(roleStr)) - throw new ArgumentNullException("Role"); - - // Obtain the current user's information. - Microsoft.Crm.Sdk.Messages.WhoAmIRequest who = new Microsoft.Crm.Sdk.Messages.WhoAmIRequest(); - Microsoft.Crm.Sdk.Messages.WhoAmIResponse whoResp = (Microsoft.Crm.Sdk.Messages.WhoAmIResponse)serviceProxy.Execute(who); - Guid currentUserId = whoResp.UserId; - - SystemUser currentUser = - serviceProxy.Retrieve(SystemUser.EntityLogicalName, currentUserId, new Microsoft.Xrm.Sdk.Query.ColumnSet("domainname")).ToEntity(); - - // Extract the domain and create the LDAP object. - String[] userPath = currentUser.DomainName.Split(new char[] { '\\' }); - if (userPath.Length > 1) - domain = userPath[0] + "\\"; - else - domain = String.Empty; - - // Create the system user in Microsoft Dynamics CRM if the user doesn't - // already exist. - Microsoft.Xrm.Sdk.Query.QueryExpression userQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression - { - EntityName = SystemUser.EntityLogicalName, - ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("systemuserid"), - Criteria = - { - FilterOperator = Microsoft.Xrm.Sdk.Query.LogicalOperator.Or, - Filters = - { - new Microsoft.Xrm.Sdk.Query.FilterExpression - { - FilterOperator = Microsoft.Xrm.Sdk.Query.LogicalOperator.And, - Conditions = - { - new Microsoft.Xrm.Sdk.Query.ConditionExpression("domainname", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, domain + userName) - } - }, - new Microsoft.Xrm.Sdk.Query.FilterExpression - { - FilterOperator = Microsoft.Xrm.Sdk.Query.LogicalOperator.And, - Conditions = - { - new Microsoft.Xrm.Sdk.Query.ConditionExpression("firstname", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, firstName), - new Microsoft.Xrm.Sdk.Query.ConditionExpression("lastname", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, lastName) - } - } - } - - } - }; - - DataCollection existingUsers = (DataCollection)serviceProxy.RetrieveMultiple(userQuery).Entities; - - SystemUser existingUser = null; - if (existingUsers.Count > 0) - existingUser = existingUsers[0].ToEntity(); - - if (existingUser != null) - { - userId = existingUser.SystemUserId.Value; - - // Check to make sure the user is assigned the correct role. - Role role = RetrieveRoleByName(serviceProxy, roleStr); - - // Associate the user with the role when needed. - if (!UserInRole(serviceProxy, userId, role.Id)) - { - AssociateRequest associate = new AssociateRequest() - { - Target = new EntityReference(SystemUser.EntityLogicalName, userId), - RelatedEntities = new EntityReferenceCollection() - { - new EntityReference(Role.EntityLogicalName, role.Id) - }, - Relationship = new Relationship("systemuserroles_association") - }; - serviceProxy.Execute(associate); - } - - } - else - { - userId = CreateSystemUser(userName, firstName, lastName, domain, - roleStr, serviceProxy, ref ldapPath, CALType); - } - - return userId; - } - - private static Role RetrieveRoleByName(OrganizationServiceProxy serviceProxy, - String roleSplitStr) - { - string[] RolesStr = roleSplitStr.Split(';'); - - foreach (string roleStr in RolesStr) - { - - Microsoft.Xrm.Sdk.Query.QueryExpression roleQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression - { - EntityName = Role.EntityLogicalName, - ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("roleid"), - Criteria = - { - Conditions = - { - new Microsoft.Xrm.Sdk.Query.ConditionExpression("name", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, roleStr) - } - } - }; - - DataCollection roles = serviceProxy.RetrieveMultiple(roleQuery).Entities; - - if (roles.Count > 0) return roles[0].ToEntity(); - } - - return null; - } - - private static bool UserInRole(OrganizationServiceProxy serviceProxy, - Guid userId, Guid roleId) - { - // Establish a SystemUser link for a query. - Microsoft.Xrm.Sdk.Query.LinkEntity systemUserLink = new Microsoft.Xrm.Sdk.Query.LinkEntity() - { - LinkFromEntityName = SystemUserRoles.EntityLogicalName, - LinkFromAttributeName = "systemuserid", - LinkToEntityName = SystemUser.EntityLogicalName, - LinkToAttributeName = "systemuserid", - LinkCriteria = - { - Conditions = - { - new Microsoft.Xrm.Sdk.Query.ConditionExpression( - "systemuserid", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, userId) - } - } - }; - - // Build the query. - Microsoft.Xrm.Sdk.Query.QueryExpression query = new Microsoft.Xrm.Sdk.Query.QueryExpression() - { - EntityName = Role.EntityLogicalName, - ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("roleid"), - LinkEntities = - { - new Microsoft.Xrm.Sdk.Query.LinkEntity() - { - LinkFromEntityName = Role.EntityLogicalName, - LinkFromAttributeName = "roleid", - LinkToEntityName = SystemUserRoles.EntityLogicalName, - LinkToAttributeName = "roleid", - LinkEntities = {systemUserLink} - } - }, - Criteria = - { - Conditions = - { - new Microsoft.Xrm.Sdk.Query.ConditionExpression("roleid", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, roleId) - } - } - }; - - // Retrieve matching roles. - EntityCollection ec = serviceProxy.RetrieveMultiple(query); - - if (ec.Entities.Count > 0) - return true; - - return false; - } - - int GetOrganizationProxyTryCount = 10; - int GetOrganizationProxyTryTimeout = 30000; - - private OrganizationServiceProxy GetOrganizationProxy(string orgName) - { - return GetOrganizationProxy(orgName, GetOrganizationProxyTryCount, GetOrganizationProxyTryTimeout); - } - - private OrganizationServiceProxy GetOrganizationProxy(string orgName, int TryCount, int TryTimeout) - { - - Uri OrganizationUri = GetOrganizationAddress(orgName); - - OrganizationServiceProxy r = null; - - bool success = false; - int tryItem = 0; - Exception exception = null; - - while (!success) - { - - try - { - // Set IServiceManagement for the current organization. - IServiceManagement orgServiceManagement = - ServiceConfigurationFactory.CreateManagement( - OrganizationUri); - - r = new OrganizationServiceProxy( - orgServiceManagement, - GetUserLogonCredentials()); - - success = true; - - } - catch (Exception exc) - { - Thread.Sleep(TryTimeout); - tryItem++; - if (tryItem >= TryCount) - { - exception = exc; - success = true; - } - } - - } - - if (exception != null) - throw new ArgumentException(exception.ToString()); - - r.EnableProxyTypes(); - - return r; - } - - protected virtual ClientCredentials GetUserLogonCredentials() - { - ClientCredentials credentials = new ClientCredentials(); - - if (String.IsNullOrEmpty(UserName)) - { - credentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials; - } - else - { - credentials.UserName.UserName = UserName; - credentials.UserName.Password = Password; - } - - return credentials; - } - - private DiscoveryServiceProxy GetDiscoveryProxy() - { - - IServiceManagement serviceManagement = - ServiceConfigurationFactory.CreateManagement( - new Uri(CRMDiscoveryUri)); - - ClientCredentials Credentials = GetUserLogonCredentials(); - - DiscoveryServiceProxy r = new DiscoveryServiceProxy(serviceManagement, Credentials); - - return r; - } - - - public OrganizationDetailCollection DiscoverOrganizations(IDiscoveryService service) - { - if (service == null) throw new ArgumentNullException("service"); - RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest(); - RetrieveOrganizationsResponse orgResponse = - (RetrieveOrganizationsResponse)service.Execute(orgRequest); - - return orgResponse.Details; - } - - protected virtual Uri GetOrganizationAddress(string orgName) - { - //string url = "https://" + ProviderSettings[Constants.AppRootDomain] + ":" + ProviderSettings[Constants.Port] + "/" + orgName + "/XRMServices/2011/Organization.svc"; - - string url; - - string organizationWebServiceUri = ProviderSettings[Constants.OrganizationWebService]; - - if (!String.IsNullOrEmpty(organizationWebServiceUri)) - { - url = "https://" + organizationWebServiceUri + ":" + ProviderSettings[Constants.Port] + "/" + orgName + "/XRMServices/2011/Organization.svc"; - } - else - { - url = "https://" + orgName + "." + ProviderSettings[Constants.IFDWebApplicationRootDomain] + ":" + ProviderSettings[Constants.Port] + "/XRMServices/2011/Organization.svc"; - } - - try - { - - using (DiscoveryServiceProxy serviceProxy = GetDiscoveryProxy()) - { - // Obtain organization information from the Discovery service. - if (serviceProxy != null) - { - // Obtain information about the organizations that the system user belongs to. - OrganizationDetailCollection orgs = DiscoverOrganizations(serviceProxy); - - for (int n = 0; n < orgs.Count; n++) - { - if (orgs[n].UniqueName == orgName) - { - // Return the organization Uri. - return new System.Uri(orgs[n].Endpoints[EndpointType.OrganizationService]); - } - } - - } - } - } - catch { } - - return new Uri(url); - - } - - - internal CRMBusinessUnitsResult GetOrganizationBusinessUnitsInternal(Guid organizationId, string orgName) - { - CRMBusinessUnitsResult res = StartLog("GetOrganizationBusinessUnitsInternal"); - - try - { - if (organizationId == Guid.Empty) - throw new ArgumentException("organizationId"); - - if (string.IsNullOrEmpty(orgName)) - throw new ArgumentNullException("orgName"); - - OrganizationServiceProxy serviceProxy; - - try - { - serviceProxy = GetOrganizationProxy(orgName); - } - catch (Exception ex) - { - EndLog("GetOrganizationBusinessUnitsInternal", res, CrmErrorCodes.CANNOT_GET_CRM_SERVICE, ex); - return res; - } - - DataCollection BusinessUnits; - - try - { - - Microsoft.Xrm.Sdk.Query.QueryExpression businessUnitQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression - { - EntityName = BusinessUnit.EntityLogicalName, - ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet(new string[] { "businessunitid", "name" }), - Criteria = - { - Conditions = - { - new Microsoft.Xrm.Sdk.Query.ConditionExpression("parentbusinessunitid", - Microsoft.Xrm.Sdk.Query.ConditionOperator.Null) - } - } - }; - - BusinessUnits = serviceProxy.RetrieveMultiple( - businessUnitQuery).Entities; - - } - catch (Exception ex) - { - EndLog("GetOrganizationBusinessUnitsInternal", res, CrmErrorCodes.CANNOT_GET_CRM_BUSINESS_UNITS, ex); - return res; - } - - List businessUnits = new List(); - - try - { - for (int i = 0; i < BusinessUnits.Count; i++) - { - BusinessUnit bu = BusinessUnits[i].ToEntity(); - - CRMBusinessUnit unit = new CRMBusinessUnit(); - unit.BusinessUnitId = (Guid)bu.BusinessUnitId; - unit.BusinessUnitName = bu.Name; - - if (unit.BusinessUnitName == null) - unit.BusinessUnitName = "default"; - - businessUnits.Add(unit); - - } - - res.Value = businessUnits; - } - catch (Exception ex) - { - EndLog("GetOrganizationBusinessUnitsInternal", res, CrmErrorCodes.CANNOT_FILL_BASE_UNITS_COLLECTION, - ex); - return res; - } - } - catch (Exception ex) - { - EndLog("GetOrganizationBusinessUnitsInternal", res, CrmErrorCodes.GET_ORGANIZATION_BUSINESS_UNITS_GENERAL_ERROR, - ex); - return res; - - } - - EndLog("GetOrganizationBusinessUnitsInternal"); - return res; - - } - - public CRMBusinessUnitsResult GetOrganizationBusinessUnits(Guid organizationId, string orgName) - { - return GetOrganizationBusinessUnitsInternal(organizationId, orgName); - } - - public CrmRolesResult GetAllCrmRoles(string orgName, Guid businessUnitId) - { - return GetAllCrmRolesInternal(orgName, businessUnitId); - } - - public CrmRolesResult GetCrmUserRoles(string orgName, Guid userId) - { - return GetCrmUserRolesInternal(userId, orgName); - } - - public EntityCollection GetUserRoles(Guid userId, string orgName) - { - OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); - - // Establish a SystemUser link for a query. - Microsoft.Xrm.Sdk.Query.LinkEntity systemUserLink = new Microsoft.Xrm.Sdk.Query.LinkEntity() - { - LinkFromEntityName = SystemUserRoles.EntityLogicalName, - LinkFromAttributeName = "systemuserid", - LinkToEntityName = SystemUser.EntityLogicalName, - LinkToAttributeName = "systemuserid", - LinkCriteria = - { - Conditions = - { - new Microsoft.Xrm.Sdk.Query.ConditionExpression( - "systemuserid", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, userId) - } - } - }; - - // Build the query. - Microsoft.Xrm.Sdk.Query.QueryExpression query = new Microsoft.Xrm.Sdk.Query.QueryExpression() - { - EntityName = Role.EntityLogicalName, - ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("roleid"), - LinkEntities = - { - new Microsoft.Xrm.Sdk.Query.LinkEntity() - { - LinkFromEntityName = Role.EntityLogicalName, - LinkFromAttributeName = "roleid", - LinkToEntityName = SystemUserRoles.EntityLogicalName, - LinkToAttributeName = "roleid", - LinkEntities = {systemUserLink} - } - } - }; - - // Retrieve matching roles. - EntityCollection relations = serviceProxy.RetrieveMultiple(query); - - return relations; - } - - internal CrmRolesResult GetCrmUserRolesInternal(Guid userId, string orgName) - { - CrmRolesResult res = StartLog("GetCrmUserRolesInternal"); - - - try - { - EntityCollection relations; - - if (userId == Guid.Empty) - throw new ArgumentException("userId"); - - if (string.IsNullOrEmpty(orgName)) - throw new ArgumentNullException("orgName"); - - try - { - relations = GetUserRoles(userId, orgName); - } - catch (Exception ex) - { - EndLog("GetCrmUserRolesInternal", res, CrmErrorCodes.CANNOT_GET_CRM_USER_ROLES, ex); - return res; - } - - try - { - res.Value = FillCrmRoles(relations, true, Guid.Empty); - } - catch (Exception ex) - { - EndLog("GetCrmUserRolesInternal", res, CrmErrorCodes.CANNOT_FILL_ROLES_COLLECTION, ex); - return res; - } - } - catch (Exception ex) - { - EndLog("GetCrmUserRolesInternal", res, CrmErrorCodes.GET_CRM_USER_ROLE_GENERAL_ERROR, ex); - return res; - } - - EndLog("GetCrmUserRolesInternal"); - return res; - } - - static string excludedRolesStr = ";пользователь поддержки;support user;"; - - private static List FillCrmRoles(EntityCollection entities, bool isUserRole, Guid businessUnitId) - { - List res = new List(); - - foreach (Entity current in entities.Entities) - { - Role role = current.ToEntity(); - - if (role == null) continue; - - if (businessUnitId != Guid.Empty) - { - if (businessUnitId != role.BusinessUnitId.Id) - continue; - } - - string roleName = role.Name; - - if (roleName!=null) - if (excludedRolesStr.IndexOf(";" + roleName.ToLower() + ";") != -1) - continue; - - CrmRole crmRole = new CrmRole(); - crmRole.IsCurrentUserRole = isUserRole; - crmRole.RoleId = (Guid)role.RoleId; - crmRole.RoleName = roleName; - - res.Add(crmRole); - } - - return res; - } - - - private static List FillCrmRoles(EntityCollection entities, Guid businessUnitId) - { - return FillCrmRoles(entities, false, businessUnitId); - } - - internal CrmRolesResult GetAllCrmRolesInternal(string orgName, Guid businessUnitId) - { - CrmRolesResult res = StartLog("GetAllCrmRoles"); - - try - { - if (string.IsNullOrEmpty(orgName)) - throw new ArgumentNullException("orgName"); - - EntityCollection roles; - try - { - OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); - - Microsoft.Xrm.Sdk.Query.QueryExpression roleQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression - { - EntityName = Role.EntityLogicalName, - ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet(new string[] { "roleid", "name", "businessunitid" }), - }; - - roles = serviceProxy.RetrieveMultiple(roleQuery); - - - } - catch (Exception ex) - { - EndLog("GetAllCrmRoles", res, CrmErrorCodes.CANNOT_GET_ALL_CRM_ROLES, ex); - return res; - } - - try - { - List crmRoles = FillCrmRoles(roles, businessUnitId); - res.Value = crmRoles; - } - catch (Exception ex) - { - EndLog("GetAllCrmRoles", res, CrmErrorCodes.CANNOT_FILL_ROLES_COLLECTION, ex); - return res; - } - } - catch (Exception ex) - { - EndLog("GetAllCrmRoles", res, CrmErrorCodes.GET_ALL_CRM_ROLES_GENERAL_ERROR, ex); - return res; - } - - EndLog("GetAllCrmRoles"); - return res; - } - - public ResultObject SetUserRoles(string orgName, Guid userId, Guid[] roles) - { - return SetUserRolesInternal(orgName, userId, roles); - } - - internal ResultObject SetUserRolesInternal(string orgName, Guid userId, Guid[] roles) - { - CrmRolesResult res = StartLog("SetUserRolesInternal"); - - try - { - if (string.IsNullOrEmpty(orgName)) - throw new ArgumentNullException("orgName"); - - if (userId == Guid.Empty) - throw new ArgumentException("userId"); - - if (roles == null) - throw new ArgumentNullException("roles"); - - OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); - - - CrmRolesResult tmpRoles = GetCrmUserRoles(orgName, userId); - res.ErrorCodes.AddRange(tmpRoles.ErrorCodes); - - if (!tmpRoles.IsSuccess) - return res; - - List remRoles = new List(); - - for (int i = 0; i < tmpRoles.Value.Count; i++) - { - if (Array.Find(roles, delegate(Guid current) { return current == tmpRoles.Value[i].RoleId; }) == Guid.Empty) - { - remRoles.Add(tmpRoles.Value[i].RoleId); - } - } - - try - { - DisassociateRequest removeRole = new DisassociateRequest() - { - Target = new EntityReference(SystemUser.EntityLogicalName, userId), - RelatedEntities = new EntityReferenceCollection(), - Relationship = new Relationship("systemuserroles_association") - }; - - for (int i = 0; i < remRoles.Count; i++) - removeRole.RelatedEntities.Add(new EntityReference(Role.EntityLogicalName, remRoles[i])); - - serviceProxy.Execute(removeRole); - - } - catch (Exception ex) - { - EndLog("SetUserRolesInternal", res, CrmErrorCodes.CANNOT_REMOVE_CRM_USER_ROLES, ex); - return res; - } - - - try - { - // Assign the security role to the newly created Microsoft Dynamics CRM user. - AssociateRequest associate = new AssociateRequest() - { - Target = new EntityReference(SystemUser.EntityLogicalName, userId), - RelatedEntities = new EntityReferenceCollection(), - Relationship = new Relationship("systemuserroles_association") - }; - - for (int i = 0; i < roles.Length; i++) - { - bool find = false; - foreach (CrmRole current in tmpRoles.Value) - { - if (current.RoleId == roles[i]) - find = true; - } - if (find) continue; - - associate.RelatedEntities.Add(new EntityReference(Role.EntityLogicalName, roles[i])); - } - - serviceProxy.Execute(associate); - } - catch (Exception ex) - { - EndLog("SetUserRolesInternal", res, CrmErrorCodes.CANNOT_ASSIGN_CRM_USER_ROLES, ex); - return res; - } - - } - catch (Exception ex) - { - EndLog("SetUserRolesInternal", res, CrmErrorCodes.CANNOT_SET_CRM_USER_ROLES_GENERAL_ERROR, ex); - return res; - } - - - EndLog("SetUserRolesInternal"); - return res; - - } - - - public CrmUserResult GetCrmUserById(Guid crmUserId, string orgName) - { - return GetCrmUserByIdInternal(crmUserId, orgName); - } - - internal CrmUserResult GetCrmUserByIdInternal(Guid crmUserId, string orgName) - { - CrmUserResult ret = StartLog("GetCrmUserByIdInternal"); - - try - { - if (crmUserId == Guid.Empty) - throw new ArgumentNullException("crmUserId"); - - if (string.IsNullOrEmpty(orgName)) - throw new ArgumentNullException("orgName"); - - OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); - - SystemUser retruveUser = - serviceProxy.Retrieve(SystemUser.EntityLogicalName, crmUserId, new Microsoft.Xrm.Sdk.Query.ColumnSet("domainname", "businessunitid", "accessmode", "isdisabled", "caltype")).ToEntity(); - - CrmUser user = null; - - if (retruveUser != null) - { - user = new CrmUser(); - user.BusinessUnitId = retruveUser.BusinessUnitId.Id; - user.CRMUserId = retruveUser.SystemUserId.Value; - user.ClientAccessMode = (CRMUserAccessMode)retruveUser.AccessMode.Value; - user.IsDisabled = (bool)retruveUser.IsDisabled; - user.CALType = retruveUser.CALType.Value; - - ret.Value = user; - } - } - catch (Exception ex) - { - EndLog("GetCrmUserByIdInternal", ret, CrmErrorCodes.CANONT_GET_CRM_USER_BY_ID, ex); - return ret; - } - - EndLog("GetCrmUserByIdInternal"); - return ret; - } - - - internal CrmUserResult GetCrmUserByDomainNameInternal(string domainName, string orgName) - { - CrmUserResult ret = StartLog("GetCrmUserByDomainNameInternal"); - - try - { - if (string.IsNullOrEmpty(domainName)) - throw new ArgumentNullException("domainName"); - - if (string.IsNullOrEmpty(orgName)) - throw new ArgumentNullException("orgName"); - - - OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); - - Microsoft.Xrm.Sdk.Query.QueryExpression usereQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression - { - EntityName = SystemUser.EntityLogicalName, - ColumnSet = new Microsoft.Xrm.Sdk.Query.ColumnSet("domainname", "businessunitid", "accessmode", "isdisabled", "systemuserid", "caltype"), - }; - - EntityCollection users = serviceProxy.RetrieveMultiple(usereQuery); - - foreach (Entity entityuser in users.Entities) - { - SystemUser sysuser = entityuser.ToEntity(); - - if (sysuser == null) continue; - if (sysuser.DomainName != domainName) continue; - - CrmUser user = new CrmUser(); - user.BusinessUnitId = sysuser.BusinessUnitId.Id; - user.CRMUserId = sysuser.SystemUserId.Value; - user.ClientAccessMode = (CRMUserAccessMode)sysuser.AccessMode.Value; - user.IsDisabled = sysuser.IsDisabled.Value; - user.CALType = sysuser.CALType.Value; - ret.Value = user; - } - } - catch (Exception ex) - { - EndLog("GetCrmUserByDomainNameInternal", ret, CrmErrorCodes.CANONT_GET_CRM_USER_BY_DOMAIN_NAME, ex); - return ret; - } - - EndLog("GetCrmUserByDomainNameInternal"); - return ret; - } - - public CrmUserResult GetCrmUserByDomainName(string domainName, string orgName) - { - return GetCrmUserByDomainNameInternal(domainName, orgName); - } - - - private static Guid GetFetureId(string name) - { - if (string.IsNullOrEmpty(name)) - throw new ArgumentNullException("name"); - - return Guid.Empty; - } - - - public ResultObject ChangeUserState(bool disable, string orgName, Guid crmUserId) - { - return ChangeUserStateInternal(disable, orgName, crmUserId); - } - - - internal ResultObject ChangeUserStateInternal(bool disable, string orgName, Guid crmUserId) - { - ResultObject res = StartLog("ChangeUserStateInternal"); - - res.IsSuccess = true; - try - { - if (crmUserId == Guid.Empty) - throw new ArgumentNullException("crmUserId"); - - if (string.IsNullOrEmpty(orgName)) - throw new ArgumentNullException("orgName"); - - OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); - - // Retrieve a user. - SystemUser user = serviceProxy.Retrieve(SystemUser.EntityLogicalName, - crmUserId, new Microsoft.Xrm.Sdk.Query.ColumnSet(new String[] { "systemuserid", "firstname", "lastname" })).ToEntity(); - - if (user != null) - { - Microsoft.Crm.Sdk.Messages.SetStateRequest request = new Microsoft.Crm.Sdk.Messages.SetStateRequest() - { - EntityMoniker = user.ToEntityReference(), - - // Required by request but always valued at -1 in this context. - Status = new OptionSetValue(-1), - - // Sets the user to disabled. - State = disable ? new OptionSetValue(-1) : new OptionSetValue(0) - }; - - serviceProxy.Execute(request); - - } - } - catch (Exception ex) - { - EndLog("ChangeUserStateInternal", res, CrmErrorCodes.CANNOT_CHANGE_USER_STATE, ex); - return res; - } - - - EndLog("ChangeUserStateInternal"); - return res; - } - public override bool IsInstalled() { - string value = string.Empty; - try - { - RegistryKey root = Registry.LocalMachine; - RegistryKey rk = root.OpenSubKey("SOFTWARE\\Microsoft\\MSCRM"); - if (rk == null) - rk = root.OpenSubKey("SOFTWARE\\Wow6432Node\\Microsoft\\MSCRM"); - - if (rk != null) - { - value = (string)rk.GetValue("CRM_Server_Version", null); - rk.Close(); - } - } - catch (Exception ex) - { - Log.WriteError(ex); - } - - return value.StartsWith("5."); + return CRMServerVersion.StartsWith("5."); } - public ResultObject SetUserCALType(string orgName, Guid userId, int CALType) - { - return SetUserCALTypeInternal(orgName, userId, CALType); - } - - internal ResultObject SetUserCALTypeInternal(string orgName, Guid userId, int CALType) - { - ResultObject ret = StartLog("SetUserCALTypeInternal"); - - try - { - if (userId == Guid.Empty) - throw new ArgumentNullException("crmUserId"); - - if (string.IsNullOrEmpty(orgName)) - throw new ArgumentNullException("orgName"); - - OrganizationServiceProxy serviceProxy = GetOrganizationProxy(orgName); - - SystemUser user = - serviceProxy.Retrieve(SystemUser.EntityLogicalName, userId, new Microsoft.Xrm.Sdk.Query.ColumnSet("domainname", "businessunitid", "accessmode", "isdisabled", "caltype")).ToEntity(); - - // CALType and AccessMode - int accessmode = CALType / 10; - int caltype = CALType % 10; - - user.CALType = new OptionSetValue(caltype); - user.AccessMode = new OptionSetValue(accessmode); - - serviceProxy.Update(user); - - } - catch (Exception ex) - { - EndLog("SetUserCALTypeInternal", ret, CrmErrorCodes.CANONT_GET_CRM_USER_BY_ID, ex); - return ret; - } - - EndLog("SetUserCALTypeInternal"); - return ret; - } - - } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/HostedSolutionLog.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/HostedSolutionLog.cs new file mode 100644 index 00000000..83257a78 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/HostedSolutionLog.cs @@ -0,0 +1,152 @@ +// 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. + +using System; +using WebsitePanel.Providers.Common; +using WebsitePanel.Server.Utils; +using System.Text; +using System.Management.Automation.Runspaces; + +namespace WebsitePanel.Providers.HostedSolution +{ + public class HostedSolutionLog + { + public static string LogPrefix = "HostedSolution"; + + public static void LogStart(string message, params object[] args) + { + string text = String.Format(message, args); + Log.WriteStart("{0} {1}", LogPrefix, text); + } + + public static void LogEnd(string message, params object[] args) + { + string text = String.Format(message, args); + Log.WriteEnd("{0} {1}", LogPrefix, text); + } + + public static void LogInfo(string message) + { + Log.WriteInfo("{0} {1}", LogPrefix, message); + } + + public static void LogInfo(string message, params object[] args) + { + string text = String.Format(message, args); + Log.WriteInfo("{0} {1}", LogPrefix, text); + } + + public static void LogWarning(string message) + { + Log.WriteWarning("{0} {1}", LogPrefix, message); + } + + public static void LogWarning(string message, params object[] args) + { + string text = String.Format(message, args); + Log.WriteWarning("{0} {1}", LogPrefix, text); + } + + public static void LogError(Exception ex) + { + Log.WriteError(LogPrefix, ex); + } + + public static void LogError(string message, Exception ex) + { + string text = String.Format("{0} {1}", LogPrefix, message); + Log.WriteError(text, ex); + } + + public static void DebugInfo(string message, params object[] args) + { + string text = String.Format(message, args); + Log.WriteInfo("{0} {1}", LogPrefix, text); + } + + public static void EndLog(string message, ResultObject res, string errorCode, Exception ex) + { + if (res != null) + { + res.IsSuccess = false; + + if (!string.IsNullOrEmpty(errorCode)) + res.ErrorCodes.Add(errorCode); + } + + if (ex != null) + LogError(ex); + + + //LogRecord. + LogEnd(message); + + + } + + public static void EndLog(string message, ResultObject res, string errorCode) + { + EndLog(message, res, errorCode, null); + } + + public static void EndLog(string message, ResultObject res) + { + EndLog(message, res, null); + } + + public static void EndLog(string message) + { + EndLog(message, null); + } + + internal static T StartLog(string message) where T : ResultObject, new() + { + LogStart(message); + T res = new T(); + res.IsSuccess = true; + return res; + } + + public static void DebugCommand(Command cmd) + { + StringBuilder sb = new StringBuilder(cmd.CommandText); + foreach (CommandParameter parameter in cmd.Parameters) + { + string formatString = " -{0} {1}"; + if (parameter.Value is string) + formatString = " -{0} '{1}'"; + else if (parameter.Value is bool) + formatString = " -{0} ${1}"; + sb.AppendFormat(formatString, parameter.Name, parameter.Value); + } + Log.WriteInfo("{0} {1}", LogPrefix, sb.ToString()); + } + + + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/WebsitePanel.Providers.HostedSolution.Crm2011.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/WebsitePanel.Providers.HostedSolution.Crm2011.csproj index 4ce83413..7a97058e 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/WebsitePanel.Providers.HostedSolution.Crm2011.csproj +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/WebsitePanel.Providers.HostedSolution.Crm2011.csproj @@ -31,40 +31,44 @@ 4 - - ..\..\Lib\References\Microsoft\microsoft.crm.sdk.proxy.dll - True + + False + ..\..\Lib\References\Microsoft\CRM2011\microsoft.crm.sdk.proxy.dll - - ..\..\Lib\References\Microsoft\microsoft.xrm.client.dll - True + + False + ..\..\Lib\References\Microsoft\CRM2011\microsoft.xrm.client.dll - - ..\..\Lib\References\Microsoft\microsoft.xrm.client.codegeneration.dll - True + + False + ..\..\Lib\References\Microsoft\CRM2011\microsoft.xrm.client.codegeneration.dll - - ..\..\Lib\References\Microsoft\microsoft.xrm.portal.dll - True + + False + ..\..\Lib\References\Microsoft\CRM2011\microsoft.xrm.portal.dll - - ..\..\Lib\References\Microsoft\microsoft.xrm.portal.files.dll - True + + False + ..\..\Lib\References\Microsoft\CRM2011\microsoft.xrm.portal.files.dll - - ..\..\Lib\References\Microsoft\microsoft.xrm.sdk.dll - True + + False + ..\..\Lib\References\Microsoft\CRM2011\microsoft.xrm.sdk.dll - - ..\..\Lib\References\Microsoft\microsoft.xrm.sdk.deployment.dll - True + + False + ..\..\Lib\References\Microsoft\CRM2011\microsoft.xrm.sdk.deployment.dll - - ..\..\Lib\References\Microsoft\microsoft.xrm.sdk.workflow.dll - True + + False + ..\..\Lib\References\Microsoft\CRM2011\microsoft.xrm.sdk.workflow.dll + + False + ..\..\Lib\System.Management.Automation.dll + @@ -74,7 +78,9 @@ + + @@ -84,11 +90,6 @@ WebsitePanel.Providers.Base False - - {A06DE5E4-4331-47E1-8F46-7B846146B559} - WebsitePanel.Providers.HostedSolution - False - {E91E52F3-9555-4D00-B577-2B1DBDD87CA7} WebsitePanel.Server.Utils diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/myorganizationcrmsdktypes.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/myorganizationcrmsdktypes.cs index fe429976..ed6f0461 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/myorganizationcrmsdktypes.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution.Crm2011/myorganizationcrmsdktypes.cs @@ -9,7 +9,9 @@ //------------------------------------------------------------------------------ [assembly: Microsoft.Xrm.Sdk.Client.ProxyTypesAssemblyAttribute()] -/* + + + [System.Runtime.Serialization.DataContractAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9690.2153")] public enum AccountState @@ -20,7 +22,7 @@ public enum AccountState [System.Runtime.Serialization.EnumMemberAttribute()] Inactive = 1, -}*/ +} ///