Sunday, December 16, 2012

A Couple of Form Security Tricks

Forms have come a long way in CRM 2011 and here are a couple of tricks I use a fair amount.

Hiding Locked Fields

Some forms have fields which simply cannot be taken off the form. A good example is the Account Name field on the Account entity.

image

While we can stop the field from being compulsory, by going to the field settings, we cannot remove the padlock indicating it is locked to the form (and any other forms we create from this one).

The solution is we hide the field in a hidden section. If we create a new section on the form, we can set its properties to be not Visible by default:

image

All we then do is drag our locked field to this hidden section and we no longer see it on the form.

image

image

Please note: If you put a compulsory field in a hidden section and try to save the record it will automatically expose the hidden section so you must make the field not compulsory for this to work (or autopopulate it via jscript OnSave). Also, as in my example, if you are hiding the default name attribute, populate it by using either a jscript or workflow because, otherwise, any child record will show a blank lookup reference, which can be confusing for users.

Dodging Compulsory Fields

Let us say you have a two-step process for handling cases. The call center team receive the emails, quickly reply to the simple queries and convert the trickier ones to Cases for the resolution team. The resolution team then get into the details of the Case and resolve it. It is conceivable that the call center team will not need to know as much detail as the resolution team and, being a team which is dealing with high volumes of queries, simply do not have the time to get bogged down into finding out the important information. It makes more sense for the resolution team to find this information out as part of their investigation.

In version 4, this meant we had a problem. If there are key fields on a Case form needed for things like business reporting, assuming they are compulsory, they must be filled out when the Case is created. Even today, many consultants will tell you to get around the problem we either relax the compulsory nature of the fields or write some tricky jscript to check the role of the user and tweak the fields dynamically.

With 2011 there is a little known alternative approach using forms. As you may know we can create multiple forms for a given entity and assign them to different security roles. We can even create roles with no actual security rights but use them as a way of giving forms to users.

In our case, let us create two forms: one for the call center users and one for the resolution team. We will take the detailed form with all our compulsory fields on it and ‘Save As’ to act as a template for our call center version. The problem comes when we try to remove the compulsory fields; the computer says ‘no’.

image

To get around this, we do a bit of a supported hack/workaround. We go to the field in question, make it non-compulsory, come back to the form, remove it and then make the field compulsory again (you will probably need to publish the changes between these steps as well).

The net result is we have a form with a bunch of compulsory fields missing from it. What is great is the form does not complain when the call center staff use it and hit the save button; it seems saving only checks the fields on the form in visible and hidden sections but not the fields off the form. This means the call center can create the seedling of a Case, assign it to the resolution team and, because the resolution team only have access to their detailed version of the form, they are forced to fill in the rest of the compulsory fields. No code needed and no compromise to what the business needs to capture.

Conclusions

If you are looking at form design and working with forms for entities like Cases or Products, you may have come across the kinds of problems mentioned above. With any luck these tips might save you some angst and code writing, enjoy Winking smile

Sunday, December 2, 2012

CRM: Culinary Recipe Management and Socialisation

In the spirit of my CRM Adventure Game and CRM Hangman I now present using CRM as a recipe database. This is a pre-cursor to my ultimate dream of creating a CRM cocktail database.

There is not much of a lesson here (although I do propose a very practical business use for this a little later on) other than it is something I wanted to do to show the flexibility of the platform (and because I am now doing the cooking in the house and wanted a way to ask “If I have ingredient ‘x’, what can I cook”). As usual, everything I have done here I have done without code and all up has only taken a few hours at the keyboard while watching TV.

The Structure

image

Pretty simple stuff, although I will likely extend it as time goes on.

Essentially, we have a recipe with ingredients. These ingredients are basically a food item with a measure e.g. 1 teaspoon of vanilla essence. A recipe also has equipment used to make it.

The Screens: Recipe

image

Not much to report here. I added the grids to the form to make data entry easier and at the bottom I added a multi-line text box to store the instructions.

The Screens: Ingredients

image

The complication here is I did not need the default text attribute. To get around this I added a new section, made it hidden by default, made the default field non-compulsory and set up a workflow to populate it when the record is created or when the Measure or Food Item fields change.

image

“To Serve” marks if the ingredient is a garnish or not a key component of the recipe.

