CRM 2016 – Failed to generate excel

There is an odd bug which I found when I selected all the fields on an opportunity record in an advanced find and then tried to export the records to excel.

Data import error 2

What made this error annoying was the download log file was greyed out, so it was difficult to investigate.

The reason for the error is because there are two fields with the same Display name, in this case it was two fields with the name Proposed Solution.

excel error

To resolve the error you need to rename one of the fields and you will be able to export from Excel again.

You could also not select the duplicate fields and this will work around the error.


Hosk’s Top CRM Articles of the week – 27th June


I hated every minute of training, but I said, ‘Don’t quit. Suffer now and live the rest of your life as a champion.

Muhammad Ali


  • A company can save money on all parts of the business, but never on ideas #HoskWisdom
  • Training and learning are not the same thing. Many people learn nothing from attending training sessions. #HoskWisdom
  • Learning can happen anytime and anywhere you want it to #HoskWisdom
  • Stay curious and question everything #HoskWisdom
  • A CRM project is a way to align your business objectives with a CRM solution #HoskWisdom
  • Curiosity leads people to opportunities, courage turns opportunities into success #HoskWisdom
  • If you think you are always right, then you are wrong more than you know #HoskWisdom
  • If you want to make strategic decisions you must make time to think #HoskWisdom
  • Tell customers what to expect in their CRM projects so they don’t overreact to bumps in the road #HoskWisdom
  • The value of a CRM project to a customer should be more than the price #HoskWisdom
  • Justify the price of a CRM project, do not apologise for it #HoskWisdom
  • Every CRM project is a success or failure before it has started #HoskWisdom
  • You don’t get requirements from companies you get them from people #HoskWisdom
  • Don’t react, instead think then act #HoskWisdom

Want #HoskWisdom then follow #HoskWisdom or follow @BenHosk

Article of the week


Best of the Rest

comparing CRM Online with CRM On Premise

Why Code Readability is important

Forms in Microsoft Dynamics CRM 2016 which can’t be missed

MB2-712 – CRM 2016 customisation and configuration Hosk study notes

interesting way of using a blog
Microsoft Dynamics CRM 2011 Notebook
Microsoft Dynamics CRM 2013 Notebook

Dynamics CRM’s invisible man: the Delegated Administrator

Unhandled Exception: An easy guide to interpret Dynamics CRM error messages

Thoughts on CRM Design and converting user requirements to CRM solutions

CRM diagnostic now available in Office 365 Support and Recovery Assistant (SaRA)

CRM 2016 – What you need to know about Themes

Migrating old CRM KB Article data to the new Knowledge Article

The importance of keeping the same guids between CRM instances

Unhandled Exception: An easy guide to interpret Dynamics CRM error messages.

CRM 2016 – Import error – A validation error picklist is outside of the valid range

Koen’s CRM Blog – CRM Giants

Why isn’t code reused in Microsoft Dynamic CRM projects?


Today’s Employees Expect Their Employers to Be Digital…Are You?

This Is What Actually Happens to Your Body When You Don’t Get Enough Sleep

Netflix is on a path to dominate the world, but will its culture survive?

Microsoft: Nearly one in three Azure virtual machines now are running Linux

The Management Myth

Google Reveals Its 9 Principles of Innovation

Don’t just code: Career advice from the programming masters

Where the web is going in 2016

The Hosk is currently reading

Useful Hosk Links

Hosk list Of CRM 2013 Tools

A list and review of CRM 2013 tools, this will probably work in CRM 2015 as well

Hosk’s CRM Developer Articles

A collection of my favourite CRM Developer articles I have written

MB2-703 – CRM 2013 Customization and Configuration Certification Information

All the CRM 2013 content to help you pass the exam

HoskWisdom – Hosk Developer Quotes

 Words of Wisdom from the Hosk.  I have written over 1000 articles, surely I should have said a few memorable things

CRM 2016 – Import error – A validation error picklist is outside of the valid range

Hosk the master of the CRM error blog post said no one ever, steam rolled into another frustrating error.  Exporting and importing data rarely goes without problems because data always finds a way to get itself into a non importable format

The task

I was importing 300 opportunities from a CRM 2015 Online instance to a CRM 2016 online instance.  There was much data and the customer didn’t want to pay so I was using free solutions and not Kingsway SSIS or Scribe

