Introduction to the deployment web service
Applies To: Dynamics CRM 2013
The deployment service allows you to create solutions to take advantage of support for multiple organizations—also called multi-tenant support. Microsoft Dynamics CRM enables you to host multiple customer organizations within a single deployment. This capability benefits hosted solutions or businesses that require a separation of data inside the organization. Because using the deployment service requires access to the CRM server, it can only be used for Microsoft Dynamics CRM 2013 on-premises deployments.
With multiple organization support, the Microsoft Dynamics CRM web application and web services support the storage and retrieval of data across multiple business organizations while maintaining the security and privacy of each individual organization. A single Microsoft Dynamics CRM configuration database stores the metadata and location information for all customer organizations. However, each customer organization has its own database on a server running Microsoft SQL Server. For more information about the entities and configuration settings controlled by the deployment service, see Deployment entities and deployment configuration settings.
Microsoft Dynamics CRM 2013 does not support a backward compatible end-point for the deployment service so any code written for the Microsoft Dynamics CRM 4.0 deployment service must be updated and recompiled with the new assembly.
Add the deployment service to your project
You can use the deployment service by adding a reference to the assembly Microsoft.Xrm.Sdk.Deployment.dll, which you can find in the SDK\bin folder. Alternatively, you can add the following service reference to your solution.
http://myservername/xrmdeployment/2011/deployment.svc
svcutil.exe http:// myservername/XRMDeployment/2011/Deployment.svc?wsdl
This will generate a configuration file and a code file that contains the client class. Add these two files to your client application and use the generated client class to call the service.
Deployment service installation
To execute calls against Microsoft Dynamics CRM deployment entities, the Deployment Service server role must be correctly installed on a Microsoft Dynamics CRM server. Make sure that the following criteria are met in your Deployment Service installation:
In order to use organization operations such as create or upgrade, you must install the Deployment Service server role using a domain user. The domain user account must have local admin and system admin rights on the SQL Server on which organization databases will be hosted.
The Deployment Service should be run with a different service identity than the other Microsoft Dynamics CRM services and application server. If you are using Network Service, the server role should be installed on a separate server by itself without any other Microsoft Dynamics CRM server roles installed. Installing the Deployment Service role alongside other server roles can cause security risks because both servers run under the Network Service account. If you use the Network service account you will not be able to perform organization operations using Windows PowerShell or the deployment web service.
For more information about installation of the deployment service, see the Microsoft Dynamics CRM 2013 server roles.
Microsoft Dynamics CRM has two primary server components: the Microsoft Dynamics CRM application server and the Microsoft Dynamics CRM Server. Each includes a separate group of server roles that are installed when Setup is run. The Deployment Service role is automatically installed when using the Setup wizard to install the Microsoft Dynamics CRM platform server.
Deployment service authentication and impersonation
Deployment Service authentication is handled through Active Directory, which is also known as Windows integrated authentication. You can also use impersonation, which enables you to call web service methods on behalf of another authenticated user to provide a desired feature or service. To call the deployment web service, you must be a Microsoft Dynamics CRM Deployment Administrator. For more information, see Add a deployment administrator.
The following sample shows how to use the ProxyClientHelper class to authenticate and use the deployment service using default credentials.
DeploymentServiceClient service = Microsoft.Xrm.Sdk.Deployment.Proxy.ProxyClientHelper.CreateClient(new Uri("http://MyServerName/XRMDeployment/2011/Deployment.svc"));RetrieveAllRequest request = new RetrieveAllRequest()
{
EntityType = DeploymentEntityType.DefaultOrganization};
RetrieveAllResponse response = (RetrieveAllResponse) service.Execute(request);
}
Microsoft Dynamics CRM web services can be called by various clients and services on behalf of a Microsoft Dynamics CRM user. Every call must be an authenticated call. Impersonation is used to execute a call on behalf of an authenticated Microsoft Dynamics CRM user. When using impersonation, you avoid dealing with authentication and authorization issues in the web service (ASP.NET) code. Instead, you rely on Internet Information Services (IIS) to authenticate the user and pass an authenticated token to the web service. If the user cannot be authenticated, IIS passes an unauthenticated token.
The following sample shows how to use impersonation with the deployment service.
DeploymentServiceClient service = Microsoft.Xrm.Sdk.Deployment.Proxy.ProxyClientHelper.CreateClient(new Uri("http://myservername/XRMDeployment/2011/Deployment.svc"));
service.ClientCredentials.Windows.ClientCredential = new NetworkCredential("administrator", "myp@ssword!", " myservernamedom");
RetrieveAllRequest request = new RetrieveAllRequest()
{
EntityType = DeploymentEntityType.DefaultOrganization};
RetrieveAllResponse response = (RetrieveAllResponse) service.Execute(request);
}
Deployment service capabilities
The deployment service follows a development model similar to the main Microsoft Dynamics CRM web service. There are entities, methods and messages that you use to interact with the deployment service. For more information about the main Microsoft Dynamics CRM web service, see Use Microsoft Dynamics CRM 2013 services in code.
There are two types of entities for the deployment service: deployment entities and deployment configuration settings. Both are accessed by the same set of methods. For more information about these entities, see Deployment entities and deployment configuration settings.
In addition to the core deployment entities, the deployment service provides the ability to read and edit advanced settings driven by metadata. These advanced settings provide access to information stored in the configuration database.
The deployment service supports both synchronous and asynchronous messages for the Execute method. For more information, see Deployment web service messages.
The following table lists the methods available in the deployment service.
Method name |
Description |
---|---|
Deletes a record from a deployment entity. |
|
Executes a request for the deployment service. For more information, see Deployment web service messages. |
|
Retrieves a record from a deployment entity or deployment configuration settings. |
|
Retrieves all records for a deployment entity or deployment configuration settings. |
|
Updates a record from a deployment entity or deployment configuration settings. |
See Also
IDeploymentService
Microsoft.Xrm.Sdk.Deployment.Proxy
ProxyClientHelper
Administer the deployment using the deployment web service
Deployment entities and deployment configuration settings
Deployment web service messages