The Screens: Food Items and Equipment

image

image

Again, simple stuff.

Reporting

One thing, which is always a hassle when putting together recipes is the shopping. Thanks to the Reporting Wizard, I can now select the recipes I am cooking for the week and generate a list of ingredients to check against the pantry and work out what I need.

image

I added in the Serves column because different recipes serve different numbers of people. I could have scaled the recipes to a common unit or split out the numerical component of the Measure field and done something clever by feeding it the number of people I am cooking for and scaling the values with code but this requires effort so I have left it as an exercise for the keen. For now, to use as a list to check what I need, it does the job.

Using Mobile Express, I can also access all of my recipes on my IFD-enabled or Online version of CRM anywhere. Very useful for clarifying whether a recipe needed dried or fresh herbs, for example.

Other Ideas

Other things I have thought of but not implemented are:

  • Adding Calorie information to the Food Items (and then bringing this down to the Ingredients and rolling it up to the Recipe to get the total Calories in the meal)
  • Linking Food Items to each other to record substitutes (or possibly using Connections)
  • Adding matching wines to the recipes
  • Incorporating Food Pairing to create completely new recipes

Using CRM For Socialisation

While this and the two games I previously put together are a bit of fun, there is a way you could use this for business in fostering a collaborative culture. The recipe configurations could easily be incorporated into a production CRM system. Why would you do this? To bring people together. A recipe database is something people can contribute to for the fun of it and give them an opportunity to discuss cooking tips in the office.

The rule could be all new starters must add a recipe to CRM. This gives them an opportunity to learn the system as well as letting others in the team know a little bit about them. Maybe it could form the basis of an office cook-off.

Alternatively, perhaps your team are keen gamers or movie buffs. If so, why not add a review section to the CRM system. Maybe you want to add a swap-meet section so people can sell old items through the corporate CRM system and deliver them through internal mail in the name of bringing people together.

Conclusions

The Dynamics CRM platform is very flexible and allows us to store organised information for practically any purpose with little, if any, coding. While a recipe database may not the obvious choice for an enterprise CRM system, it is easy to implement and provides a reason for people to come together through something other than the daily grind. However, if recipes are not your thing, try something else. The only limit is your imagination and the courage to do something different for the greater good.

Sunday, November 25, 2012

Salesforce Third Quarter Results for 2012

Another quarter and despite it, again, being represented as a solid result, the fundamentals have deteriorated. As usual, I stick mainly to GAAP (Generally Accepted Accounting Principles) results which Salesforce presents to the Securities and Exchange Commission (SEC) rather than the non-standard results presented by Salesforce to the public. There will be one significant exception for this quarter which is a $149 million tax offset but we will get to that in a bit.

Earnings Call Buzzword Bingo

As we did last quarter, let us see what is on the minds on Benioff and Smith this quarter.

This Quarter’s Keywords (total words: 3000) Last Quarter’s Keywords (total words: 3200) Last Year’s Keywords (total words: 3400)
revenue (38 times) revenue (39 times) revenue (31 times)
cloud (20 times) social (21 times) social (23 times)
growth (17 times) cloud (20 times) cloud (15 times)
customers (13 times) growth (19 times) growth (14 times)
social (13 times) cash (17 times) enterprise (13 times)
marketing (10 times) operating (17 times) sales (12 times)
service (9 times) service (15 times) customers (9 times)
cash (9 times) enterprise (10 times) chatter (8 times)
sales (9 times) customers (9 times) expense (8 times)
customer (8 times) dreamforce (9 times) heroku (7 times)
enterprise (7 times) marketing (8 times) subscribers (6 times)
mobile (7 times) sales (8 times) service (6 times)

Key phrases (two words or more) for this quarter included:

  • deferred revenue (14 times)
  • cash flow (9 times)
  • revenue growth (6 times)

It is fair to say revenue and growth are the focus for the CEO and CFO, as they always have been. As usual other key financial measures, such as profitability did not rate. However indirectly, as we will see further on, Salesforce have clearly communicated what they consider their future prospects for profitability are.

New Topics

The only new topic on the list is ‘mobile’; a hot topic in CRM as people move beyond the laptop/PC.

Topics in Decline