Instead I am using the excellent Lucas Alexander’s Dynamics CRM Configuration Data Mover v1.10.  If you have used the CRM configuration data mover before it’s awesome and you should definitely check it out.

If you haven’t heard or have never used the Dynamics CRM Configuration Data Mover then read the introduction blog page below

Introducing the Alexander Development Dynamics CRM Configuration Data Mover

If you want to know about the guids or understand a bit more about my thoughts on the CRM Configuration data mover read the blog post The importance of keeping the same guids between CRM instances

Import error

I was important an opportunity record and I got this error message using Dynamics CRM Configuration Data Mover.

If you have never used the Dynamics CRM Configuration Data Mover read the introduction blog page below

Introducing the Alexander Development Dynamics CRM Configuration Data Mover

If you want to know about the guids and understand my thoughts on the CRM Configuration data mover read the blog post The importance of keeping the same guids between CRM instances

2016-06-22 23:52:06,459 RECORD ERROR: a4115b45-e37e-e511-812b-fc15b426e6e8, opportunity, OPERATION: CREATE, MESSAGE: A validation error occurred.  The value of ‘crm_picklist’ on record of type ‘opportunity’ is outside the valid range.

As error messages go this is pretty informative, I looked at the field and found it was a picklist.  Out of range errors usually occur when your code goes through a loop and tries to reference a value in an array with a number larger than data in the array.

I searched the Hosk CRM blog for the answer because I remember a similar issue with Status Reason.

I found this blog post, which was interesting but didn’t help

CRM 2015 – how to find Statecode value

Next was this one, it seemed

CRM 2013 – Understanding Status and Status Reason – think before deleting them

which pointed to this blog

CRM 2013 – What happens when you delete a status reason currently in use

I felt these were pushing me down the right path and the problem was probably linked to OptionSet items which were referenced on the records but which had been removed.

The way OptionSets work is they have a text value and in another database field they contain an integer.  I was guessing those records which didn’t import had an integer number which didn’t exist in the new CRM system but how could I find them.

Looking at the opportunity records I could see this field was a required field but there were 80 records which were blank.  The blank records means CRM didn’t know what to show but how could I tell what integer value was held?

My previous problem was investigated by using SQL queries (look at CRM database data but don’t change it – Why you shouldn’t put unsupported customizations in Microsoft Dynamics CRM)

I wondered if FetchXML would return the integer values.

I used the awesome XRMToolBox which has the great FetchXML Builder by Jonas Rapp in it.

Data import error 1

You can download this in the Plugin store.  I had some problems with the plugin store but found a solution – XRMToolBox – loadFromRemoteSources error

I created a fetchXML query to select the opportunity records and the field from the error

Data import error

You can see the some of the records are bringing back text values which are no longer valid values for the global OptionSet.  When I imported these records into a new CRM instance this invalid values caused an import error.

When you remove OptionSet values make sure you migrate the records with those values before you delete the value and you will avoid this problem.

A great feature of the FetchXML builder is you can run query and then click on the records which opens them in CRM.

The problem was many of the records were inactive (Won/Lost) which meant I had to reopen them to update this field.  This then reset the won date which caused a bit of a headache.   There was a field of last updated, so I used that to set the date of won/closed

There is a slight but in the FetchXML builder which when you open a record by double clicking the results

it puts a double forward slash before the main.aspx, this stopped me from reopening the record but if removed one of forward slashes then I could click the reopen button

so from


I could then edit the records and fix the records which weren’t importing.

Failed to Generate Excel Error

I was getting a bit concerned because I was only missing 50 records, I thought I could manually import these but when I tried to export the data from CRM to Excel I was getting this error

Data import error 2

This was a bit of show stopper because it didn’t give me any details about the cause of the potential problem.  I was trying to export all the fields from the opportunity and I was wondering if this was too much data but when I tried to remove the fields with no data I was still getting the error.

I could export the data using FetchXML but it didn’t allow me to copy the header and there was a lot of columns.

If you get this error this blog post has a potential solution

How to Solve the ‘Failed to Generate Excel’ Error When Exporting in Microsoft Dynamics® CRM

It thinks the error is caused by different columns having the same name but I haven’t checked this out yet.





CRM 2016 – The importance of keeping the same guids between CRM instances

