cub-e.net

just coding...

Dynamics 365 Community Event in Dubai on 9th and 10th February 2018

Dynamics 365 Saturday is a free Technical & Strategy Event Organised by the Microsoft Dynamics Community MVP’s For CRM and ERP professionals, technical consultants & developers. Learn & share new skills whilst promoting best practices, helping organisations overcome the challenges of implementing a successful digital transformation strategy with Microsoft Dynamics 365.

Dynamics 365 Saturday will replace CRM Saturday to provide a single platform to serve the whole Dynamics 365 community, the core customer experience values and ethics of CRM Saturday will continue to live on through 365 Saturday with the rest of the Dynamics Community.

I have a session in this event on 10th February. Session name is “Dynamics 365 V9 New Features & Deprecations” in Microsoft Dubai Office in Media City between 13:00 and 14:00. Also I will share my knowledge on Dynamics 365 in Hackathon on 11th February.

My session focuses on who interested in taking the plunge to “code”. The session will be covering all development structure. Attendees can easily see the difference between versions from a development perspective and will be particularly helpful for those who work on upgrade projects.

For more information and program agenda please visit : http://mwns.co/dj18 

We would like to see you there.

Dynamics 365 UK Community Event in London on 26th-27th January 2018

Dynamics 365 Saturday is a free Technical & Strategy Event Organised by the Microsoft Dynamics Community MVP’s For CRM and ERP professionals, technical consultants & developers. Learn & share new skills whilst promoting best practices, helping organisations overcome the challenges of implementing a successful digital transformation strategy with Microsoft Dynamics 365.

Dynamics 365 Saturday will replace CRM Saturday to provide a single platform to serve the whole Dynamics 365 community, the core customer experience values and ethics of CRM Saturday will continue to live on through 365 Saturday with the rest of the Dynamics Community.

I and Ramon Tebar (Investec CRM Solution Architect) will share their knowledge on Dynamics 365 in Hackathon on 26th January also they have a session in this event on 27th January. Session name is “Dynamics 365 V9 New Features & Deprecations” in Theatre 1 between 10:00 and 11:00.

Their session focuses on who interested in taking the plunge to “code”. The session will be covering all development structure. Attendees can easily see the difference between versions from a development perspective and will be particularly helpful for those who work on upgrade projects.

DirectionsEMEA 2017 Madrid – Development on Dynamics 365 CRM

Directions EMEA is an independent conference for Microsoft Dynamics partners from the ERP and CRM channels focusing on the SMB market. It is organized by partners for partners. The conference is where Microsoft Dynamics Partners go to learn first-hand from Microsoft about the Microsoft Dynamics Roadmap and new features of the latest Dynamics NAV version (Tenerife). Following the concept of integrating CRM and ERP within Dynamics 365, Directions EMEA also offers a deep insight into Microsoft Dynamics 365 BE for Finance and Operations, Microsoft Dynamics 365 BE for Sales and Microsoft Dynamics 365 BE for Marketing, as well as ensures a comprehensive understanding of the Cloud Solution Provider program.

Directions EMEA brings together over 2000 developers, implementers, technical experts, sales, marketing and executive/owner representatives from Microsoft Dynamics Partners. For independent software vendors, the event is a unique opportunity to show their solutions to the largest Microsoft Dynamics Partner forum and demonstrate their readiness for Dynamics 365 BE as SaaS providers.

The Directions conference provides the Dynamics community with a forum for knowledge sharing, networking and discovering new opportunities for future growth and collaboration. It is a must-attend event where partners can enhance and build their networks to reach a broader SMB market, learn about the latest product developments and tools, as well as enrich their operational and technical knowledge.

Since 2008 Directions EMEA has grown year by year. In 2016, it attracted almost 1800 attendees from 580 companies as well as 60 sponsors. 2017 is the 10th annual conference and will take place in Madrid on October 4 – 6, 2017.

Our CEO Baris Kanlica has a session in this event on 6th October Friday in Venecia room. Session name is  “Dynamics 365 new development features and deprecations” and it is is focused on those new to CRM development or CRM administrators interested in taking the plunge to “code” customization. The session will be covering all development structure of the Dynamics platform since version 2011. Attendees can easily see the difference between versions from a development perspective and will be particularly helpful for those who work on upgrade projects.

See you there :)

https://mawens.co.uk/directionsemea-2017-madrid-development-on-dynamics-365-crm/

Improve Microsoft Dynamics 365/CRM service channel allocation performance