As was the case last quarter, mentions of social are down about one half from last year. I speculated last time this was due to the backlash against 'Salesforce using the term ‘social enterprise’. Given that phrase was not said once this time around, in keeping with Benioff’s commitment to abandon the expression, this could be the reason.

Topics on the Rise

There is a focus on marketing, whereas this was not mentioned a year ago and is in keeping with their acquisitions of Radian6 and Buddy Media.

The Big Write-off

Before I get into the financials, there is something that must be addressed. If you look at the numbers, you will see Salesforce has put aside $157m for taxes (a number well outside of historical norms) and this has led to a quarterly loss of $220m and a financial year to date loss of about a quarter of a billion dollars. Given last year’s loss was $11m, there is something clearly out of the ordinary here.

This is how CFO Graham Smith described it:

“Our GAAP results this quarter include the impact of a onetime, noncash charge of $149 million to establish a valuation allowance against our federal and state deferred tax assets.”

“Deferred tax assets on the balance sheet represent the value of tax deductions and credits to offset future tax liabilities. These assets include net operating loss carry-forwards, R&D credits and book/tax timing differences, such as accrued liabilities. U.S. GAAP requires companies to regularly assess the realizability of deferred tax assets by evaluating certain criteria. These criteria include whether the company has a cumulative 3-year historical pre-tax GAAP loss, as well as the timing and likelihood of near-term GAAP profitability.

After performing this analysis in Q3, we determined that a valuation allowance was required as near-term realization of these assets is unlikely. But just to be clear, our deferred tax assets have expiry dates many years into the future. And so we do anticipate being able to use these assets at some point to offset perspective tax liabilities.”

If you are like me, you did not understand a word of it. The best article I can find on deferred tax assets is this one from the Motley Fool. This is my interpretation of the situation. If you make a loss as a company you get a tax credit with the idea being that when you finally make a profit, you can offset the tax you would normally pay with this credit. On the accounting books this tax credit is carried as an asset because, in some ways, it can be thought of as a bag of money standing by to use to pay taxes in the future.

However, what if a company never makes a profit? In this case the asset will never be realised i.e. the credit will never be used and having it on the books is misrepresenting the true value of the organisation. To keep the asset value of a company accurate, the government has put in place certain ‘triggers’ which mean a company must assess the likelihood that such an asset will be used, if one of these triggers goes off. In the case of Salesforce, the trigger was making a net loss over the past three years. Yes, despite all this awesome growth, Salesforce has lost more money than it has made over the last three years.

Salesforce has reviewed the likelihood that they will use this asset i.e. make a profit and determined that $149m of this tax credit will never be realised. This can also be seen in the balance sheet where ‘Deferred Income Taxes’ has gone from $165m down to $21m.

So to make this clear, when Graham says “near-term realization of these assets is unlikely” he is saying “we are not going to make a profit any time soon”. He then makes the plea that at “some point” they will use it but, frankly, if there was a reasonable prospect of using them, they would not take them out of their assets. You can stretch your optimism in an earnings call but the government require you to be practical.

Ultimately though this is a write-down and does not reflect their current business operations (more their future prospect of making a profit) and so I have removed the expense from my financial calculations below. We will see, even with this item eliminated, things are not rosy when we look beyond revenue growth.

Revenues and Costs

image

Green is cost growth year-on-year and red is revenue growth year-on-year. As Benioff mentioned, year-on-year revenue growth came in around 35%. What he did not mention was that to achieve this, they had to grow expenses by 42%. This is disappointing. In the previous four quarters they had successfully tempered cost growth and brought it back to the same rate as revenues. Unfortunately, it seems to be impossible for Salesforce to reduce the rate of growth of costs to below that of their revenue and therefore head towards profitability. We can see why they needed to write down their deferred tax asset.

image

In terms of absolute numbers, the only notable change is the larger loss. Excluding the write-off, the loss to the business for this quarter was $70m. This is a larger loss than the previous five quarter losses combined. The largest profit made by Salesforce in a quarter was $21m this time two years ago (and also back in 2009). So this quarter’s loss is more than three times the largest profit ever made in a quarter.

Margin

image