Everyone wants to learn the same thing from painful situations: how to avoid repeating them.

Gary Zukav


I worked on a CRM project where the configuration data had different guids between CRM environments.   The project contained 10 complex workflows which referenced these records in CRM, when deploying, the workflows were manually repointed to select the records in each CRM environment, this manual step could take between 30 to 60 minutes.

In this post I discuss the role of guids, how to avoid workflow problems using the CRM configuration data mover tool which creates data in a different CRM instance with the same guid.

The task

Importing 300 opportunities from a CRM 2015 Online instance to a CRM 2016 online instance.  There wasn’t much data, the customer didn’t want to pay so I used free solutions and not Kingsway SSIS or Scribe

Instead I am using the excellent Lucas Alexander’s Dynamics CRM Configuration Data Mover v1.10.

If you have never used the Dynamics CRM Configuration Data Mover read the introduction blog page below

Introducing the Alexander Development Dynamics CRM Configuration Data Mover

The purpose of the data mover is to move data between CRM instances and the records keep the same guids.

Why is it important to keep the same guids?

Guids are unique identifiers (guid stands for Global unique identifer) and when you create a new record, CRM automatically creates them for you.  Every record in CRM has a guid, these are used in lookups when selecting records.

A lookup record is an EntityReference, which has the entity type and guid.  In my Hosk Dev tip I recommend you always add an ID suffix to lookup fields so they are easy to spot

Hosk CRM Dev Tip – add ID suffix to lookup fields

Once you get the guid of a record you can use this in code to retrieve details on the record and use it whilst debugging  your code. One reason why CRM developers want to retrieve the guid of a record – Quick way to get the guid on a form, my current favourite way is using bookmarklets

When you import data into a new CRM instance it creates the records and assign those records new guids.

Records with the same name but different guids cause problems in workflows which use lookup fields.  Inside those lookup it has a guid which doesn’t exist in different instances of CRM and the workflows won’t work.  The workflows show you this by unpublishing themselves when deployed in a solution to a new CRM environment.

If you use the CRM configuration data mover it copies the records across and the data has the same guids..

CRM configuration data mover highlights

I will cover the CRM configuration data mover in more detail in a future blog post but here are a few highlights

  • You use FetchXML to retrieve records, this allows you to filter record you want to copy
  • It has an update and create checkbox for each step
  • It easily syncs data between CRM instances with a push of one button
  • You can move Access teams (currently no way to export/import access team templates between CRM instances – Why are access teams marooned?, also read The benefits of Access Teams)
  • It can be run from command line to make it part of your build
  • It makes the build process easy
  • It keeps the same guids
  • It can map guids of records used e.g. user records

I wouldn’t recommend this tool to copy lots of data across, it not designed for bulk copying and might result in a situation where half the data has copied across.

Configuration record

A different way to avoid the guid problem is to create a configuration/System Settings entity which you can use to hold global settings used in your customisations.

Having a configuration entity encourages developers to put global configurations in the entity rather than inside the code or on each entity.  Standard approaches to development make it easier for teams to create one solution and easier to debug.

A configuration entity is easier for the team to the global configuration settings which when changed and can cause CRM to act in an unexpected way.

I have seen CRM teams create one entity and add fields as needed but I prefer to create a simple entity with a name and value field.  This way you can add more configuration settings by creating record rather than having to update an entity and add fields.  What ever system you use this code should be standard code used in different projects, this allows you to create reusable code and customisations.  Why isn’t code reused in Microsoft Dynamic CRM projects?

The reason this stops the workflow guid problem is workflows reference a field on the configuration entity which you can set at runtime and configure once on each environment.  When you change a workflow it will point to the configuration entity which is the same in each environment.

This method encapsulates what changes and separating it from the rest of CRM.

Manual method

It‘s possible to export records from Microsoft Dynamics CRM, tick the import button, save the record as a CSV.  This will give you the guid for each record in the export (explaining how the enrich/import data works, it uses the good to reimport the data to the correct record).

The records are imported, setting the guid for each record, keeping the same guid between CRM instances.  This method works but involves manual manipulation of excel records and CRM developers have better, more interesting things to do.

I have worked on projects in the past which created its own import/export console app, this worked but many hours were spent maintaining and debugging the tool.  It’s better to use the Dynamics CRM Configuration Data Mover.

