Saturday, March 07, 2015

Making CRM stick by using Dr. John Kotter 8 Step method - part 7 - Generating short term wins

In this series of posts on how to use Dr. John Kotter's 8 Step method for implementing change specifically in CRM implementations, we have now come to the part about generating short term wins.

I think many of you who have been around in some CRM implementations, especially when using more Classic Project modells, like the waterfall, when replacing older systems with large amounts of functionality and integrations with a Dynamics CRM that management start to question the Project, and maybe suggest pulling the plug, a lot of effort has to be put into convincing the Project sponsors to continue the Project.

This is also the reason why new Project models, such as the agile model has been developed, as this makes sure to deliver short term wins early on, after each sprint. Many Dynamics CRM Consultant also try to phase implementations to make sure to deliver early on.

Dr. Kotter emphises that it is important to plan for short term wins not just to hope for them. They should be quantifiable/measurable so that you can show them to the Project sponsors as clear and undisputed wins.

In the Project, it is adivsable to define the short term wins that you are planning to achieve and assigning a person as responsible for making sure that this happens.

In one of the my upgrade Projects from CRM 4 to CRM 2013 including integrations to an ERP system we initially focused all the energy on the Technical parts of the integration and just making sure that we could get the same functionality that was actually working in CRM 4 to Work in CRM 2013, using the "Information" forms, not the new forms. However, the Customer had been checking out trials on CRM Online and when we started showing them the upgraded CRM 2013 they were disappointed, despite all our really hard Work! We had tried to slim the Project budget by excluding the form upgrade stuff, moving it to a later phase, but the Customer felt that there was no win, the spent a lot of Money in the upgrade, but for no win. So we added a few hours for fixing the forms, and this made the customer a lot happier. We should have planned for short term wins from the beginning, not just the long term win of the upgraded system, and the use of new forms in later phases. Remember customers don't experience your input, they experience your output. Just like with communication.

Gustaf Westerlund
MVP, CTO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Monday, February 16, 2015

Making CRM stick by using Dr. John Kotter 8 Step method - part 6 - Communicating the vision/Empowering Change

The previous five posts on this subject, regarding how to use John P Kotters Change management method called the 8 steps of change have discussed the first 4 steps of the process. It is important to understand that each step in the method builds on the step before. So, to go throught the previous steps to where we are;

First we need to make the decision makers in our organization really aware of the urgency, this should be by being very concrete, what is the benift of using CRM, what is the cost of lost customers, how can CRM change this etc.

When we have gotten the attention of the organizations decision makers, we need to make sure that a guiding coalition is put together that has the right mandate for the job. This typically, from a CRM perspective needs to be people from both the business end, IT and Other related areas like architecture or information management.

It is then vital to create a vision for the CRM implementation that will resonate with the people that are going to be affected by the new CRM system.

Communicating the CRM Vision
Ok, so we have a great vision, should we post it on the Company Intranet and then Everything will be fine? If you have any experience of marketing you probably know that this is not true. When trying to market your Products or services, repeated ongoing and very deliberate action is required to make sure that the vision is properly communicated to all the people that are or will be affected by the new CRM system.

I would also recommend testing to see if the message has been properly received by a couple of the the people that were meant to receive it, as Communication is not so much about what is sent, more about what is recieved.

Empowering Change
Ok, so this is done, you show the sales people the new CRM and then a couple of weeks later you happen to be standing by the coffemachine at the Customer, some salesguys are standing there but nobody knows you as your a Consultant and one of the older and most senior salesguys starts bragging to the younger:
Well I talked to the CEO during our latest golf round and we agreed that I don’t have to waste my time on the new CRM system”

Or you might hear this from a sales guy:
”The new CRM system is great, but I get bonuses for orders, not for posts and likes, so I know where my priorities are”

With opposition like this, in one case a senior sales executive and the other a bonus system that works against the implementation of CRM, the organization is going to have a tough time getting people to Work in CRM. It is vital for CRM implementations that anything stopping people from acting on the change needs to be removed, in the case of the senior sales executive, I would say it was a very bad decision from the CEO to let him slip, but I can understand it as well based on the amount of Revenue some of the senior sales people generate. However, he cannot be allowed to brag about it.

In the case of the bonus system, perhaps implementing some gamification to make CRM more fun or revise the bonus system to build on CRM might be better.

It is also important to elevate those people who choose to embrace the new CRM. Perhaps have an early adoptor competion.

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Saturday, January 17, 2015

Making CRM stick by using Dr. John Kotter 8 Step method - part 5 - Creating a change Vision