Some of you may remember my log scale graph from last year. While the shape is similar, the difference here is this is not a log scale. nothing is being stretched here. The fact of the matter is, even with the massive $149m write-off removed, margins are plummeting, down to –9% this quarter. In other words, for every dollar they spend on generating a sale, they return around 91c. we are now at a point where Salesforce is selling $10 notes for $9.

Staff Numbers

Marc mentioned that staff numbers were up 34% from this time last year, which is true. What he did not mention was this is the slowest rate of staff growth in two years. Around 40-50% year-on-year growth has been the norm for the last year or so. In other works, staff growth appears to be tailing off.

Conclusions

Despite a deterioration in profitability, this has not deterred Benioff on his focus on revenue growth at all costs, literally. My hope last quarter was that Salesforce would return to profitability but this is unlikely to be the case any time soon. This deterioration of position is confirmed in the declaration of the CFO that Salesforce will not be making a profit in the near future and the subsequent revaluation of their ‘tax credit’ asset.

As usual I hope Salesforce can turn things around as competition is a good thing. If not they will continue to bleed money and dig themselves a hole that it will become increasingly harder to get out of.

Tuesday, November 13, 2012

A Stellar Roadmap for Dynamics CRM?

The past six months have not been the steadiest of courses for Microsoft and their CRM product. Microsoft announced grand and exciting plans, as discussed last month. Dynamics CRM partners and MVPs were frothy at the mouth with the new things coming and many could not believe Microsoft had transitioned from their traditional three-year cadence to a six-monthly one and still managed to deliver such bounty.

As it turned out it was too good to be true and at the eleventh hour Microsoft pulled some of the more exciting features delaying them for six months.

After regrouping, Microsoft have released their new and improved roadmap for the upcoming December 2012 Service Update (called ‘Polaris’) and the one after this to come mid-year 2013 (called ‘Orion). I thought it would be a good time to see what they have planned for these two releases.

The November 2012 Statement of Direction

If you want to read the latest roadmap and read about Polaris, you can do it here. There is even a promotional video showing Microsoft’s Dynamics CRM / Windows 8 vision. These are my take-outs from the Statement of Direction.

The Charter

To make it absolutely clear that Microsoft has a set of guiding values and principles, they called out their CRM ‘Charter’.

image

I personally like it. There is nothing concrete here e.g. when specific functionality will be delivered and this is as it should be. These are simply the values which Microsoft are calling out as their criteria for including or excluding features in the product.

For example, the ‘Ubiquitous’ values make it clear that Microsoft will not go down a path of ‘lock in’ with Internet Explorer or design CRM to only work with a keyboard. If the use of Kinect as an interface becomes popular, this value also embraces that as a choice. If the business world starts using RaspberryPi devices, Microsoft has a clear charter to build CRM for these as well.

In terms of exclusion, the ‘Productive’ values make it clear the plan is to bring further integration between Dynamics CRM and ‘the stack’ (other Microsoft products). This means that products like Lync and SharePoint will become more intimately entwined and, while there will be ‘hooks’ available for alternatives, this will not be an area of strong investment.

Investment Areas (Polaris)

Both the Statement of Direction and Release Preview guide talk at the areas of investment for the upcoming releases. These are broken down into:

  • Applications (sporting a picture of a Windows Phone with ‘apps’ icons)
  • Experiences (showing someone operating their Windows Phone and slate)
  • Platforms (showing an oil rig platform. Seriously, what?!?)

The Polaris summary graphic gives the highlights:

image

Here are some of the major call-outs:

  • Applications
    • Configurable sales and service processes: Think Solution Selling or at least a Microsoft version of it
  • Experiences
    • A UX to match the process changes

image

    • Yammer integration: While the Record Wall was nice, now we have a true Chatter contender. Security management will be interesting
    • Multi-browser support: IE, Chrome and Firefox on Windows, Firefox and Safari on Macintosh
    • iPad support (although they are saying only for the sales process)
  • Platform
    • Skype built in: I imagine this will be click to call, like the free Skype add-in for Dynamics CRM 2011, but will not pop up boxes for incoming calls. I hope I am proven wrong
    • New bulk data API: This means we should be able to get imports at rates higher than 50 records/second. That is fantastic news for projects with big data sets to import
    • Custom workflow assemblies for CRM Online: Bringing it in line with On-Premise deployments