Get a deployment process

Data copying and keeping CRM instances in sync is important but its one of many parts of a deployment process.

You need a standard deployment process.  Deployment process and checklists are great with repeatable static lists of tasks where you need to do multiple steps in a set order.  Read the blog post below for ideas

CRM 2015 – Best practices for CRM Deployments

You should automate as much of the deployment process as possible, this

  • Reduce errors
  • Stop wasting developers time
  • Quicker
  • Allows people to deploy without knowledge part of the deployment process

A few other thoughts

I few of blog posts on keeping your Dev environment in good order and best practices

MB2-712 – CRM 2016 customisation and configuration Hosk study notes

There is no end to education. It is not that you read a book, pass an examination, and finish with education. The whole of life, from the moment you are born to the moment you die, is a process of learning.

Jiddu Krishnamurti


I recently passed the MB2-712 – CRM 2016 customisation and configuration certification, you can read my thoughts on the MB2-712 – Microsoft Dynamics CRM 2016 Customization and Configuration certification

The certification covers a lot of big areas in Microsoft Dynamics CRM and you will need to make a lot of notes.  If you have taken earlier custom and config certifications a lot of this information can be found on my

I have some previous study notes for the CRM 2013 custom and config certification, much of which is still relevant (security, solutions, Business Rules, etc).  You can find those study notes on the link below

MB2-703 – CRM 2013 Customization and Configuration Certification Information

CRM 2016 Hosk study notes

The notes focus on CRM 2016 functionality which I hadn’t used, has been updated or I didn’t cover in my previous study notes.

These are just study notes, you will need to understand the functionality and use it before you take the certification.

If you are studying for the certification and you work for a Microsoft Dynamics partner make sure you check out the E-Learning online course – Microsoft Dynamics CRM Team – CRM 2016 Customization and Configuration 80729: Customization and Configuration in Microsoft Dynamics CRM 2016

A lot of the notes  from many excellent technet articles created by Microsoft, which shows they do a great job with their documentation.  Below is just parts I use to study but you should read the article to understand how the functionality works

Business rules

  • Condition is criteria/if statement
  • Action changes values/updates
  • You cannot set to business recommended – must use JavaScript
  • Actions occur when conditions evaluate to true, the AND/OR must be true
  • You can’t mix multiple conditions they are either AND or OR
  • Set scope to Entity if you want a business rule to run on the server, not just on the client side
  • Business rules are not triggered when you save a record
  • Business rules are triggered when a record is opened or when a field is changed which the rule conditions are set to check e.g Form OnLoad and Field OnChange
  • Business rules action will run only if condition is true
  • Business rules work at a field level – not triggered by tabs or sections
  • Scope – All forms is all forms including Quick Create
  • Scope – Entity runs on the server and client
  • Scope – single form – business rules only run for this form
  • If/Else is needed to show and hide fields
  • Nested IF/ELSE not available

Business rules actions can

  • Set field Value
    • Field
    • Value
    • Formula
    • Clear
  • Show error message
  • Set Visibility
  • Set default value

Business Process Flows

  • Enabled from the entity definition screen
  • Once Business process flow is enabled you cannot disable
  • A business flow has a primary entity but can span multiple
  • 3 out of box Business process flows enabled by default
  • 12 additional BPF’s which can be enabled via Settings à data management
  • Once enabled you have to disable each individually
  • One entity per stage
  • Stage category is just for reporting – it’s linked to a global option set (which you can change)
  • Step name = fields shown on the business process flow
  • Branches can be only 5 levels deep
  • Maximum 30 stages
  • Maximum 30 steps per stage
  • Relationships doesn’t need to exist between entities
  • Other entities must have Business process flow enabled
  • Relationships are 1:N
  • Security roles can be assigned, options will be disabled
  • Each entity can have no more than 10 activated business process flows
  • Each process flow has a maximum of 30 stages
  • Multi-entity process can use no more than five entities.
  • You can only run one business flow for each record
  • Current process and stage is a unique identifier. This allows the user to return to the process at a later time.
  • Business process flows can be associated with security roles, so only users with specific security roles will see the business rules.


  • Yammer is subscription based and requires an enterprise account
  • Once Yammer is enabled there is not an option to go back to activity feeds


  • Personal charts can be shared with users or team
  • Charts can be exported as a Chart XML file and imported (use XRMToolbox in real life)
  • With a Chart you can
    • Select the entity
    • Select fields you want to aggregate (sum, count)
    • Select chart type
  • Aggregate options
    • Count: All
    • Count: Non empty
    • Avg
    • Max
    • Min
    • Sum


  • You can display
    • Charts
    • Lists
    • Iframe
    • Web resources
    • Social insights (if you have Microsoft Social Engagement)
  • Dashboards can be made available for tablets
  • System Dashboards can specify security roles which can view each dashboard
  • In properties you can enable dashboard for tablets and individual sections for mobile