The OrganizationServiceProxy and DiscoveryServiceProxy service proxy classes provide the ability to establish a connection to and communicate with the available Microsoft Dynamics 365/CRM services. However, improper use of these API's can potentially reduce application performance. Therefore, if you understand when and how to effectively leverage these service client API's, available in the SDK, you can optimize communication traffic between your application the Dynamics 365/CRM server.

 

When you establish a Windows Communication Foundation (WCF) service channel by using one of the service endpoints, for example, the Organization.svc, your application must perform two additional, time-consuming operations: 1) metadata download from the endpoint and 2) user authentication. You can improve performance if your application performs these operations a minimum number of times for each application session. The OrganizationServiceProxy constructor shown below performs both of these operations, in addition to allocating a new service channel, every time a service proxy object is created.

 

Violation Example

new OrganizationServiceProxy(new Uri(this.orgServiceUrl), nullthis.Credentials, null)

A first step towards improving performance is to minimize the number of times your application uses this constructor to create an instance of the service proxy.  If possible, use this constructor only one time during the application session and cache the returned reference for use in different code paths within your application. Notice that the returned service reference is not thread safe so multi-threaded applications will need to allocate one instance per thread. Applications must also call Dispose on the service proxy object before they terminate in order to free service channel allocated resources.

 

The service proxy class performs the two previously mentioned operations, metadata download and user authentication, by using the following public methods available as client API's.

 

Guideline Example

IServiceManagement<IOrganizationService> sm = ServiceConfigurationFactory

        .CreateManagement<IOrganizationService>(new Uri(orgServiceUrl));

 

this.Credentials = sm.Authenticate(this.Credentials);

 

The CreateManagement method performs the metadata download while the Authenticate method authenticates the user. The returned objects from these methods are thread safe and can be statically cached by your application. 

 

As a more efficient alterntive, you can then use these objects to construct a service proxy object via one of the other constructor overloads (depending on the authentication scenario):

 

newOrganizationServiceProxy(sm, this.Credentials.ClientCredentials)

 

newOrganizationServiceProxy(sm, this.Credentials.SecurityTokenResponse)

These constructor overloads bypass the two aforementioned operations and use the referenced service management and authentication credentials passed as method arguments.  By caching the service management and authenticated credential objects, your application can more efficiently construct the service proxy objects and allocate multiple service channels as necessary over the lifetime of an application session without repeating the costly (and redundant) operations. 

 

If you enable early-bound types on OrganizationServiceProxy through one of the EnableProxyTypes methods, you must do the same on all service proxies that are created from the cached IServiceManagement object. If your application uses the metadata, we recommend that it caches the metadata that it retrieves and periodically calls the RetrieveTimestampRequest message to determine whether it must refresh the cache.

 

In addition, monitor your WCF security token (Token) and refresh it before it expires so that you do not lose the token and have to start over with authentication. To check the token, create a custom class that inherits from the OrganizationServiceProxy or DiscoveryServiceProxy class and that implements the business logic to check the token. Or wrap the proxy classes in a new class. Another technique is to explicitly check the token before each call to the web service. Example code that demonstrates these techniques can be found in the ManagedTokenDiscoveryServiceProxy, ManagedTokenOrganizationServiceProxy, and AutoRefreshSecurityToken classes in the Helper Code: ServerConnection Class topic.

 


Performance Best-Practices: 

http://msdn.microsoft.com/en-us/library/gg509027.aspx#Performance

ServiceConfigurationFactory.CreateManagement<TService>(Uri serviceUri)

http://msdn.microsoft.com/en-us/library/hh560440.aspx

IServiceManagement.Authenticate(AuthenticationCredentials authenticationCredentials)

http://msdn.microsoft.com/en-us/library/hh560432.aspx

Use Try and Finally on Disposable Resources

Why

Using a try/finally block ensures that resources are disposed even if an exception occurs. Not disposing resources properly leads to performance degradation over time. 

When

This is important guideline when working with disposable resources such as 

  • Database connections 
  • File handles 
  • Message queue handles 
  • Text reader, writer 
  • Binary reader, writer 
  • Crypto stream 
  • Symmetric, Asymmetric and Hash algorithms. 
  • Windows Identity, Windows Impersonation Context  
  • Timer, Wait Handle in case of threading 
  • Impersonation Context 
  • XML Reader 
  • XML Writer

How

The following code fragment demonstrates disposing resources in a finally block..

SqlConnection conn = new SqlConnection(...)

try

{

   conn.Open();

   ...

}

finally

{

   if(null != conn)

     conn.close();

}