Why are is the organization implementing CRM? What is the vision or message that we want to communicate to the organization? Is this a vision that will resonate with the organization?

"The reason we are changing to Dynamics CRM 2015 is that the old CRM system was based on VB6".
"We are moving to Dynamics CRM since the cost per seat is a lot better than Salesforce".

How do you Think the two visions above will resonate with salespeople that need to take time out of their busy days to put a lot of time and effort into Learning a new CRM system, often with new processes. The thing is that the reasons above are both very logical, common and true, but when creating a vision for change it is essential for the vision to resonate with the people it is to be communicated to.

For instance, a vision for the CRM system can be that by centralizing Customer information and making it easily available at all times of Customer interaction, traversing previously impassable organizational division. By sharing Customer information across Corporate divisions the all Customer interactions, it is our strong belief that the Customer experience of our Company will be greatly increased, which in the long term will increase Customer loyalty and decrease Customer churn.

Other areas that are typical for CRM is increased business productivity, more time with customers, information at your fingertips with the mobile/tablet applications. It is also important to not use too much Corporate buzzwords, especially if the recipients of your vision are less formal as these people tend to not buy in to the lingo of sales and management. Why not try it out on a few representatives from each of the roles that your are targeting, and see what they Think. Try to ask the questions in an open manner, for instance "How should we improve this to make the most conservative of your colleagues buy into this?"

The example above is a short and general the vision is a bit longer, but not too long, maybe being divided into different parts. For more detail, please see John P Kotter's Leading Change.


Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Saturday, November 29, 2014

Making CRM stick by using Dr. John Kotter 8 Step method - part 4 - Creating a guiding coalition

”Yeah, I am your go-to guy for the CRM project. But Joe, the CSO, makes all the decisions and has the money, but is not really involved, he won’t really be using the system either, neither will Jill, our CEO.”

How do you Think this CRM Project will turn out?

The stories are many of CRM Projects run by individuals or Groups in organizations with more or less just influential power. All real decision power in these situations reside in individuals that are not directly involved in the CRM Project.

The reason for this can usually be found in the the first stage of this process, if you have been unable to create a sense of urgency in the top echelons of your organization regarding the CRM implementation, the risk is large that none of the decision makers from these echelons will be involved as sponsors to the Project.

In CRM Projects, it is important to get people from both thte IT and the business side of the Company to buy in to the Project and be an Active part of the Project. The CIO and CSO (Chief Sales Officer) or what you might call them, might be involved as sponsors and they might assign people from their organizations to be part in the actual week-to-week Project Group with more limited mandate.

But, the better you do your work with step one the more attention you will probably get from the decision makers, so in smaller organizations, some of the decision makers might even find the Project so important that they will get involved in the nitty gritty. For better or worse.

Dr. John Kotter in his book, Leading Change, in this chapter on creating a guiding coalition also outlines some of the people that you should try to avoid having in your guiding coalitions. If you are interested, do read it!

I ran this presentation, on how to user the Kotter 8 step method in CRM implementations, again this monday on the CRM User Group Global Chapter Meeting in Sweden. It was a great meeting and I really enjoy seeing users meet Other users. For more information on the User Group, check out www.crmug.com. If you are a user of Dynamics CRM, I am sure you will like it and the more people we get to the meetings the more value it will bring to all participants!

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Thursday, November 06, 2014

Making CRM stick by using Dr. John Kotter 8 Step method - part 3 - Creating a sense of Urgency

This is the third part of the series of posts in the series where I am discussing how to use the Kotter 8 steps of change method when implementing CRM in an organization. The previous posts can be found here:
Part 1 - Justification
Part 2 - Overview

"Yeah, we had planned to bring up the decision for budgeting the new CRM system at the board meeting, but we had so many urgent issues that we just didn't have time. Maybe next time..."

Organizations everywhere are choked, especially the successful ones, the ones that have the resources to invest in CRM systems. The effect of this is that everyone can only work with the tasks at the top of their priorities. The first step of Kotter's 8 steps of change, is to create a sense of urgency. In the case of implementing CRM, this means that we have to be very specific about the effects of what will happen if do not implement this right now.

When doing this, we have to, as always, understand the receiver, understand this party's values and goals and try to address these. For instance, if the CEO is a very numbers oriented person you might try to work out how much time each sales person might save by using the new CRM and hence be able to put into working with selling more and generating x-% more income. If the CEO is more of a strategy and visions person, you might show her all the abilities she will get with the system and describing all the strategic advantages of this.