Rollup fields

  • Rollup fields recalculate once an hour
  • Rollup fields supported – Whole Number, Date and Time
  • Rollup fields not supported – Option set and Lookup
  • Aggregate value of records related to a specific record
  • Rollups fields are asynchronous, they don’t run in real time
  • Rollup fields can be run by workflows or business rules
  • Read Microsoft Dynamcis CRM 2015 Rollup Fields: The Gotchas
  • Rollup fields can be refreshed manually or triggered by a workflow CalculateRollupField message
  • Changes to rollup fields DO NOT trigger a workflow processes

Available Functions

  • Sum
  • Count
  • Min
  • Max
  • Avg
  • Rollup Fields are automatically rolled up 12 hours after they are created.
  • You can manually Rollup a field at any time by clicking the Refresh button on the rollup field.
  • You can only have a maximum of 10 rollups per entity, and 100 per organization.
    • This is configurable for on premise deployments, but be aware of potential performance implications
  • A rollup field can’t be included in other rollup fields
  • Data from Rollup field are not stored by CRM auditing, so there is no real way to store historical values of a rollup field.

  • Access to rollup data can be secured using regular field security permission to ensure that it is only available to authorized users if needed.
  • When a rollup field is created on any entity, the platform automatically creates two other fields to store metadata for the field calculation timestamp and status of last operation. These are suffixed with “_date” and “_status” accordingly.
  • “_date” stores a timestamp when the rollup field was last recalculated and “_status” shows result of operation in numeric value, these statuses reflect:
    • Not Calculated
    • Calculated
    • Overflow Error
    • Other Error
    • Retry Limit Exceeded
    • Hierarchical Recursion Limit Reached
    • Loop Detected

  • Seamless integration with the user interface. You can include the rollup fields in forms, views, charts and reports.
  • Rollup fields are solution components. You can easily transport the rollup fields as components between organizations and distribute them in solutions.
  • Rollup fields and the calculated fields are complementary to each other. You can use a rollup field as a part of the calculated field, and vice versa.

The text below comes from this technet article

Rollup calculations

  • Mass Calculate Rollup Field is a recurring job, created per a rollup field. It runs once, after you created or updated a rollup field. The job recalculates the specified rollup field value in all existing records that contain this field. By default, the job will run 12 hours after you created or updated a field. After the job completes, it is automatically scheduled to run in the distant future, approximately, in 10 years. If the field is modified, the job resets to run again in 12 hours after the the update. The 12 hour delay is needed to assure that the Mass Calculate Rollup Field runs during the non-operational hours of the organization. It is recommended that an administrator adjusts the start time of a Mass Calculate Rollup Field job after the rollup field is created or modified, in such a way that it runs during non-operational hours. For example, midnight would be a good time to run the job to assure efficient processing of the rollup fields.
  • Calculate Rollup Field is a recurring job that does incremental calculations of all rollup fields in the existing records for a specified entity. There is only one Calculate Rollup Field job per entity. The incremental calculations mean that the Calculate Rollup Field job processes the records that were created, updated or deleted after the last Mass Calculate Rollup Field job finished execution. The default maximum recurrence setting is one hour. The job is automatically created when the first rollup field on an entity is created and deleted when the last rollup field is deleted.
  • Online recalculation option. If you hover over the rollup field on the form, you can see the time of the last rollup and you can refresh the rollup value by choosing the Refresh icon next to the field, as shown below:

Rollup field considerations

  • A workflow can’t be triggered by the rollup field updates.
  • A workflow wait condition cannot use a rollup field.
  • A rollup can’t reference a calculated field that uses another calculated field, even if all the fields of the other calculated field are on the current entity.

