CRM 2011: Refresh Subgrids on Tab Expansion
Hi Folks
I just thought that I would share this snippet with anyone who may be interested. I have been looking at form design a lot recently with a view to cleaning the forms up. I have nearly everything in collapsed tabs and I think that this is the way to go for a cleaner form design. The user then sees the tab list and clicks on the tab that they are interested in.
The problem is that when the form is key (Say the Company form) that there may be a lot of tabs with subgrids. As we know already Microsoft CRM will only refresh the first four grids on the form automatically and the rest would require a further click.
I think that this might be mildly soul destroying for most users who click on a tab only to find out that there is a grid that needs a further click if its not in the first four.
What I wanted was a solution that opens all the grids in any tab that has been expanded.
I also wanted to ensure that this code could be run from anywhere in the application withough a ton of parameters.
The Solution
What I came up with was a piece of generic code that can be inserted as a simple web resource. This web resource can be added to any form as the code in it is completely generic and does not use any names of tabs or sections or controls.
Basically the idea is to do the following
1. Add the script as a global web resource
2. Attach the web resource to a form
3. For each tab that you wish to function in this manner attach to the ‘TabStateChange’ event and link to the function ‘GlobalOnChangeTabState’
*** IMPORTANT NOTE: Ensure that you pass the context when you hook up the event on the forms tab.
and you are done.
What I like about this is that its completely generic and can be simply added anywhere.
Have fun…..
Script Below
function GlobalPreLoadSubGrid(name)
{
var gridControl = Xrm.Page.ui.controls.get(name);
gridControl.refresh();
}
function GlobalOnChangeTabState(context)
{
var tab = context.getEventSource();
var currentTabState = tab.getDisplayState();
if(currentTabState == “expanded”)
{
//alert(“Tab: ” + tab.getName());
var tabSections = tab.sections.get();
for (var i in tabSections)
{
var section = tabSections[i];
var sectionName = section.getName();
//alert(“Section: ” + sectionName);
var sectionControls = section.controls.get();
for (var i in sectionControls)
{
var control = sectionControls[i];
var controlName = control.getName();
//alert(“Control: ” + control.getName() + ” Is a ” + control.getControlType());
if(control.getControlType() == “subgrid”)
{
GlobalPreLoadSubGrid(controlName);
}
}
}
}
}
Microsoft CRM Language Translation Functionality for Data
Hi folks, its been a while since I have blogged but its been a busy period for me. However I had a recent request whilst on a project for Multi Language functionality for data.
Multi Language Support for Data
Of course Microsoft CRM supports multi language for the UI but as far as I know this functionality does not extend to data. I googled around a little to see what you clever guys had done but did not find much out there so it was directly to the drawing board for this.
The requirement in this instance was for certain values in the setup data. So roughly around 5 to 7 tables with one field in each. As mentioned setup and configuration data.
Pivotal Inspiration
Having been a CRM specialist for Pivotal CRM (now CDC Software) in the past I started to think about a solution that was used on a project in Belgium. Pivotal have a concept of a descriptor field. This field is a formula field and is updated using other values on the record. By the way Microsoft, this is a great idea and could be put to good use within Microsoft CRM. Anyway, I digress. The Descriptor field always gets calculated dynamically whenever it gets displayed and as such was a great way into language support within the data. Also by way of explanaition, the descriptor field essentially acts like the name field in CRM in that it is the field displayed when linking to the record in question.
Basically the desciptor held the english value except when the users language was different. In this case the descriptor was forced to recalculate dynamically and get a non English value. In this original case French or Flemish.
Microsoft Dynamics CRM 2011 Solution
Having said all that about Pivotal CRM, Microsoft CRM does not have the concept of the formula field that constantly updates itself (sigh – did I mention that this is a great idea?), however where Dynamics CRM is really strong is that we have the power to make this happen.
So what did I actually do?
So what I did is to hook into the Retrieve and RetrieveMultiple messages on the appropriate entities. My view was to then use this to update the name field on the records in question which would give the perception of multi language support. Well its not quite as easy as that.
Ok so we have a Translation table that has a Language type and value and this hooks up to the record that requires translating. It does not have to be done this way but in the interests of creating a more user friendly UI then this design leaves the secondary grid hanging from the setup record form. This table could actually have no link to the record that requires translation but the UI would not be as pretty. My friend Ron (with whom I am working on this project) insisted that we are going for the ‘Apple’ UI and he has done so much good work on producing the perfect UI that I had to do this justice and link the table to the record to be translated.
So the trick here and it is a trick, is to intercept the Retrieve and RetrieveMultiple messages and use this Translation lookup to get the correct value translation for the value. The bonus that I found was that this then worked perfectly without having to update the name field on the record to be translated. All I did was intercept the retrieve or RetrieveMultiple after the process and replace the name field with the translated value. This was unexpected but a great bonus which meant that there were fewer latency issues and we had been worried about latency.
So the results from this are as follows
- When viewing the records in a list view the values are translated
- When viewing on a form the values are translated
- When clicking the choose record icon on a form the record list is translated.
- The values work in a search
- There is no visible latency
We still have some testing to perform on this proof of concept but the solution is performing well so far
We also slightly changed our thinking in that we have 70% English users. So we decided that the name field would always be English and therefore we only run the translate functionality for the foreign language users. This ensures that there is no latency at all for 70% of the users and if there are any unforseen Issues down the road then this functionality can be switched off at any point whilst any issues are resolved.
Anyway, some interesting idea’s here and slick for the end user experience.
Wow, this has been a long blog!
Xrm Marketing Fantasy ?
Hi Folks
I am not sure if this video is tongue in cheek or just me ranting (quietly) but its a bit of fun all the same. I have to admit that I get a little annoyed with the term Xrm. Apparently the definition of Xrm is Crm but not customer facing.
If that is indeed the case then I have been doing Xrm since I started in this game in 1998 but we used to call it Crm back then
So who decided on Xrm. It has to be the marketing guys huh? Its a funky and exciting sounding name and Crm sounds old and dusty so lets replace it. I can see that happenning
Anyway, here is the video of ron and I discussing this one through.
How To Add A Hyperlink To An MS CRM 2011 Record In An Email Through Workflow
Hi all
This post and video is really all about me sharing the love. I had a simple requirement recently for a CRM 2011 system to be able to send a link to a CRM record from within an email that was created by a workflow….. sorry a process.
Now since this is now UI functionality I thought that it would be possible but its not. Why its not I am not sure becuase the code must be in the application somewhere as I can click the ‘Send Link to record via Email’ from any record in the system. That said, it cannot be done from processes.
So I was about to create my own code when I came across the following from Sonoma
http://blog.sonomapartners.com/2011/04/workflow-utilities-for-crm-2011-on-premise-editions.html
This is absolutely everything that I wanted in terms of functionality wrapped up in a small managed solution. Its also pretty easy to use and works on any entity.
So, hats off to Sonoma for doing this and making this generally available to all.
This is Ron and I discussing this
Cheers till next time!
CRM Upgrade: CRM 4.0 to CRM 2011: Update
Hi folks
I know that I have recently discussed upgrades to CRM 2011 but Ron and I felt that we needed to go just a little deeper. It seems from the stats of people reading the blog, watching the video and contacting me about this subject matter that this is a pretty hot topic right now.
So basically this is a similar discussion to last weeks except that we go into a little more detail.
We discuss the steps that I would recommend to get from a 32 bit CRM 4.0 system to an all singing all dancing 64 bit CRM 2011 system.
I hope that this adds to your knowledge on the subject
Feel free to comment
CRM Upgrade: CRM 4.0 to CRM 2011 Overview
Hi folks
I seem to have done a lot of work with upgrades recently and so I thought it may be useful to pass on some thoughts on the subject.
Its tough to go into a lot of detail because there are many seperate scenarios for an upgrade situation.
However, Ron and I made a video and had a quick discussion on the subject.
The simple facts of upgrades are as follows
1. If you are moving your current system to another server you need to re-deploy (or Import Organization after CRM 3.0)
2. Its not the best practice to work on the current production system whilst upgrading. Unless the client really wants to keep the system on the server its already on. Quite often now with the advent of 64 bit CRM 2011 its a must to move to a new server anyway.
3. Upgrading is easy……… right up until you hit issues. Than it becomes much more complex and will swallow your time. Always take backups and always try to test your upgrade process on a vpc or other server if possible.
Anyway, here is a link to our discussion
Good Luck..
CRM 2011 and the new Sharepoint Integration
For a while while now I have been wanting to check out the new CRM 2011 Sharepoint integration. I love the idea of Sharepoint being linked to CRM and of course, this has been done many times in the past but now this functionality is right there and available in Dynamics CRM 2011 right out of the box.
We made a video…
So we made a video that shows me (Sorry about that) talking about the new CRM 2011 Sharepoint Integration and showing this a little on screen.
So try the Integration already
The problem for me trying this is getting hold of a version of Sharepoint 2010. I recently resolved this via a very helpful colleague who has let me have carte blanche over a Sharepoint 2010 systemn that he had previously built. So away we go or so I thought.
Problems problems…
So I originally started with a CRM 2011 Online beta signup and my in house Sharepoint 2010. I managed to follow the reasonably simple installation instructions for the Sharepoint List component but from there could not get this working. After a couple of days of banging my head against the wall here I kind of gave up.
Strangely enough, the following day coincided with the release of CRM 2011 Online and so after stiffening my resolve to get the integration working I signed up for a trial of the real thing. This actually resolved my issues. I can only assume that there are fundamental changes between the beta and release versions of CRM 2011 in this area.
Sharepoint 2010 Integration
After that the Integration is extremely simple to set up and slick to use. I love the Sharepoint List component which is used on the CRM forms and has lots of good Sharepoint functionality built in.
Any document stored in Sharepoint (from the CRM form) is stored in a structured format under sharepoint. So for instance and accounts (“ABC Company”) documents would be stored in Sharepoint under SiteName/Accounts/ABC Company/
Its also possible to set linked documents to store under these folders also. So using the example above, if I then have an Opportunity for “ABC Account” called “New Opportunity” the document would be stored in SiteName/Accounts/ABC Company/Opportunity/New Opportunity/
This is all customizable of course.
Summary
I think that this new functionality is excellent and should be extremely well received by developers and customers alike. I think that there is scope to expand on what has been done to add further Sharepoint functionality but as a first try release this is excellent and well needed functionality.
Enjoy and let me know of any comments questions you have….
Cloud Storage Update, Gladinet and SugarSync
Hello again, it seems like only 5 minues since my last post… oh well it was I guess. Anyway we (Ron and I) promised an update on our previous Cloud Storage video and a number of things have happenned since then.
Gladinet
Gladinet is a product that Ron and I both really liked initially. It works with Google Docs and Microsoft Skydrive which fits in with our thoughts on using one of the bigs guys for actual storage for security purposes etc. It looks professional and it works quickly and there is a full log of everything that is going on.
Synced Folders
One if the other things that Ron and I targeted was synced folders. Being able to put your files up in the cloud is great but unless you are syncing then this is positively useless. Gladinet does not currently do this and so this is currently not the ideal solution.
A recent update on this is that Gladinet have just released a new version v3.0 which introduces the idea of synced folders. I still cannot give a further update as this version is still in beta and so its unfair to review right now. However I can say that its pretty exciting that Gladinet has introduced this feature.
SugarSync
Something else I have been looking at recently is SugarSync. This is a pretty awsome product in many ways and as of right now offers the most complete set of functionality that Ron and I think would be required for a cloud storage solution.
Its a tad expensive but not overly. Its does break away from the initial thoughts that the data should be stored on the servers of one of the big guys… google, microsoft,Amazon as your data will be stored on the SugarSync servers.
I was however prepared to bite the bullet on that one and so I signed up to an initial months deal for 100GB of storage.
The Amazing SugarSync
Sugarsync is a great product. I get cloud storage in any folder that I deem to sync. I get Magic Briefcases, which are the equivalent of dropbox in terms of, wherever you install the client application these folders are aut synced. I also get an astounding array of connectors to get to view my data. In my case I can use the iPhone app to view and potentially email out any of my files in the cloud. Sugarsync also runs on Macs which is I know important for many including my friend Ron.Also in this is the ability to share any of your folders with other people including shared synced folders.
I have to hand it to these guys, they definately have the product in terms of functionality.
There is a point to be mentioned here though of extreme importance. I started syncing up my 40GB of files on my laptop on a Wednesday afternoon and here I am…. not the following Friday but the Friday after that and Sugarsync is reporting that I have…242 files left and so in a week an a half my initial file sync is not yet completed.
I guess this follows with our initial thoughts that we should be using the servers of the big guys to store our data on and I can only imagine that these speed issues are caused by bandwidth availability at sugarsync towers.
Anyway, this is still the best product out there until the Gladinet 3 review (Which looks very pretty by the way) and so I am going to see how Sugarsync works going forwards after the initial sync is complete.
Anyway, Ron and I had a bit of a discussion about this very subject filmed by our able camerawoman Elizabeth. We love the backdrop for this video… another cool Vancouver location brough to you by Alan and Ron.
Please let us know your thoughts on Gladinet and SugarSync. Is there anything else out there that is better?
Microsoft CRM 2011 Field Level Security
So with the launch and go-live this week of Microsoft CRM 2011 Online it seems appropriate to have taken a look at one of the new features.
Myself and a colleague had an ideal opportunity to put field level security to the test.
Scenario
The scenario was as follows. Three security group levels in play, one requiring to see a particular record but not a few specific fields. One group being able to create that record and update those fields but not to update certain other fields and one group with complete access.
This sounds like a bit of a nightmare and probably would have resulted in a couple of days work of code in CRM 4.0.
The whole scenario was done in about 30 mins with a few more mins of tweaking. It works really well and is reasonably simple to set up.
I wish that I could have set this up for security groups and not Teams but I guess that you can’t have everything. My colleague and I have had a quick discussion about this and the resulting video is below
Cloud Storage Skydrive vs Google Docs and Gladinet
Hi there…..
Recently myself and my friend Ron have both been looking into Cloud Storage solutions. I guess that we both feel that the time is right to be storing stuff up there in the cloud. My definition of stuff being documents, pictures, music files, etc.
As mentioned we were both looking at this independently and then started to discuss it.
What we found is that despite everyone moving towards the cloud with electrifying speed, it seems that the ultimate solution does not yet exist or we have not yet found it.
It’s worth mentioning that we are coming at this from a personal angle and so therefore not really looking for business solutions unless one presents itself rather cheaply.
We looked at major software vendors for storage solutions and so Microsoft and google so as to ensure that our data was safe.
We looked at various means of getting files up to these storage solutions including Gladinet, etc.
I think that we both decided that this should not be an article in full but be the beginning of an article as we both expected this to be simply done these days and both found it not so simple. We have posted a quick video on YouTube with our opening gambit.
We hope to get some feedback from you guys out there on what Storage Solutions you use and how you find it.
After we get some feedback (and just after Christmas and New Year) we will post our thoughts.
Initially our thoughts are this
Microsoft (Skydrive)
• Great solution.
• Love the ability to sync a named folder.
• I have 25GB of free space and 5GB of synced folder space.
• Why can I not buy more(I need more).
• Why do I need other software to copy files and folders into this. (Syned takes care of itself though)
Google Docs
• 1GB of free storage but 80GB of storage costs $20 which is the cheapest I have seen (Fantastic).
• No synced folder solution.
• Still need other software to copy folders and files up (Gladinet)
Dropbox
• Lovely interface.
• Seems to work really well.
• Expensive storage fees.
• I don’t really want to move synced folders to my dropbox folder just to make them sync.
On the subject of other supporting software.
Gladinet seems to be the best given the research done so far. Talks to Google Docs and Microsoft Live Skydrive seamlessly.
It does not support synced folders
It costs?
Looked at a few others that all had more serious flaws. Maybe we need to look again, which is why we leave this subject open.
PS. This short video was filmed by Elizabeth L. Thank You