If developing in C# you can use the 'using' keyword which will automatically dispose resources after their usage.

using(SqlConnection conn = new SqlConnection(...))

{

   conn.Open();   

   ....

}


Problem Example

A database connection is opened and used to access data. 

Unfortunately, if there is an exception other than SqlException or if the exception handling code itself throws an exception the database connection won't be closed. This failure to close database connections could cause the application to run out of database connection impacting application performance.

try

{

   conn.Open();

   // do something with the connection

   // some more processing

   // close the connection

   if(conn != null)

     conn.Close();

}

catch(SqlException ex)

{

   // do exception handling

   // close the connection

   if(conn != null)

     conn.Close();

}

Solution Example

A database connection is opened and used to access data. The finally block will be executed whether there is exception or not, ensuring that the database connection is closed. 

SqlConnection conn = new SqlConnection(...)

try

{

   conn.Open();

   // do something with the connection

   // some more processing

}

catch(SqlException ex)

{

   // do exception handling 

  

}

finally

{

   // close the connection

   if(conn != null)

     conn.Close();

}

 

 

Additional Resources

Related Items

Explicitly Call Dispose or Close on Resources You Open

If you use objects that implement the IDisposable interface, make sure you call the Dispose method of the object or the Close method if one is provided. Database connection and files are examples of shared resources that should be explicitly closed. 


Why

Failing to call Close or Dispose prolongs the life of the object in memory long after the client stops using it. This defers the cleanup and will result in inefficient memory usage. 

When

This guideline should be used when working with disposable resources such as:

  • Database connections 
  • File handles 
  • Message queue handles 
  • Text reader, writer 
  • Binary reader, writer 
  • Crypto stream 
  • Symmetric, Asymmetric and Hash algorithms. 
  • Windows Identity, Windows Impersonation Context  
  • Timer, Wait Handle in case of threading 
  • Impersonation Context 
  • XML Reader 
  • XML Writer 

How

When working with disposable resources call Dispose method of the object or Close method, if provided. The Close method internally calls the dispose method. The finally clause of the try/finally block is a good place to ensure that the Close or Dispose method of the object is called.

The following Visual Basic® .NET code fragment demonstrates disposing resources in finally block.

Try

  conn.Open()

…Finally

  If Not(conn Is Nothing) Then

    conn.Close()

  End If

End Try

In Visual C#®, you can wrap resources that should be disposed, by using a using block. When the using block completes, Dispose is called on the object listed in the brackets on the using statement. The following code fragment shows how you can wrap resources that should be disposed by using a using block.

using (SqlConnection conn = new SqlConnection(connString))

{

  conn.Open();

  . . .

} // Dispose is automatically called on the connection object conn here.


Problem Example

A .NET application opens a database connection. Unfortunately, the database connection is never disposed. Since it is not explicitly disposed the connection will stay active until the application terminates.  This unnecessarily increases the application's memory usage. Database connections are a limited resource, failure to dispose could result in the usage of all available database connections.

SqlConnection conn = new SqlConnection(...)

try

{

   conn.Open();

   // do some processing with the connection

}

catch(SqlException ex)

{

   // do exception handling

}


Solution Example

A .NET application opens a database connection. Calling Close method on the connection object in the finally clause ensures that the database connection is disposed after it has been used.  

SqlConnection conn = new SqlConnection(...)

try

{

   conn.Open();

   // do some processing with the connection   

}

catch(SqlException ex)\

{

   // do exception handling    

}

finally

{

   // close the connection

   if(conn!=null)

     conn.Close();

}

 


Additional Resources

Related Items

Use Try and Finally on Disposable Resources

CRM Saturday Oslo 2017

Please join us on the next CRM Saturday event in Oslo (Norway) on 26th August. My session is "D365 New Features & Deprecations"

Full details and registration can be found on the CRM Saturday website: http://mwns.co/cso2017

CRM Saturday is a Free CRM Technical & Strategy Event Organised by the Microsoft Dynamics Community MVP's For Dynamics 365 Professionals, Technical Consultants & Developers. Learn & share new Skills whilst Promoting the CRM Manifesto, helping organisations overcome the challenges of implementing a Successful CRM Strategy with Microsoft Dynamics.

This is a whole day event with a lot of speakers from all around the world. It is an advertising and recruitment free event, and we are setting up both a technical and a business/strategy track so there will be interesting session for everyone.


Do not use specialized update operation requests in Microsoft Dynamics CRM