Calculated Field

  • Calculated fields are not simple fields – they are Field Type – Calculated
  • You can’t convert a simple field into a complex field
  • You can calculate value on the entity and related parent entity
  • You cannot calculate related records
  • You cannot change the field type after initial save
  • You can always change the calculated expression/formula

Hierarchy security

It’s in addition to your current security.  It extends the current security model.  This works on top of your existing security levels

  • You can choose managerial or position but not both.
  • It works at a position level or managerial level


  • A manager must reside in the same business unit or the parent business unit of the person they manage
  • Manager is defined on the user record
  • The manager must have read access enabled on entities


  • You must set the managers
  • Managers have read, write, update, append and append-to for direct reports. NOT DELETE
  • Non – Direct reports – have only read only access data. (you can only see it)
  • It works within the business unit structure


  • Does not use the direct report model
  • It works beyond business units, e.g. it position spans business units
  • Spans business units
  • The more levels can effect performance for the higher
  • Optimal performance is around 4 levels, maybe 5
  • You can set individual entities to be used in the hierarchy management
  • Position hierarchy can span business units.

Videos on Hierarchy security


Technet/msdn articles on hierarchy security

App for Outlook

Works in a server level – works with outlook or OWA (exchange service)


  • Tablet
    • Dashboards
    • Offline Drafts – create new records
    • Open in a default browser
    • Offline search
  • Phone
    • Hide from phone (similar)
    • Fields, sections, tabs and lists

Dynamics CRM license options

  • Essential – no access to sales or marketing functionality
  • Basic – access base CRM functionality – Account, contract, lead, cases
  • Professional – access sales, services, marketing
  • Enterprise – Everything + MDM, Parature etc

These notes are from the Slides

Email – Mailboxes

  • Each user/queue enabled for email has a mailbox record
  • Mailbox record defines email synchronisation for the user
  • Incoming, outgoing, and appointments. Contacts & tasks
  • Each mailbox must be approved and enabled before emails can be sent
  • You can check the status of mailboxes in the Server-Side Synchronisation monitoring
  • System Settings – Email sets the default synchronization and emails settings

Dynamics CRM 2016 supports a few different methods for processing email:

  • CRM for Outlook
  • The Dynamics CRM Email Router
  • Server Side Syncing

Multi-Entity Quick Search

  • Out the box, this new search feature will search across the following entities:
  • You can select up to 10 entities for a quick search
  • You can choose any of the 90 visible entities
  • Any custom entities
  • It uses the Quick Find Search settings for each entity
  • Default entities – Account, Contact, Lead, Opportunity, User, Competitor, Activity, Case
  • Out of box, the multi-entity quick find is defaulted to search seven entities in Dynamics CRM:
    • Accounts
    • Contacts
    • Leads
    • Opportunities
    • Users
    • Competitors
    • Activities

It’s hidden in Settings à Administration à System Settings à General tab and there is a button Quick find


  • The default theme is called CRM Default Theme
  • The default theme is type System and Default Theme = Yes
  • Themes cannot be included in Solutions.  This means you need to export and import them between organisation.
  • After importing a theme you must publish it.
  • When you publish a theme, previously published theme will become unpublished

This technet page has some good limitations

What can you change or adjust with themes?

  • Logo
  • Logo tooltip
  • Navigation bar color
  • Navigation bar shelf color
  • Header color
  • Global link color
  • Selected link effect
  • Hover link effect
  • Process control color
  • Default entity color
  • Default custom entity color
  • Control shade
  • Control border

Theme limitations below are from the technet article

  • Even though the theme colors are applied globally throughout the application, some legacy UI areas, such as gradient buttons, will retain the default colors.
  • Certain areas must use dark or light colors to contrast with the default icon colors. The icon color isn’t customizable.
  • An entity can’t be displayed in different colors under different Sitemap nodes.
  • The Sitemap nodes colors aren’t customizable.

Solutions Patches