The bottom line is, you need to get the people with the decision power and the money to understand the importance of the CRM implementation project, in order for the project to be properly prioritized. If not, you risk being prioritized as number 11 in the list of the 10 item on the board meeting. And that dial does not go to 11.

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Thursday, October 30, 2014

Awarded Top 25 CRM Site!

Today I was informed that this blog was awarded among many other very great sites, as one of the 25 top Dynamics CRM Sites of the World by the site Dynamics101. It is of course a great honor that someone acknowledges the work that I and all the other people on the list have done and I would also like to encourage all that were not on the list that you might very well have been nr 26 so keep pushing and you will soon get there! I personally have been running this blog since May 2006 so it I will soon be celebrating 10 year and it is amazing to see that there are still posts from 2009 that are popular.

I was also very happy to see that my friend and colleague Rickard Norström's blog was also on this list. My warmest congratulations to your achievment!

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Sunday, October 26, 2014

Making CRM stick by using Dr. John Kotter 8 Step method - part 2 - Method overview

This is the second part in the series on how to make CRM implementations stick in an organization by using the 8 step method described by Dr. John Kotter of Harvard.

The first posting treated the fact that many organization do not consider a CRM implementation a change to the organziation of such a magnitude that it requires a change mangement approach such as the 8 step method. I think that it gives ample evidence for the reasons for why this is not so and that as many as a quarter of all failed CRM Projects could probably have been helped with better change management.

Kotter describes the following 8 step method can in broad terms be described in the following picture:
The Kotter 8 steps of Change
The method required that you complete each step before moving to the next step. It is hence not a toolbox from which you can pick and choose the things which are easy to implement.

As the method is very general and treats many types of organizational changes I will attempt to give some examples of typical problems and suggestions from a CRM implementations perspective.

In the following parts I will discuss the steps in detail, but in short they are:

Step 1: Establishing a Sense of Urgency - many organizations have lots on their tables. If you want your CRM Project to be prioritized and have the resources required, you had better make sure people understand that they need the new CRM system RIGHT NOW. Every week without it is $$$ lost.

Step 2: Creating a Guiding Coalition - You need the backing of the right people to have a successful Project. A CRM Project without the CEO, Head of Sales, Head of Customer Service, CIO will have some issues.

Step 3: Developing a Change Vision - You need to sell the CRM implementation to the people who are going to use it. You need to create a very clear and appealing vision of where the implementation is going.

Step 4: Communicating the Vision - The vision is not going to distribute itself to the users. Create an internal marketing plan for how to get the message out to all users.

Step 5: Empowering Broad-based Action - Make sure that who want to act on the vision can and are not hindered by technology, old procedures, backward colleagues etc.

Step 6: Generating Short-term Wins - Plan for short term wins. Otherwise the risk of being stopped in your tracks Before generating anything substantial is large.

Step 7: Never letting up - Make sure to keep the pressure. There might be bugs, some people might revert to Excel or stop using the system. Monitor usage.

Step 8: Incorporating Changes into the Culture - Not until the CRM system is truly a part of the Company Culture, a part of the management meeting, board meetings, sales meetings, will you have fully succeeded.

The next part in this series will be on the first step of this, the important part of establishing a sense of urgency.

You can find Dr. John P. Kotter's website here:
http://www.kotterinternational.com/about-us/who-we-are/john-kotter/

If you would like to read his excellent book, it is quite easy to find, for instance here: http://www.amazon.com/Leading-Change-With-Preface-Author/dp/1422186431/ref=sr_1_1?ie=UTF8&qid=1414356275&sr=8-1&keywords=Kotter


Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Making CRM stick by using Dr. John Kotter 8 Step method - part 1 - Justification

During the CRM UG Summit I held a presentation on the subject of how to use the method described by Harvard professor John P. Kotter called the 8 Steps of Change to aid in the implementation of CRM in an organization. This is the first blog entry in a series which will discuss this subject. This first post will be on the question of if using this method is even justified?

Many companies do acknowledge that major change in the organization, like a fusion, changing from line to matrix organization, and so on, however, there are many companies that do not acknowledge that the implementation of a new CRM system is a change of such a substantial degree that it does require it to be handled as a change management Project.

If you are not already aware of the failure rates of CRM Projects, do have a look at the following links:

http://www.zdnet.com/blog/projectfailures/crm-failure-rates-2001-2009/4967
http://www.dmnews.com/63-of-crm-initiatives-fail/article/303470/

The numbers vary, if 70% failure or 30%, but the fact is that a substantial amount of Projects do fail and it is important to be humble to this in order to attempt to mitigate the possible risks of derailing the CRM investment.