Investment Areas (Orion)

Thanks to the CRM User Group (CRMUG) and new CRM MVP recruit Chris Cognetta we have the Orion summary graphic:

image

Given Chris assures me this has been presented at CRMUG, it should not be in violation of my MVP NDA but, if it is, I am sure Microsoft will let me know and I will take it down.

Interesting items mentioned here are:

  • Exchange server synchronisation: This used to be in v1.0/1.2 but was abandoned all those years ago. It looks like it is back
  • OWA and MOWA support: So many times I get asked if CRM works with the Outlook Web App (OWA) and have to say no. In six months this may not be the case
  • Integrated marketing management: Given Microsoft just acquired MarketingPilot, which appears to be quite a comprehensive little package, this could be what they are referring to here. If so Core Motives, Click Dimensions and Exact Target must be very nervous

Other Stuff Hinted At

Things mentioned in the Statement of Direction but not explicitly called out for the Polaris or Orion release are:

  • A new ‘agent desktop experience’ for Service: I am wondering if this is an overhaul of the old Customer Care Accelerator
  • Centralised administration for CRM and Office 365: Unfortunately this is unlikely to be case in the short term for Australia due to third line reseller entanglements
  • Lync integration: Likely to be similar to the Skype in that is will be call out but not inbound pop-up enabled for CRM (again, happy to be proven wrong)

Conclusions

One thing which interests me is the clear shift from creating a ‘process platform’ to a sales/service tool with configuration capabilities. From a marketing perspective this makes sense as it is much easier to show a tangible sales process than a set of configurable tools to match any work process. Whether the xRM capability of the platform will be compromised by this is yet to be seen.

On a more positive note, to be honest, this is the first time in a while I have confidence that Microsoft have a clear direction dictated internally and not by the competition. Microsoft are defining a clear path, separating them from the competition, rather than saying “Us too!”. Microsoft are not pleading their cloud credentials or trying to tell us how social they are. They are simply stating the values driving them and the features they are bringing to their product to support these values. I applaud the new approach and wait eagerly for Santa Ballmer to deliver his goodies.

Sunday, November 4, 2012

50 Shades of CRM: The True Story of the CRM Field Guide