Technet – Use segmented solutions and patches to simplify solution updates

  • A patch represents an incremental minor update to the parent solution. A patch can add or update components and assets in the parent solution when installed on the target system, but it can’t delete any components or assets from the parent solution.
  • A patch can have only one parent solution, but a parent solution can have one or more patches.
  • A patch is created for unmanaged solution. You can’t create a patch for a managed solution.
  • When you export a patch to a target system, you should export it as a managed patch. Don’t use unmanaged patches in production environments.
  • The parent solution must be present in the target system to install a patch.
  • You can delete or update a patch.
  • If you delete a parent solution, all child patches are also deleted. The system gives you a warning message that you can’t undo the delete operation. The deletion is performed in a single transaction. If one of the patches or the parent solution fails to delete, the entire transaction is rolled back.
  • After you have created the first patch for a parent solution, the solution becomes locked, and you can’t make any changes in this solution or export it. However, if you delete all of its child patches, the parent solution becomes unlocked.
  • When you clone a base solution, all child patches are rolled up into the base solution and it becomes a new version. You can add, edit, or delete components and assets in the cloned solution.
  • A cloned solution represents a replacement of the base solution when it’s installed on the target system as a managed solution. Typically, you use a cloned solution to ship a major update to the preceding solution.
  • Version numbers are compared when solutions are imported.
    • Newer versions will replace existing versions of the solution.
  • Version Number
    • Up to four numbers separated by decimals
    • Appended to solution name to create exported filename

Entity Assets

  • Specify exactly what should be included in the solution
  • Includes tabs to select specific,
    forms, views, charts, fields,
    relationships, messages,
    Business rules and Hierarchy
  • Assets can be can be added later
  • Must be defined for every
    entity added to the solution

Technet – Create patches to simplify solution updates

Read this on solutions segmentation

Types of Solutions

  • System solution: – The default solution, when you go to customization.
  • Unmanaged solutions: Editable solutions which act as a contrainer for customizations Container for unmanaged customizations. Deleting an unmanaged solution doesn’t delete customisations or data.  You can export an unmanaged solution.  When you import an unmanaged solution you must publish it.
  • Managed solutions: non editable.  Deleting a managed solution delete customisations and data.
    • Created by exporting an unmanaged solution (you cannot export a managed solution).
    • Can’t change the customisations inside a managed solution
  • Managed Patches: Updates and fixes that can be pushed out to Managed solutions that allow updated specific components and not having to overwrite the entire contents of an existing solution.

Quick Create forms

  • you can define multiple quick create forms, only one quick create form can be used by everyone
  • The form everyone will use is set using the form order.
  • Quick create forms cannot be assigned to security roles
  • You cannot switch quick create forms
  • You can disable quick create forms by unticking the Allow Quick Create option on entity settings

The following controls cannot be added to quick create forms:

  • Sub-grids
  • Quick View Forms
  • Web resources
  • Notes
  • Bing Maps

Quick View Form

Technet info –

  • Allows you to view information about a related entity from within a form of another record. E.g. see a contact details on an account.
  • You add a quick view control to an entity
  • It can be for lookup fields which exist on the entity
  • You must save and publish the main form before the quick view control changes will be visible
  • You can only view the information not edit with a quick view control
  • Multiple sections are allowed
  • Only one tab

Status Reason Transitions

if you add Status reason transitions, you must include one inactive status for each status.


Actions that Trigger Cascading Behaviour for 1 to many relationships

  • Assign
  • Share
  • Unshare
  • Re-parent
  • Merge
  • Delete


  • 1 to Many relationship creates a native hidden intersect entity
  • Intersect entity is managed by CRM, cannot view or customize.
  • If you want to record information in the many to many relationship entity then you need to create a new entity, which you can edit/add fields/report on.
  • Native = CRM creating intersect entity
  • Manual = creating a new entity


  • Ad Hoc relationships – do not need relationships to be created
  • Allows you to connect records
  • Connections can be used in queries and reports
  • Connection role provides a description


  • Tabs
    • Can have one to three columns
    • Must contain at least one section
  • Section
    • Contains one to four columns
    • Can show
      • Fields
      • Sub Grids (lists or charts)
      • Notes
      • Iframes
      • Web resources
      • Bing maps
      • Spacers (blank space)

Additional components

  • Spacers
  • Timer
  • Knowledge base search
  • Social insights

Sub-grid for Access Teams (must enable entity for access teams)

Multiple forms

  • Enable specific security roles to access forms
  • Can remove security roles from forms
  • Form order determines which form a user sees
  • Enable for fallback is the form for users who security role is not assigned to any form.