In releases prior to Microsoft Dynamics CRM 2015 Update 1, the use specialized messages were required in order to update certain entity attributes. However, with the modern release of CRM, the SDK has been simplified and now supports updating specialized fields using the Update operation. CRM Web API does not support the specialized messages. Once the CRM 2011 services are removed, currently labeled as deprecated, there will be no support for performing these operations.


The following message requests are deprecated as of Microsoft Dynamics CRM 2015 Update 1:

  • AssignRequest 
  • SetStateRequest 
  • SetParentSystemUserRequest 
  • SetParentTeamRequest 
  • SetParentBusinessUnitRequest 
  • SetBusinessEquipmentRequest 
  • SetBusinessSystemUserRequest

In order to update the corresponding specialized attributes, use the UpdateRequest message. Messages can be published from a plug-in, a workflow activity, JavaScript through the services or from an integrating application.

These specialized messages will continue to work with the 2011 endpoint. However, the recommendation is to use the UpdateRequest or Update method when possible to set these attributes. The Update message simplifies the SDK API and makes it easier to code standard data integration tools used with Dynamics CRM. In addition, it is easier to code and register a plug-in to execute for a single Update message instead of multiple specialized messages. The AttributeMetadata.IsValidForUpdate property for the above listed attributes has been changed to true in this release to enable this capability.

You can continue to use these specialized messages of the 2011 endpoint in your code. However, the Web API that eventually replaces the 2011 endpoint supports only the Update message for these types of operations. If you want to get a head start on changing your code to align with the Web API, you can now do so. See Web API Preview for more information.


Impact of this change on plug-ins


When update requests are processed that include both owner fields plus other standard fields for business owned entities, plug-ins registered for the Update message in pipeline stage 20 and/or stage 40 execute once for all non-owner fields, and then once for the owner fields. Examples of owner fields would be businessunit and manager (for a SystemUser entity). Examples of business owned entities include SystemUserBusinessUnitEquipment, and Team.

When update requests are processed that include both state/status fields plus other standard fields, plug-ins registered for the Update message in pipeline stage 20 and/or stage 40 execute once for all non-state/status fields, and then once for the state/status fields.

In order for plug-in code to receive the full data changes of the update, you must register the plug-in in stage 10 and then store relevant information in SharedVariables in the plug-in context for later plug-ins (in the pipeline) to consume.


Impact of this change on workflows

When update requests are processed that include both owner fields plus other standard fields, workflows registered for the Update message execute once for all non-owner fields, and then once for the owner fields. Workflows registered for the Assign message by users continue to be triggered by updates to owner fields.

When update requests are processed that include both state/status fields plus other standard fields, workflows registered for the Update message execute once for all non-state/status fields, and then once for the state/status fields. Workflows registered for the Change Status step continue to be triggered by updates to state/status fields.

Dynamics Sure Step Methodology


Microsoft Dynamics Sure Step is a full customer lifecycle methodology for all Microsoft Dynamics® solutions, providing the Microsoft ecosystem with comprehensive implementations through delivery guidance, project management discipline alignment, and field-driven best practices. Sure Step is designed to enable the solution provider to better serve their customers by helping reduce their Microsoft Dynamics total cost of ownership. Sure Step content covers the Microsoft Dynamics ERP and CRM suite of solutions, including Microsoft Dynamics AX, Dynamics CRM, Microsoft Dynamics GP, Microsoft Dynamics NAV, and Microsoft Dynamics SL. The guidance, tools, templates, and best practices provided in the methodology can help increase the consistency, timeframes, quality, and success of Microsoft Dynamics engagements.

Sure Step is considered a full lifecycle methodology because it encompasses all phases of a customer engagement. Sure Step begins with a Solution Envisioning phase to help customers determine the right solution for their needs.  The Solution Envisioning phase is followed by Solution Delivery phases to implement their solution and to provide guidance for the operation and maintenance of the solution in production. For existing Microsoft Dynamics customers seeking to progress their solutions to the latest product releases, Sure Step also provides Upgrade Assessments in the Solution Envisioning phase, followed by Solution Delivery phases to upgrade their solution and then to maintain the production solution in operation.

Sure Step has six phases: Diagnostic, Analysis, Design, Development, Deployment, and Operation. The Diagnostic phase encompasses Solution Envisioning and provides guidance on product capabilities, including content on focus industries for a corresponding product. The Decision Accelerator Offering is an important part of the Diagnostic phase, designed to reduce the risks and concerns for the customers in their decision-making process for new/upgrade ERP/CRM solutions.


The Sure Step Methodology offers the project types described in the following table:

 