Forrester researched 150 companies to find out which problems they were facing in their CRM initiatives as described here: http://blogs.forrester.com/william_band/12-03-01-dont_let_crm_pitfalls_trip_you_up

In short the problems can be divided into the following areas:
  • Creating a CRM strategy – 18% strategy,
    • inadequate deployment methodologies (40%)
    • poorly defined business requirements (25%)
    • lack of alignment on objectives (18%)
  • Re-architecting customer-facing processes – 27%
    • including technical/integration difficulties in supporting company processes (48%)
    • poor business process design (31%)
  • Selecting technology – 33%
    • perceived shortcomings in vendor solutions (30%)
    • a lack of skills needed to implement the solution (23%)
    • system performance shortfalls (19%)
  • Implementing customer-centric behaviors – 22%
    • slow user adoption (49%)
    • poor change management and training (36%)
    • difficulties aligning culture with new ways of working (15%) 

Several books could be probably be written based on this. From an implementation perspective, we can note that about 25% the companies, seem to be having no issues major problems with getting their CRM Strategy correct, they have managed to re-architect their processes and the have overcome all Technical issues, but still their issues lie with the implementation of CRM within the organization. If this is not justification enough that CRM is and requires dedicated and very deliberate change management within the organization.

As I Work as a Consultant, often contracted to implement CRM for a Customer, I would also like to note that Managing change within the organization is not something a temporary external party can do, why it is important to assign internal Resources at the implementing organization to drive the change management Project.

A final note, these numbers might be demoralizing if you are looking at starting you CRM Project or have started it, but I would suggest you look at it in another light. By seeing the problems and errors that others have faced and being open and transparent about your own issues you have a better chance of avoiding these pitfalls. I talked to one of the project leaders for one of the biggest infrastructure Projects in Stockholm which will be completed Before time and within budget. I asked her if she could give me one or two reasons why they were doing so well and she answered:
  • We have very senior and technically experienced people in the Project leadership committee
  • We have been very risk aware from the start, and have had weekly risk meetings


Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Thursday, October 23, 2014

CRM UG Summit last week - Avoiding crashed presentations

For those of you who follow me on Twitter (@crmgustaf) you probably noticed that last week I was in St. Louis, US for the annual CRM User Group Summit. It was a very nice event with lots of interesting presentations from a lot of different presenters, Microsoft employees, MVP:s, users with great stories of their experiences and of course the CRM UG team lead by Tony Stein (@tonysteinND) who did a great job of arranging the entire summit!

I was invited to hold three presentations solo and one together with and George Doubinski and Blake Scarlavai.

I will blog about the three first at a later date, this blog will mainly be about the joint one I had, or was supposed to have with George and Blake. It was a Developer jam session and we were to discuss some of our favorite tools. As my absolute favorite tool is Visio, not really a developer tool, but as it is great for structuring the architectural work before you start hacking away, I wanted to show some of the different uses I have for Visio. I had neatly placed everything in a folder, so that I had all the files ready, in my OneDrive... and I had marked it to be offline... but OneDrive did not agree with me and the Internet Connection was sadly very bad, why the audience just got to see the loading dialog for OneDrive...

@georgedude 
My colleague Rickard and I, usually joke about the fact that you have to sacrifice a goat before a demo or a presentation to the God of Demo, otherwise something is bound to break. We have found that there now-days are a lot of clips on Youtube which will do just fine and are friendlier to goats. We have found that just talking about it, is actually better for sensitive stomachs than watching the clips as well.

In this case, I Think I should not have trusted OneDrive so totally. Or I should have had a backup on a USB or similar. Everything actually did turn out all right after all, as George is a pure full blood pro so I just queued him and he spun off like a Duracell Bunny.

My advice to you, is hence to Always have some backup plan as you might not always have your own George Doubinski or some Other Duracell Bunny to jump in.

If you want to get hold of George or Blake to be you Bunny, their Twitter account is below.

George: @georgedude   
Blake: @bscarlav 


Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Saturday, September 13, 2014

Resco javascript development - be careful of variable names

We are all new to stuff sometimes and I am currently quite new to Resco.NET and the JavaScript API it has. There is quite a lot of information and examples on Resco's site regarding this but you know how it is when you get going, you're always looking for something that just isn't there. Today I thought I was missing some vital part of how to parse the data, turned out I was addressing the fields incorrectly, so I thought I'd share it with you in case you ever got into the same spot.

Well, my current Customer likes the Resco mobile client a lot. They like the ability it has for configuration and the fact that it is so configurable and even has API:s allowing us to make custom webpages for them that they can take offline, as Resco does support full offline.

