Monday, August 24, 2015

Sending PDF reports from Microsoft Dynamics CRM

From time to time companies using Microsoft Dynamics CRM need to send out a PDF with the same layout as in a SRS Report or a document mail merge template.
A challange for the consult could be: What purpose does the PDF serve?
If it is a matter of reporting, why not use PowerBI, a dynamic spread sheet or simply let the potential recipients of the PDF gain access to CRM with a speck dashboard containing the relevant data?
It takes some guts to challenge the business users and system owners to think lateral. My opinion is, that looking at data directly from CRM in CRM involves the user the most, due to the human nature of being curious. Looking at data directly in CRM gives the user the ability to dive in to the data and discover patterns, trends and accuracy.

Well, if the company insists on having a report send in PDF format to a target group, there are different ways of doing this. Some of them are listed here:

  1. Develop a script for a button and a plugin, to wrap the SRS report up as a PDF file and send it to some recipients from a list of contacts or users. This approach requires developer skills.
  2. Use a third party tool like MSCRM Add-Ons (not as neat in charting, hence it is based on word mail merge and designed in MS Word) or one of these ISV solutions: https://pinpoint.microsoft.com/en-jo/Applications/12884949612 http://www.dynamicsobjects.com/Products/DynamicsPDF.aspx
  3. Have the report send as is from the RSR scheduling service. Is only working in an on-prem environment.
Again - In respect for you self and the company you are serving, you should ask the W questions before developing your rarely simple script and plugin.

Happy consulting!


Friday, August 21, 2015

Microsoft Dynamics CRM 2015 UR1 - Beyond the limit with transaction.rollback

In my day to day activities I try to evangelize the beauty of Microsoft Dynamics CRM as being the most obvious choice when it comes to an application framework.
I have developed siloed solution based on code that only i would understand. I have seen CRM and business process management solutions that were build for a specific business audience with some fine features and functions, but with limited flexibility when it comes to integration and extending of the features that came out of the box.

Now Microsoft Dynamics CRM has been here for quite some time. 2001or 2003 depending who you are talking to. It is a long time. And over the years the application it self has increased the number of work areas and features significantly.
A side effect is the structured frame work from where you can build almost everything your heart or business desires. Microsoft tend to promote the product Microsoft Dynamics CRM as a sales productivity solution, having al the necessary workloads for optimal sales, customer care and activity management. Now days analytics, mobility and business processes has reached the status of being on top of mind for CIO's, CFO's and CIO's. And some even love to have the ability to extend the solution with integrations to other Line of Business Applications, External datasources, Social media services and more.

And when the integration work begins with throughly discovery of the capabilities in Microsoft Dynamics CRM used as an applicational platform to support al kind of things, I have quite often preached the importance of following guidelines and best practices when it comes to development of integrations. It is fairly simple to do CRUD operations using the api. With a limited effort it is also possible to validate and test any dependencies and constraints before you make the final commit.
BUT up until update roll up 1 for Microsoft Dynamics CRM 2015, it has not been possible to roll your transactions back, when the commit action was executed. Poor attempts from very skilled developers has been made in an effort to mirror the good old transaction.rollback from Microsoft SQL server. The transaction.rollback can be placed in any part of your function or as part of your exception handling. Good thinking when you are doing CRUD's for entities in a structured relational database. Especially when you are handling thousands or even millions of records based on delta or fulldata sets.

NOW the trick is simple - ExecuteTransactionRequest
Read this very fine article from INOGIC to see a detailed explanation.
http://inogic.com/blog/2015/06/dynamics-crm-2015-online-update-1-api-support-for-transaction-4/

So - Would it be possible to include transactional applications like erp solutions - To have a more integrated and effective line of business application...... Based on a web application.... I think so.

Monday, August 3, 2015

Microsoft acquires sales gamification vendor incent games

Interesting way of motivating a sales team to get even better results. Read more...