Project type

Description

Standard

A lean approach for implementing Microsoft Dynamics solutions at a single site.

Rapid

An accelerated approach for implementing Microsoft Dynamics solutions with minimal or no

customizations.

Enterprise

A standardized approach for implementing Microsoft Dynamics solutions in complex single-site deployments or in global/multi-site organizations wherein country/site-specific unique business needs have to be factored on top of a core solution.

Agile

An iterative approach to implementing Microsoft Dynamics solutions at a single site requiring specific features and moderate-to-complex customizations. While the Standard, Rapid, Enterprise, and Upgrade project types are waterfall-based, the Agile project type uses the Sprint cycle approach to solution deployment.

Upgrade

An approach to upgrade an existing Microsoft Dynamics solution to a subsequent release of that solution. This begins with a Technical Upgrade to address moving existing functionality to the subsequent release. Any new functionality that is desired can be deployed by using the one of the other project types: Rapid, Standard, Agile, or Enterprise.

Sure Step also features Cross Phase Processes that span the project types. A cross-phase process is a group of related activities that span multiple implementation phases in a specific project scenario. The Sure Step Methodology also provides Optimization Offerings that feature proactive and post go-live services that are designed to assist the customer and solution provider with an additional level of due diligence in the solution delivery lifecycle.

Additionally, Sure Step provides Project Management and Organizational Change Management libraries, with content to support these key functions in a solution delivery engagement. Sure Step also includes an overview of roles typically involved in an engagement, both from consulting (solution provider) and customer perspectives.

Note: Dynamics Sure Step methodology has a strong delivery guidance and toolset for managing an entire Dynamics CRM project, positioning Dynamics CRM as the main element of the solution and the methodology. Enterprise solutions usually consist of multiple products and even diverse technologies, making it challenging to apply the entire process. Applying the templates and recommendations of Sure Step should be always considered and made part of the specific chosen ALM method to lower the risks and to make the CRM delivery process more transparent.

Dynamics Sure Step lacks the guidance regarding the tooling and automation techniques for the specific processes;

the tooling should be always selected according to the specific delivery environment and requirements of the solution.

MSF-based Solution Delivery

The Microsoft Solutions Framework (MSF) provides an adaptable framework for successfully delivering information technology solutions faster and with fewer people and less risk while enabling higher-quality results. MSF helps teams directly address the most common causes of technology project failure to improve success rates, solution quality, and business impact. Created to deal with the dynamic nature of technology projects and environments, MSF fosters the ability to adapt to continual change within the course of a project.

MSF is called a framework instead of a methodology for specific reasons. As opposed to a prescriptive methodology, MSF provides a flexible and scalable framework that can be adapted to meet the needs of any project (regardless of size or complexity) to plan, build, and deploy business-driven technology solutions. The MSF philosophy holds that there is no single structure or process that optimally applies to the requirements and environments for all projects. It recognizes that, nonetheless, the need for guidance exists. As a framework, MSF provides this guidance without imposing so much prescriptive detail that its use is limited to a narrow range of project scenarios.


MSF components can be applied individually or collectively to improve success rates for projects such as:

§             Software development projects, including mobile, web and e-commerce applications, web services, mainframe, and n-tier

§             Infrastructure deployment projects, including desktop deployments, operating system upgrades, enterprise messaging deployments, and configuration and operations management systems deployments

§             Packaged application integration projects, including personal productivity suites, enterprise resource planning (ERP), and enterprise project management solutions

§             Any complex combination of the above

MSF guidance for these different project types focuses on managing the “people and process” as well as the technology elements that most projects encounter. Because the needs and practices of technology teams are constantly evolving, the materials gathered into MSF are continually changing and expanding to keep pace.

As a framework, MSF contains multiple components that can be used individually or adopted as an integrated whole. Collectively, they create a solid yet flexible approach to the successful execution of technology projects. These components are described in the following table.

 

MSF component

Description

MSF foundational principles

The core principles upon which the framework is based. They express values and standards that are common to all elements of the framework.

MSF models

Schematic descriptions or “mental maps” of the organization of project teams and processes (Team Model and Process Model—two of the major defining components of the framework).

MSF disciplines

Areas of practice using a specific set of methods, terms, and approaches (Project Management, Risk Management, and Readiness Management: the other major defining components of the framework).

MSF key concepts

Ideas that support MSF principles and disciplines and are displayed through specific proven practices.

MSF proven practices

Practices that have been proven effective in technology projects under a variety of real-world conditions.