Back to my problem, I was trying to show some data from the account entity on the html-page and as I had previously tried this, I had no problems with the name field. However, when I tried retrieving a field that we had created, let's call it "Type" I looked in the list of fields in Woodford as I thought this was their view of the fields and hence how I was to address it. The name it showed was the weird REST-endpoint name with Camel-case "crmk_Type", but I didn't Think to much about this and used it in my code. The result was that I just got "undefined" as the returned value from the Resco JavaScript Bridge. It took me quite some time and a very helpful support guy at Resco before I opened the form editor in Resco and noticed that the field name set there was the normal name, used in the database/soap webservice, "crmk_type". Upon noticing this, I tried the lowercase version and it worked like a charm.

My conclusion is hence that the field names that are to be used in the Resco JavaScript bridge are the lowercase field names, not the Camel case versions, despite the fact that these are the once that you see in the Field list in Woodford. Also, make sure the field that you are addressing has been included in the the field list. This might be changed in the future. If so, I hope to be able to write an update on the subject.

Here is a link to the Support page at Resco.NET where you can download the bridge file and also at the far bottom, go to the reference pages for the Bridge. http://www.resco.net/mobilecrm/support.aspx

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Sunday, August 03, 2014

US Judge orders MSFT to hand over data stored in the EU

As I have previously discussed (on Software Advice in this article) the US laws regarding the rights for the US legal authorities to order US owned companies to hand over data is very strong. Hence, if one has sensitive data that might be of interest to any government agencies in the US, one should think once or twice about storing it in a data center owned by a US company (like Salesforce.com, Amazon, Microsoft, Google etc.).

A recent case in in New York has shown that this is not on theory but very much practice. In this case regarding an email account probably on outlook.com however the difference to SalesForce.com or CRM Online is purely academic.

On the positive side, Microsoft are fighting back trying to protect their customer, something I am very happy about. I do hope they do this for all customers.

The other direct positive side to this of course, is that Microsoft CRM can be aquired from other sources than from companies based in USA. For instance a standard CRM On-premise installation, or a partner hosted installation, which there are many service providers of, like Midpoint and our my own company CRM-Konsulterna in Sweden. SalesForce.com on the other hand, do not have this option, so if you have sensitive data, be careful, it might be ordered into the wrong hands.

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Thursday, July 03, 2014

Collation and MVP Renewal

When working with CRM systems in non-English countries you often need to take certain aspects into consideration that might have very dire consequences if set incorrectly, one of these is the database collation.

The collation of the database is simplified how it orders characters. For those of you not used to working with multi-language installation with odd characters this might not be something you have considered. As I am Swedish let me give you an example. The Swedish alphabet looks as follows:

abcdefghijklmnopqrstuvwxyzåäö

However using the collation that is default when using English as language in an on premise installation, which is "Latin1_General_CI_AI" (CI= Case Insensitive, AI = Accent Insensitive) the Swedish alphabet would be sorted as follows:

aäåbcdefghijklmnoöpqrstuvwxyz

This is why when installing an organization that is to be used in Sweden, despite the fact that you might have chose to have English as base language, that you need to select the collation that sorts the Swedish characters correctly which for CRM is "Finnish_Swedish_CI_AS".

On-premise setup of CRM - ability to select Finnish_Swedish_CI_AS collation
despite using English as base language

When setting up an organization in CRM online, you cannot chose the collation explicitly which is regrettable and I hope there will be some advanced setting in the future which will allow for this when provisioning new organizations. Check out what happened when I provisioned a new organization in English indicating that I was in Sweden.

The first pick list is for country - I selected "Sweden", the last is for language and I changed from "Swedish" to "English", which were the two only options.
After going through all the three steps you are shown a last instance configuration step.
In the instance configuration screen you can select the base language but there is no selector for collation. I selected "Engelska", which if you have any imagination, means "English".
After, a few seconds, yes, the new installation process is great and really fast, my org is up and running and I jump in to contacts and create to contact and check out the sorting. Any bets?
As you can see selecting English language will also implicitly select Latin1_General _CI_AI as collation which is incorrect from a Swedish perspective, I would have liked to see Östen Svensson at the end of the list, not sorted as "O". 

Collations are integral to the configuration of the SQL database and there are many features of the database like ORDER BY and indexes that depend on the collation why changing collation of a database is very very tricky. It is actually so tricky that it is not supported if you manage to do it with an on-premise, which I have heard rumours of that some people have managed to do. On an online you cannot request it. You will be recommended to migrate the data from the old org to the new.