CRM Mobile

  • Only first 5 tabs or 75 fields/10 lists appear on mobile client
  • Set available on Phone checkbox to show/hide tabs in mobile
  • Collapsed tabs still count
  • Only 5 tabs will show even if it’s less than 75 fields
  • You have to put fields in the first five tabs for them to appear in a mobile client
  • Mobile can have specific mobile only controls (sliders)

Hosk’s Top CRM Articles of the week – 20th June


“Remember to always be yourself. Unless you suck.”
Joss Whedon

If a product isn’t easy to use then people won’t use it #HoskWisdom

What I love about the Microsoft Dynamics CRM community is there is always someone willing to help you #HoskWisdom


Someone asked me this week if they thought at some point I might run out of #HoskWisdom and I said don’t worry, I’m full of it 🙂 (drum beat followed by symbol clash)

If you can meet writing coding and boring non code tasks
And treat those two impostors just the same;
ours is the Earth and everything that’s in it,
And – which is more – you’ll be a Man, my so

Article of the week

CRM Article of the week

Hands on application integration dynamics CRM using azure service bus

Great article on using Microsoft Dynamics CRM Online with the Azure service bus, it’s a step by step guide

Best of the Rest

Software boundaries and limits for Dynamics CRM 2015/2016/Online Part 1

Microsoft buys LinkedIn – What you need to know

Deprecation announcements with Dynamics CRM Online 2016 Update 1 and 2016 Service Pack 1 

CRM 2016 – How to find the default currency without going into Office 365

An Introduction to Office 365 Groups for Dynamics CRM

salesforce license pricing is more than 2.5 times the price of comparable Microsoft licenses before sandboxes etc

Find out more about the new courses and exams

35 Best Dynamics CRM Blogs of 2016 

CRM 2016 – XRMToolBox – loadFromRemoteSources error

Gotcha Working with Dynamics CRM Web API: Grammar

Getting Started with Fiddler and CRM

Improved Iconator for XrmToolBox

Create an SLA to contact Leads

Thoughts on the MB2-712 – Microsoft Dynamics CRM 2016 Customization and Configuration certification


write less code

7 deadly career mistakes developer make


WHAT! – Germany have a 100% record in World Cup shoot-outs, winning all four and missing only one of 18 penalties.  Now they have an app to help them, read more here

Microsoft once had to rebuild a critical product because even its own managers couldn’t figure out how to use it


A Leadership Lesson From Eisenhower’s Stoic Reversal at D-Day

Useful Hosk Links

Hosk list Of CRM 2013 Tools

A list and review of CRM 2013 tools, this will probably work in CRM 2015 as well

Hosk’s CRM Developer Articles

A collection of my favourite CRM Developer articles I have written

MB2-703 – CRM 2013 Customization and Configuration Certification Information

All the CRM 2013 content to help you pass the exam

HoskWisdom – Hosk Developer Quotes

 Words of Wisdom from the Hosk.  I have written over 1000 articles, surely I should have said a few memorable things

CRM 2016 – How to find the default currency without going into Office 365

Before you do anything, always stop to think #HoskWisdom

I was tasked with moving a customisations, data and config from one CRM Online instance to another.

I was only a CRM System Administrator and didn’t have access to Office 365.  I was checking some of the settings and wanted to know the default currency.

The default or base currency is set when you create your Microsoft Dynamics CRM instance, it’s usually set to the country where the organisation is based.

If you add more currencies you have to keep the exchange rate up to date but CRM calculates all values in the base currency and converts them using the exchange rate on the screen.

If you want to learn more about currencies in CRM this blog is excellent


I headed over to check the currency section of Microsoft Dynamics CRM

Settings –> Business Management –> Currencies


Having two currency fields meant I didn’t know which one was the base currency field

I tried to use the FetchXML builder to see if there was a field which specified which currency was the default currency but there isn’t.  I never realised the Currency entity has the schema name of transactioncurrency.

Using my Sherlock detective skills the currency with the earliest CreatedOn date would be the first currency record and likely to be base currency.  I’m guessing the base currency would be the one with 1 exchange rate.

Currencies 1

I didn’t want to guess because assumptions can cause problems and bugs in Microsoft Dynamics CRM.

I decided to open the currency records and when I opened GBP and it told me it was the base currency.  The exchange rate is read only

Currencies 3

The EUR exchange rate was editable and it didn’t tell me it was the base currency.

Currencies 2