MSF recommendations

Optional but suggested practices and guidelines in the application of the models and discipline.

The MSF Process Model combines concepts from the traditional waterfall and spiral models to capitalize on the strengths of each model. The Process Model combines the benefits of milestone-based planning from the waterfall model with the incrementally iterating project deliverables from the spiral model.

The Process Model phases and activities appear in the following list:

§             Envision: Describe the solution concept and define the project team necessary to deliver it.

§             Plan: Assemble detailed plans and designs necessary to deliver the solution.

§             Build: Construct a solution that includes all aspects of the project needs.

§             Stabilize: Polish and verify that the solution meets customer and user needs and expectations.

§             Deploy: Deploy and integrate the solution to its intended production environments.


The MSF Process Model is depicted in the following graphic:


Iterative Solution Development

 

Iterative Solution Development (ISD) is a methodology used to reduce solution delivery risk and highlight Microsoft’s deep experience building custom application-development solutions. ISD enables on-going productive customer feedback, a single system of record for improved traceability, and consistent guidance on tools and application development recommended practices.

§             ISD is recommended for extremely complex, custom-development solutions.

§             ISD is the Microsoft Services Solution Delivery (SSD) approach for envisioning, planning, stabilizing, and deploying complex custom application development solutions.

§             ISD is derived from Services Delivery Methodology (SDM), which is based on Microsoft Solution Framework (MSF) and sourced from the World Wide Solution Development Centers. ISD is used when Microsoft is the prime contractor for large, complex, and custom application development engagements.

§             ISD leverages five core pillars to ensure delivery: a team model, a mentoring model, a process model, a governance model, and guidance focused on management of the development environment (built on TFS).


ISD Phases

§             The ISD Discovery Phase provides detailed guidance on all technical and business pre-sales activities required to win large, complex, and custom application development Tier 1 deals.

§             The ISD Sketch Phase provides detailed guidance on all of the activities required to successfully deliver a solid statement of work (SOW) for the Build, Stabilize, and Deploy phases. The ISD Sketch Phase is designed to be used on large, complex, and custom application development Tier 1 engagements.

§             The ISD Build & Stabilize Phase is the process of constructing the solution for the customer. This is the main Delivery Management phase. The iteration plan developed during Sketch is executed delivering working features and capabilities for each Release. It is built on the ISD team model and leverages TFS tooling and automation, covering development and test processes, source and version control policies, and testing and QA methods to ensure the ISD goal of high quality solution.

§             The ISD Deploy Phase provides detailed guidance on all the activities required to successfully release custom application development solutions into production. The ISD Release Phase is designed to be used on large, complex, and custom application development Tier 1 engagements.

§             The ISD Support Phase provides detailed guidance on all the activities required to successfully support custom application development solutions once they have been deployed into production. The ISD Support Phase is designed to be used on large, complex, and custom application development Tier 1 engagements.

 

Microsoft Dynamics CRM 2016 Service Pack 1 Performance Benchmark on Azure Infrastructure as a Service (IaaS)

You can download performance paper of Microsoft Dynamics CRM 2016 Service Pack 1 (SP1) running on Azure Virtual Machines. 


Overview 

Microsoft Dynamics CRM is designed to deliver intelligent customer engagement to the market – helping companies deliver customer experiences that are personalized, proactive and predictive. Dynamics CRM helps provide data anywhere and across a wide array of devices, ranging from phones and tablets to PCs, and through a wide array of client types, such as smartphone apps, tablet apps, and Microsoft Dynamics CRM for Outlook. This paper highlights the scalability and performance that can be achieved in terms of concurrent users and feature functionality with the latest release of Dynamics CRM 2016 SP1, running on the standard “off the shelf” Azure Virtual Machines. 



Conclusion 

The results reflect the scalability and performance achieved on a specific Dynamics CRM 2016 SP1 implementation running on standard Azure Virtual Machines in a test environment. Actual performance may vary based on factors ranging from specific customizations deployed to the geographic distribution of users and network latency or bandwidth. Customers should expect that results will vary for each implementation and should perform their own performance testing based on their needs or requirements. In some cases, customers may achieve higher levels of performance by fine-tuning or optimizing the configuration of Microsoft Dynamics CRM. 

These results demonstrate the robustness of Dynamics CRM 2016 SP1 and its capability to handle concurrent user activities with ease for enterprise CRM scenarios. 

You can download from below link:

Microsoft Dynamics CRM 2016 SP1 Performance Benchmark on Azure IaaS.pdf (1,1MB)