So let's hope Microsoft will enhance the provisioning experience for CRM Online so that it includes a selector for collation. In the meantime, if you need a special setup, like the one I tried to set up above, English with Finnish_Swedish_CI_AS collation on CRM online I would suggest contacting Microsoft Online support to get their assistance in setting up the instance correctly. Hopefully they can assist in this.

And on another note, I was awarded the MVP award for the third year! A great honour and this very article is dedicated to the very award as two of my fellow MVP:s Shan McArthur and Niel Benson provided with background information to this article. I extend to you a humble thanks!

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Tuesday, June 24, 2014

Some aspects of the composite address fields in CRM 2013

Dynamics CRM 2013 has brought many changes and some are great and some might still need some tweeking. I for one am still looking forward to be able to customized some of the new Composite fields with the fly-outs that can be seen for instance in the name of a Contact or the addresses.

There is much to be said about addresses in CRM by the way, I have previously written posts on this
and in CRM 2013 there is still interesting aspects on this as the address names are not set, in the Composite address fields why you need to make sure that these are properly set if you are going to use the address lookup functions that are available in for instance the quote, order or Invoice entity. My strong advice is also that the addresses of account and Contact be defined, for example, account address1 is visiting address and account address2 is postal address. The reason for this is it simplifies searching a lot when everyone knows what address1 is, and you can also have a workflow or Other logic that sets the addressname correspondlingly.

And just to say this again as I too often run into it, do not add fields to the account or Contact entities regarding address as the built in ones are linked by the platform to the Customer address entity and you need to fully understand how this linking is done and be able to mimic its behaviour for new fields before adding a new address field, otherwise you might be painting yourself into a corner, as the saying is in Sweden.

A nice new feature that I noticed when working with the Composite address fields is that they adapt the layout of the address to the country. See the following example:


Setting of the address in the fly-out
Postal address with Swedish format


Postal address with English format, by changing Country/Region to England.
 

Not sure if you can find any formatting information in CRM regarding this that can be used for Reporting or similar, that would be great though so if anyone knows anything about where this formatting is stored, please leave a comment.

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Monday, June 23, 2014

Troubleshooting networking issues

I often run into people in the CRM field who are very good at one or two things, they might be great programmers or a fantastic trainer. However, one of the skills I believe my customers appreciate that I bring to them is not the extreme depth in a certain field but a very good knowledge of many areas all concerning CRM. This ranges from subject as varied as management Consulting to nitty gritty network fixing, or just troubleshooting why that Outlook client won't work as it should.

And it is in troubleshooting that I think that the breadth of knowledge often does you most value as it helps me to back off from the problem and view it from a different perspective. I also believe that despite the fact that you might have a fancy business card, you should get your hands really dirty to understand what is really going on and what the people are the programmers or technicians are talking about.

And the most important thing about troubleshooting, make sure you have friends, you can never know it all, but with enough friends, there are no limits to what you can know and fix! The best way to get a friend help you in troubleshooting is to help them of course.

I have recently been working a lot with networking and trying to configure RRAS which we use at our lab Environment and I struck a wall and used the Power of social media to ask if there was anyone around that could lend a hand. Thankfully there was, my friend Pete McCollough came back and we met up at a cafe and after some collaborative troubleshooting we found the error and Pete said a wise word that I will remember and would like to share, that being

- Networking is not very complex, but extremely specific

Which he had to explain to me of course as I am only a half-wit. What he meant was that compared to for instance programming Networking is not in its architecture very complex, however, not two systems are identical and usually every component has some part that has been manually configured which turns the troubleshooting hard by trying to find your way around an unknown maze.

In this case I had simply forgotten that our hosting partner had a firewall that blocked 443 and 80 why no traffic got through. I had check the other Three firewalls that the traffic passed about 15 times, but that didn't matter. I so wished I had a debugger that worked for network traffic.

I was also informed that the following blog ranks this blog among the top 50 CRM blogs in the World which of course is very honouring. Maybe I am not a half-wit after all or maybe just lucky.

http://getvoip.com/blog/2014/06/23/great-crm-blogs

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Sunday, June 08, 2014

Unable to publish all in CRM 2013

I am working with a Customer now who is very savvy an wants to do a lot himself, which I generally encourage as this one of the inherent strengths of Dynamics CRM  and it would be sad to take it away. Of course we need a healthy discussion on where the line should be drawn on where he should stop configuring and I continue. In larger systems, you also need to take sandboxing/QA instancing into this perspective which of course makes it a bit trickier but this Customer is not so large so they can, at least for the time being, do their configuring directly in the system. It is always a matter of weighing the costs against the benifits.