This is the history (and a bit of a book review) of the CRM Field Guide (http://www.crmfieldguide.com). To paraphrase a much greater tome, to tell the story of the book it is best to tell the story of some of the minds behind it.

History

On the 9 December, 2009 George Doubinski, a CRM MVP whose generosity is only matched by his dry Russian wit, wrote:

“Hi MVPs,

I’m probably one of the least qualified people on the subject yet for some inexplicable reasons I’ve been approached by one of the publishers about writing a book about new version of CRM. Writing a book, as some of you will vouch, is a tedious and time-consuming exercise. If you are looking for a return on investment, your time will be better spent flipping burgers. Genuine love of writing,  glory (albeit, a minimal one) and vanity are the only true reasons to even contemplate writing anything.

Having considered that, I still think that “MVP Cookbook on Microsoft Dynamics CRM 5” is not such a bad idea. Collection of recipes coming from people who do know their stuff.

I’m sure some of you have already been approached in the past and may have refused the offer of writing a book but a contribution of just one or two chapters is a significantly smaller effort and might just work. So if you believe that it’s not a scheme heading for an absolute disaster, please get in touch with me off the list.

Note that you will have to have access to CRM5 TAP with a signed NDA, of course.

Thanks

George”

Despite many positive responses, essentially nothing happened for about a year. Then on 13 August 2010 when, undeterred by the apathy of his comrades, George wrote:

“If you recall I floated idea for MVP cookbook some time ago after being one of the many approached by the same publisher… A few of you have responded and expressed the interest to participate and believe me, I have not forgot, simply was running inside the hamster wheel for a while. And with 2011 upon us, we probably need to re-group anyway.”

At this point I, and others, jumped on the book bandwagon. I wrote a chapter on workflows and dialogs and others threw in their bits and pieces.

Unfortunately the progress of others was slow and after yet another year all we had was three chapters (including mine) totalling about 150 pages of unedited content. The vision of an MVP-written book on CRM was fading.

By the end of 2011, CRM MVP Donna Edwards made one last-ditch attempt to restart the MVP book engine. Here is an abridged version of her email:

“As most in this email thread are aware, we kicked off a CRM MVP book project about a year ago.  We hit some bumps in the road and stumbled a bit but the good news is we are back on track with a stellar group of contributors.  If you are included in the To: line above, then you agreed to contribute one or more chapters to the CRM MVP book.  What an awesome bunch of individuals and I am thrilled to have each of you onboard!

Below is the list of book sections, chapters and authors.  As you will see, we have a great lineup and I think a good matching skillset for each chapter.  I hope you are all happy with the identified content.  Please contact me if you think we’ve missed something critical or have another chapter you’d like us to consider including.  As it stands now, the book should come in at over 600 pages”.

With Donna and Julie at the whip, not only did 19 CRM MVPs produce a book but it managed to overtake the 600 pages, eventually coming in at 940 pages.

Content

Despite my hideous bias, I think it is fair to say the book is comprehensive in its coverage. Topics include:

  • Server/Client installation
  • Security setup
  • Report development
  • Integration
  • Configuring CRM and packaging configurations in solutions
  • Data management
  • User adoption strategies and tips from the trenches

It is also fair to say that, given the broad scope, there are areas where it is shallow in depth. For example, there is little code in the book (however the chapter on solutions is, by any measure, comprehensive). Similarly, my chapter of processes covers the essentials but, in terms of using processes you could write a whole book (and Richard has).

Review

Obviously, given I wrote a chapter, count most of the authors as friends and receive a cut of the sales, it is difficult for me to review the book without some conflict of interest. However, I do believe there is something for everyone. If you or your team need to have a broad range of skills, in regards to Dynamics CRM, this is a great pdf to add to your reader. If, in reading the field guide, you determine there is an area you need to dive deeper, you can select one of the more focussed books in the market.

In terms of the quality of the content, it is difficult to argue against the pedigree of the authors, given they are all CRM MVPs and, moreover, we all got to pick the CRM topic we are passionate about or have strong knowledge of. In my case, I have a passion for processes in CRM, if only because they give me the power to make CRM do things only possible otherwise through code. However, I know precious little about the email router whereas Giorgio had written extensively on the router prior to the book and therefore was in a perfect position to create an informative, quality chapter.

Conclusions

While the book has literally been over 1000 days in the making, I believe the wait has been worthwhile. The book is the distilled wisdom of about 1/3 of the world’s CRM MVPs and from http://www.crmfieldguide.com is only $49.99. It is fair to say even MVPs will learn something from this book (and I intend to).

If you want to try before you buy, I do run the CRM MVP Gospel twitter feed (@CRMMVPGospel) which quotes a line from a random page in the book each week. While the feed may not change your world, it will give you an idea of the subjects covered in the book and who wrote them.

Once you have sampled its wares, head to http://www.crmfieldguide.com and get yourself a copy. I doubt it will be as popular as “50 Shades” but, unlike that novel, the vast amounts you learn from it you can employ in the workplace without fear of permanent injury or scarring.

Tuesday, October 30, 2012

Making Records Invisible In Dynamics CRM

CRM security is very powerful but it does have its limitations. One is that while it is possible to give someone access to a record they could not otherwise access, via Sharing, there is no clear mechanism to turn off access to a specific record. For example, let us say I work for that famous imaginary charity ‘MVPs For World Peace’ and the celebrity ambassador for the program is Ray Tomlinson, inventor of the ‘@’ symbol for emails. It is possible the events team need to capture their communications with Ray and book him as a guest speaker. However, being someone of note, it is not appropriate for everyone to have access to his details. Similarly, other notable characters may join the cause and they would also need to have their details restricted to only the events team.

Perhaps with the pending American elections, certain big name politicians may join the noble cause and different sets of users (the public relations team, for example) would need access to their information while restricting others.

So how do we set up a system in CRM such that we can create groups of Contacts (or any other entity for that matter) which only certain people can access and add records to the groups, as required?

‘Version 4’ Security Options

Back in the days of Dynamics CRM 4 we had the following tools in our security toolkit:

  • Users can own records
  • Visibility is at the user, business unit, business unit and child units or organization-wide
  • Records can be shared with users and teams

To make records invisible on demand, we have to do something like change ownership of the record to a user in another business unit and use code to automatically share the record back to the users who are permitted access. The maintenance is messy and has the potential to clog up CRM with all the security exceptions that need to be tracked and constantly checked as records are accessed.

I have seen systems like this with literally millions of share exception records. They are unscalable and the only way to keep CRM functioning at an acceptable level is to constantly throw hardware at the problem.

2011 Security Options

The security model has changed slightly in CRM 2011 in that users AND teams can own records. Teams get a role assigned to them to determine they rights in regards to records so now all we have to do is set up the business units something like this:

image

In this scenario all users sit in the main business unit and have Business Unit access to all Contacts. Everyone can see all the Contacts in the system. We now create a child Business Unit and into it we add our restricted access teams (the Celebrity Team and the Political Team). These teams have a role assigned to them with user rights to Contacts. We also add the users to each team who we want to have access to the restricted records.

In the case of Ray Tomlinson, if his record is owned by a user, it ‘belongs’ to the Primary Business Unit and everyone can see it. However, if we assign it to the Celebrity Team, it now ‘belongs’ to the Restricted Access Business Unit which means no user can see it other than those who are members of the Celebrity Team and who have access to all records owned by the Celebrity Team. Problem solved, no code and no scaling issues.

Conclusions

There are many CRM 4 systems out there with complex code managing complicated security rules. If you are in this scenario, consider the new flexibility offered by the team ownership in CRM 2011. It is likely that by employing team ownership in creative ways, a lot of coding and maintenance time can be eliminated and CRM can be restored to a robust, scalable system.

Sunday, October 14, 2012

An Alternative Method For Data Enrichment

I recently had a problem with a data import. The data had imported fine but a few hundred contacts were not imported with their email addresses (the client had forgotten to update the source data). The client had an Excel list of email addresses and ID numbers (not the GUIDs but unique integers which were imported and matchable) to identify the correct Contact in the database. Now all we had to do was ‘enrich’ the associated Contacts in CRM.

The Problem

The supported option for data enrichment is to export the records from CRM you wish to update and then use the import wizard to reimport them.

image

The problem in this case was there was no simple way to isolate the records that needed updating. I could have exported all the Contacts in the system and used a vlookup but there were more than 10,000 and the export from CRM, by default, is only good for 10,000 records.

It is possible to increase this limit but, in this case, we were on a deadline and the bureaucracy meant I was motivated to find another way, ideally codeless.

I could have used a lot of “Contact ID equals ######” linked by a Group OR but, given there were a few hundred records, I did not fancy this option either.

The unsupported option was to make direct update calls to the database but I try to avoid unsupported solutions unless absolutely necessary.

The Solution

There was no way for the import wizard to update the fields on an existing record (without exporting first) but I could add a child record to the Contact. In this case, as it was unused in the solution, I used the Opportunity entity. I used the topic field of the Opportunity to hold the email address and mapped the Customer using the ID (mapping to the correct Contact using the ID is done like this).

On top of this I created a workflow which, on the creation of an Opportunity, went to the parent record and updated the Contact email address with the value in the Opportunity’s topic field.

image

image

The result is we import our file of IDs and email addresses in as Opportunities. When the records are created, the workflow kicks in and updates the Contact linked to the Opportunity.

All we are left to do is bulk delete the created opportunities and remove the workflow.

Suggested Improvements

There was one other complication not mentioned above which was we also needed to populate an ‘Email ID’ field for integration to a third party system. This proved a bit tricky as it was an integer field and workflow will only populate an integer field from a money, float or integer field, not a text field. In the end I used the Freight Amount field but it is conceivable that, in the general case, either there is no child entity to use or, if there is, it does not have the right field types for workflow to copy the values across.

In this case I would create a new custom entity with the right fields on it, populate via import and use the workflow to flow the values up to the parent record. A little extra overhead but still only 15-30 minutes work, no need to get IT Administrators involved and no Excel formula fiddling.

Conclusions

If you need to update records and

  • there is no simple way to isolate the records with an Advanced Find query
  • there are too many to manually update them
  • there are too many Contacts to export the entire list

This little trick will do the job. It is codeless and takes 15-30 minutes to set up and avoids the need for involving administrators, Excel formula, unsupported hacks or coded solutions.