However, we suddenly ran into a problem when we couldn't run "Publish All" any more. It just showed a dialog with a cryptic message mentioning object with id [1] missing.

My first thought was that this must be in relation to one specific entity so I started trying to publish one entity at a time (starting with the ones we have changed a lot) and I quite quickly noticed that I got an error when trying to publish Opportunity but not other entities.

I then created a new solution, added Opportunity to this and included all dependencies, and made sure to publish all dependencies Before trying to publish Opportunity, just to make sure that there wasn't some error in CRM:s causality of publishing. After doing this, I finally go an error message which said something useful, it said that a saved Query of a specifc GUID was missing. This probably meant that this Query was being used on a form in a subgrid and had been removed and when trying to publish, it would not, as the view did not exist.

I opened the form, went through all the subgrids and made sure that the selected view was an existing selection, saved and published the form and it worked. After this publish all also worked.

So the general conclusion is that you should be careful when deleting views as these might be used in subgrids, and the second conclusion is that Microsoft hopefuly will add a dependency blocker that disallows the deletion of a view that is being used in a subgrid.

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Friday, May 30, 2014

Issues with the new Plugin Registration tool

As you might have noticed there is a new version of the plugin registration tool out with the new version of the SDK 6.1 released in may 2014. It has gotten a nice facelift in the UI and can now be found in the Tools directory.

However, I have had some issues when working with my on-premise org (it worked fine with online). I got the following error when trying to register a step on a plugin assembly.


Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: Assembly file name (CRMKonsulterna.Modelon.Plugins.dll) is in invalid format. Only file name is allowed.
Detail: <OrganizationServiceFault xmlns="
http://schemas.microsoft.com/xrm/2011/Contracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <ErrorCode>-2147204719</ErrorCode>
  <ErrorDetails xmlns:a="
http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
  <Message>Assembly file name (CRMKonsulterna.Modelon.Plugins.dll) is in invalid format. Only file name is allowed.</Message>
  <Timestamp>2014-05-30T06:58:51.0596986Z</Timestamp>
  <InnerFault>
    <ErrorCode>-2147204719</ErrorCode>
    <ErrorDetails xmlns:a="
http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
    <Message>Assembly file name (CRMKonsulterna.Modelon.Plugins.dll) is in invalid format. Only file name is allowed.</Message>
    <Timestamp>2014-05-30T06:58:51.0596986Z</Timestamp>
    <InnerFault i:nil="true" />
    <TraceText i:nil="true" />
  </InnerFault>
  <TraceText i:nil="true" />
</OrganizationServiceFault>

Server stack trace:
   at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]:
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at Microsoft.Xrm.Sdk.IOrganizationService.Create(Entity entity)
   at Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy.CreateCore(Entity entity)
   at Microsoft.Crm.Tools.PluginRegistration.RegistrationHelper.RegisterStep(CrmOrganization org, CrmPluginStep step)
   at Microsoft.Crm.Tools.PluginRegistration.StepRegistrationForm.btnRegister_Click(Object sender, EventArgs e)


I'm including it all here for searchability. I have highlighted the message that is the interesting part.

When retrying it in the older version of Plugin Registration tool, it works just fine, as long as I re-register the assemblyfile. If I keep the assembly file and try to register the step in the older version (6.0.0001.0061) I will still get the error, so I did have to unregister the entire assembly and register it all over. This also only seems to show up when registering to disk (I havn't tried registereing to GAC as I seldom use that).

Also do note that despite right clicking on the assembly-plugin and pressing "Add step" it seems to omit this information in the form for registering the step so make sure that your step is registered on the correct assembly. I got a bit confused and registered quite a few on ActivityFeeds until I noticed this.

For reference, this is for Plugin Registration Tool version 6.1.0.519 and I am testing it on CRM 2013 UR2 Onpremise.

I am also quite sure these bugs will be fixed soon by Microsoft, but it might be a good idea to keep a copy of the older Plugin registration tool just in case.

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Friday, May 09, 2014

CRM UG Sweden growing

This wednesday we had Another great meeting with the Swedish Dynamics CRM User Group. As an MVP I have the privilage of being able to join these meetings and listening and taking part in the discussions when all these different companies share their concerns, problems and successes with their CRM systems and implementation Projects. It is fascinating to see the bredth of companies that attend, from companies with 2 CRM users to companies with 3000 users. It is an amazing system that can fit that large a difference in what is needed. I sometimes Think that we Work so hard with our every day problems that we might not recognize this simple fact.

The CRM UG in Sweden is new and the Group is rather small, the last meeting we were about 12 people but you can already feel the Power that comes from users meeting other users and sharing their experiences. I am hoping to be able to go to the large CRM UG conference in S:t Louis which promises to be something else.

The next meeting will be on the 3:rd of september and the agenda is not set yet, but it will probably be about a member show case, probably one of the larger companies that is member, and we were also discussing having a presentation on popular 3:rd party Products, but that remains to be seen.

Click this link: http://www.crmug.com/events/crmugsweden9314 to register.

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Wednesday, April 30, 2014

Resco javascript Fetch all account example

I have recently been working on a Proof-of-concept for a customer with the Resco.net mobile platform. It is the first time I have been working deeply with it and I really like it. The woodford customization tool is very powerful and easy to use. It also allows customizers to add custom components such as offline html and js-components that can be used to extend the built in functionality where the standard forms do not meet the customer’s requirements.

In this case my customer wanted me to prove that it was possible to create an overview screen for an account showing lots of related information on a single screen. As Resco does not intrinsically support subgrids, like Microsoft Dynamics CRM does, you have to create this with a custom html which loads this data from the offline Resco storage. In theory this shouldn’t be too hard. It proved to be a bit more of a challenge, especially since the Resco Woodford manual contained some errors why I thought it might be a good idea to publish an example of how a complete code example of how to fetch a list of accounts wrapped in a working html-page that can just be copy-pasted into a file and tested out. This was one of the issues I had as just getting a simple base-line to work from was quite a lot of work.

So, without any more bells and whistles, here is the code:

<!DOCTYPE html>
<html>
<head>
    <title>Account List</title>
<script type="text/javascript" src="JSBridge.js"></script>
<script type="text/javascript">

function writeError(text) {
var error = document.getElementById("errortext");
error.innerHTML = error.innerHTML + "
"
+ text;
}

function callbackAccountsLoaded(res)
{
    writeError("In callbackAccountsLoaded")
    writeError(res);
}
 
function callbackAccountsFailure(res)
{
    writeError("callbackAccountsFailure")
    writeError(res);
}

function onAccountLoad() {
    try {
        writeError("Start!");

        var account = new MobileCRM.FetchXml.Entity("account");
        account.addAttribute("name");
        account.filter = new MobileCRM.FetchXml.Filter();
        account.filter.where("statuscode", "eq", 1); // which have “Active” status

        var fetch = new MobileCRM.FetchXml.Fetch(account);
        writeError("Sending");
        fetch.execute("Array", function (res) { callbackAccountsLoaded(res); }, function (err) { callbackAccountsFailure(err); }, null);
    }
    catch (e)
    {
        errortext("Error: " + e.message);
    }
}
</script>
</head>
<body onload="onAccountLoad();">
<div style="height:300px;" id="errortext"></div>
</body>
</html>

Some of the important points here are:

1.      account.filter.where needs to be used instead of using account.where directly as indicated in the example in the Woodford manual. It also needs to be instantiated with the “MobileCRM.FetchXml.Filter();”

2.      The fetch.execute is referencing two callback functions, one for success and one for failure. Make sure these references exist and have the correct number of arguments.

3.      I have not found any decent way of debugging javascripts within Resco. I would be more than happy to be corrected here. Using alerts will not work on all platforms (Resco indicates alerts do not work on Windows 8 RT for instance). Hence I have created the errortext-method which outputs text in a log-file manner to a div at the end. Make sure that the height is enough.

4.      To be able to load information on the currently edited object, if the iFrame is shown in the context of an account for instance, then MobileCRM.UI.EntityForm.requestObject() has to be used.

5.      The first parameter of fetch.execute indicates how the result is to be formatted. In this example I have chosen “Array”, but there are other choices like “JSON” and “XML” as well. Please refer to the Woodford manual for more information on this.

6.      Do try to use try-catch around a lot of this as any errors will otherwise just not show when run. If there is an error, you can display the message and at least get an idea of what was wrong.

7.      When developing, I like to use Windows 8/8.1 and maybe a CRM Online/IFD environment as that will allow me to install the Windows 8 version of the Resco CRM to try it out. The different platform clients for Resco are 95% identical, some UI differences and I have seen some other differences as well, but in general, it will speed up development a lot and you will only have to do the final development tests on the iPad/Android device.

If I get a lot of interest in this, I will publish more on this subject. As mentioned earlier, I havn’t found that much community content on Resco, the mobile client I currently feel is the premier choice, as the Microsoft Mobile client is a bit simpler in its design, features and also customizabilities.


Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se