Duane Napier's Blog

Microsoft Dynamics CRM

  • Follow Duane Napier's Blog on WordPress.com

Working with enterprise clients

Posted by duanenapier on August 24, 2016

Over the years my experience has been primarily with enterprise clients and enterprise projects. From a project view, there are many things one needs to understand when dealing with large enterprise clients compared to small & medium sized clients. This article will highlight a few of those items and provide you with some areas to consider when dealing with enterprise accounts.

  • Estimating
    • This is not an easy task. You need to be able to compete at the “sales level” with other competitors but at the same time you do not want to come in so high that you lose the deal based on price. Many times you will need to engage in a multi-week paid assessment or a roadmap to truly give an estimate for an enterprise deal. You can give a ROM based on your understanding of the large picture (a top down approach) but to give a solid estimate, you need to take a bottoms up approach where the actual requirements drive the estimate.
    • Obviously you need to understand the basic implementation costs respective to requirements as a baseline. Where the “art” of estimating comes in (which admittedly, is largely based on experience) is knowing the large levers that have a big impact on your estimates. I will not tell you how to estimate but I will say that a large enterprise client will take approximately 300%-400% longer to deliver than a small or medium size client because of these levers. Additionally, the consultants typically work longer hours and are under more stress in large enterprise engagements because of all the politics and red tape, it’s a much different world than small business. These levers are as follows:
      1. Ease of doing business
        1. Are there any established timeframes around the clients approval cycles?
          • This can have a huge impact on a project if every detail of a project has to go through rigorous review cycles.
        2. Project Management style
          • Will your team be able to be self guided or will the client want to micro-manage and review all meeting content and prescribe an approach?
        3. Locations & travel
          • Will the client require travel or will they allow remote work
      2. Governance Model
        • Do they have a governance model established before the project starts? Have all roles, responsibilities and authority been communicated and approved from the C-level down?
        • This item alone can kill a project. if a Project Charter and Governance model isn’t established, your project will inherently have a huge failure factor.
      3. Release Strategy
        • Is your project going to be big bang or use a phased release strategy? This HAS to be known up front because in general, your UAT cycles can account for 14%-20% of the project total so if you came in thinking you were big bang and it ended up requiring 5 releases, you will easily be over your estimate by 100%
  • Delivery
    • You will typically have the same implementation steps and methodology but the underlying technology is usually more robust. Enterprise Service BUS and ETL tools are commonly used and PM tools such as Excel and MS Project are standard.
  • Training & Change Management
    • This is a common area that is overlooked. You have to involve training and change management early in the process so that your users are aware of the system and have a working knowledge before they need to use it.
  • Release Strategy
    • This was mentioned in estimating but you have to understand many aspects of the UAT ahead of time and account for all the cycles involved. In addition to the UAT test scripts, the user training materials that have been developed will be “piloted” during UAT to get feedback before user training occurs.
    • Train the trainer and end user training happens around the same time as UAT.
  • Support 
    • This can’t be excluded in your overall vision. make sure you allocate adequate support time for enterprise clients and consider who is accessing the system at what time so that you have support resources in proper timezones allocated to the project.

Posted in Uncategorized | Leave a Comment »

Microsoft Dynamics CRM 2015 Product Families

Posted by duanenapier on February 14, 2015

In this post we’ll review the new Product Family feature. When adding a product you now will add it as a Family, Bundle or Product. This is also known as the ‘Product Structure’.  The out of the box sample data for CRMOnline comes with this feature (as well as the new capability to add associations for recommending products to users on opportunities). I will be adding to this post over the coming weeks to provide you with a practical use case that you can use in the real world as a user and as a CRM administrator to help better manage your product catalog and offer Product suggestions during the sales cycle.

If you have been using Microsoft Dynamics CRM for any length of time up until the rollout of CRM 2015 you will know that the Product Catalog hasn’t changed since version 1.2. I have implemented Microsoft Dynamics CRM in many companies across North America and I can say that only a handful of companies have used the out of the box Product Catalog and Price List functionality. For most customers they need a robust Product Catalog beyond what the out of the box solution offers but the nice thing is that Microsoft Dynamics CRM is extremely extensible and just because I haven’t been able to implement the out of the box Product Catalog features, this has never presented a technical barrier for creating exactly what the customer needed, we have simply used the XRM capabilities in Microsoft Dynamics CRM to create what we needed! The product area within Microsoft Dynamics CRM can be quite involved so we’ll take this from a high level and only focus on a few small components of the product family.

Adding Product Families

You can add a product as one of 3 choices:

  1. Product Family
    1. This is a top-level Category and as I mentioned in the product visualization post, you can nest product families.
  2. Product Bundle
    1. This is a bundle, like the former kit (which is still supported) and can belong to a family.
  3. Product
    1. This is the underlying product that belongs to a Family or a Bundle.

productmenu

Viewing Products

The Product Views now display the new ‘Product Structure’ field that depicts the type of product:

productview

Posted in Microsoft Dynamics CRM 2015 | Tagged: , , , , , | Leave a Comment »

Using Hierarchies in Microsoft Dynamics CRM 2015

Posted by duanenapier on February 10, 2015

Microsoft has added some very much needed functionality to Dynamics CRM 2015. One feature in particular is the Hierarchy Visualizations. I will be adding to this post over the coming weeks to provide you with a real world look into hierarchies and how to use them in every day life as a user and as a CRM administrator. First off, let’s look at what Hierarchy Visualizations allow us to do:

  1. Group and categorize products making product management an easier task
    • By doing this, users can now find products (and services) by seeing the family or bundle the product is in
  2. Create a ‘tree structure’ of your products.
    • With a Family at the top of the tree structure you can create associated product bundles and child products
      • Create a family within a family – Other families can be below the main family which means that you can create as many nested product families as you wish.

HiearchyTiles

Now let’s take a look at the limitations of the Hierarchy Visualizations.

  1. Hierarchies are only available to the 1:N relationships AND you can not reference another entity. This means the 1:N relationship has to reference the same entity as a self-referencing parent-child relationship. The easiest way to understand this is to think about the Account entity. The Out Of the Box (OOB) Dynamics CRM 2015 instance comes with the Account entity already set up with a link to itself for a parent account. This 1:N relationship is set up as the hierarchy.
  2. You can only have 1 hierarchy relationship per entity
  3. When you view the hierarchy, you are limited to a maximum of 4 fields are displayed on a tile
  4. When viewing the hierarchy tree, you are limited on the number of tiles that can be seen on the screen. If you reduce the Zoom on your browser however, you can access more tiles.

 

Now let’s take a look at the two ways to open the hierarchy visualization tiles.

  1. When you are looking at a view for an entity that has hierarchies enabled, you will notice that there is a new column on the left in the view that looks like a pyramid. This hierarchy icon will be displayed if the underlying record is part of a hierarchy. You can click on the hierarchy icon and the hierarchy visualization will open.hierarchyiconview
  2. When you are viewing an entity record that has hierarchies enabled and the record is part of a hierarchy, you will notice the hierarchy icon in the upper right hand corner of the record. You can click on the hierarchy icon and the hierarchy visualization will open.
    hierarchyFormicon

I’ll be creating some posts on the new Product Family capabilities, this combined with the hierarchy feature has made the product catalog capabilities much more compelling.

– Duane Napier

Posted in Microsoft Dynamics CRM 2015 | Tagged: , , | Leave a Comment »

Getting values from form fields in JavaScript – CRM 2013

Posted by duanenapier on April 25, 2014

There are some subtle differences in CRM 2011 JavaScript vs. CRM 2013 JavaScript so this post will focus on the new Xrm schema and cover getting the values for text fields, picklist fields and lookup fields in Microsoft Dynamics CRM 2013. Refer to the Web Resources post for specifics how to create and use JavaScript files.

Get the value from a Lookup Field:

//1st Thing – You need to create an Array variable
var UserlookupItem = new Array;

//2nd Thing – You need to get the Value. The getValue function will return the respective object’s return type. In this case it will return an Array because the Coverage Member I have created is a lookup to the user table.
UserlookupItem = Xrm.Page.getAttribute(“new_coveragemember”).getValue();

//3rd Thing – Get the first item in the array, which is the name.
var MyNewName;
MyNewName = UserlookupItem[0].name;

Get the value from a OptionSet (Picklist) Field:
//You may want the ordinal value or the text value so we will grab both
//1st Thing – Get the ordinal, or integer value of the selected option using getValue()
var intListItem = Xrm.Page.getAttribute(“CompanyType”).getValue();

//2nd Thing – Get the text value of the selected option using getText()
var txtListItem = Xrm.Page.getAttribute(“CompanyType”).getText();

Get the value from a Text Field:
//1st Thing – 1 simple function call of getValue() can grab the value
var RecordName = Xrm.Page.getAttribute(“new_name”).getValue();

Posted in JavaScript, Microsoft Dynamics CRM 2013 | Tagged: , , , , , , , | Leave a Comment »

Auto-Populating the Name attribute – CRM 2013

Posted by duanenapier on April 25, 2014

This is an update the original post on auto-populating the Name attribute in CRM 4.0 found here. Microsoft Dynamics CRM 2013 has yet another new object model for JavaScript so I wanted to create a new post to step you through the process to auto-populate the name attribute in the Microsoft Dynamics CRM 2013 environment.

Background: When creating a new entity in Microsoft Dynamics CRM 2013 the Primary Attribute defaults to “Name”. This name attributes is used in all the default views and when you open the record, this attribute is what the user sees in the top of the form as well. In this scenario I have a new entity that tracks my employees weekly utilization. The form captures the employee name, the week of the work and the overall percent of utilization they are tied up. Capturing this high level data allows me to quickly see who is working on what and when new work items come in for that week, I know at a glance who I can assign work to without any calls\email\spreadsheets, etc., lowering my administration time to delegate work.

Issue: So you have created a new entity and the default Name attribute needs to be populated. The problem is, the Name attribute really shouldn’t be populated by the user, it really needs to be automatically populated with several attributes of the record such as Week, employee name and percent utilized.

Provided you are not importing records into this entity and there is no integration considerations (meaning you are not creating records of this type through code), auto-populating the name can safely be done via JavaScript.

Resolution: Form level JavaScript, not Business Rules. Why not Business Rules?…they are simply not powerful enough to capture & concatenate several fields and then populate them into a single field.

You will need to review the SDK to understand some of the code in this article. The OnLoad code can be used as-is. The OnSave code is geared towards my entity with the following attributes:
1) A lookup to the user entity with the attribute of new_cincomrep
2) A string field attribute of new_utilizedpercent
3) A Date field attribute of new_sundaystartweek

Form OnLoad:

function CheckName()
{
var UtilName = Xrm.Page.getAttribute(“new_name”).getValue();
if (UtilName == null)
   {
// We will temporarily set the required Name field to a dummy value of “-” so the form will save.
     Xrm.Page.getAttribute(“new_name”).setValue(“-“);
}
}

function SetName()
{
var newName;
var CincomRep;
var WeeklyUtil = Xrm.Page.getAttribute(“new_utilizedpercent”).getValue();
var StartDate = new Date(Xrm.Page.getAttribute(“new_sundaystartweek”).getValue());
var lookupEmployee = Xrm.Page.getAttribute(“new_cincomrep”);

// The Employee should never be null if it is a required field.
if (lookupEmployee != null)
{
var lookupEmployeeValue = lookupEmployee.getValue();
if ((lookupEmployeeValue != null))
  {
     CincomRep = lookupEmployeeValue[0].name;
   }
}

newName = StartDate.format(“MM/dd/yyyy”)
newName += ” – “;
newName += CincomRep;
newName += ” – “;
newName += WeeklyUtil;
newName += “%”;

Xrm.Page.getAttribute(“new_name”).setValue(newName);
// The return will look like: 04/13/14 – Duane Napier – 90%
}

Adding these 2 JavaScript functions to the OnLoad and OnSave events will auto-populate the name attribute for you, allowing you to keep the default new_name field as it is without the additional work of modifying views, etc.

Posted in JavaScript, Microsoft Dynamics CRM 2013 | Tagged: , , , , , , | Leave a Comment »

Managing multiple Workflow Solutions

Posted by duanenapier on July 8, 2013

Let’s say that I have some really cool Workflow functionality that I created in Microsoft Dynamics CRM and I would like to reuse it in another environment and even possibly in multiple environments. Isn’t that easy to do? It should be but it may not be. This post will explain how to properly document and pull configurations over from one environment to another using solution file but not necessarily pulling over the entire underlying entities.

In my role as a Sales Engineer presenting Microsoft Dynamics CRM, I have built up a lot of little tid-bits of functionality that I like to incorporate into my demo’s. I have done a lot of work over the years with different ERP’s and CRM software packages and each have their pro’s and con’s on bringing elements from one environment to another. Microsoft Dynamics CRM 2011 does allow you to create solution files but it also requires all of the ‘possible’ entities and fields associated with your package to either be included in your package or at a minimum, all have to be in the target system. This isn’t ideal because you will have many custom fields and relationships in your source environment that you do not want to include in your solution file, which may have nothing to actually do with the functionality you are trying to replicate. Unlike some other CRM products, when you select an entity to be included in the solution file, Microsoft Dynamics CRM 2011 forces you to pull in the retire entity, you can not choose what fields \ relationships in the underlying entity yourself. As a result, if you have any 3rd party ISV’s installed, the export\import process of Microsoft Dynamics CRM 2011 will want them to be installed in your target environments as well…..This can be a mess in itself. If you have been working with the product for any length of time you will appreciate that last comment.

So how can I create a solution file from my source environment, then import it into a target environment? It may not be pretty but follow these steps and you will be able to replicate your work in target environments.

  1. Document the CRM components of your solution.
    Yes I said document, it’s not a dirty word, it needs to be a required part of your work. Properly document every piece of your solution so that a year from now when you need the functionality, you can simply read through a document and know everything you did. In addition to documenting your fields and any values needed, process flow diagrams built in Visio and\or ppt are great. This documentation will prove to be required because when we get to building\importing in the target environment, your documentation will be used to as a guide to ‘recreate’ the needed fields in your target system that are directly involved in your functionality.
  2. Create and export your solution file.
    Create a solution in your source system, naming it with something that signifies the underlying functionality. As you create the solution file, only select the Workflows that are directly involved in your functionality. When you get to the prompt to include required components, select the check box that reads “No, do not include required components“.
    MissingElements
    If you have created custom fields that the solution needs to utilize, your target system will need to have those fields. There are a couple ways to do this but to keep it lean, you will recreate the custom fields manually in the target system. The reason this manual way is suggested is so that an entire entity with all the fields are not blindly pulled over, possibly overwriting existing work in your target system. Next you will export the solution file from the source system. You will be prompted with a screen that shows all the missing required fields that your solution needs.
    MissingElements2
    This screen is very useful showing you what needs to be in your target system in order for your solution to be imported. The last page in the set of wizard screens will ask you to export this as a managed or unmanaged solution. This is up to you but for rollback purposes you can export as a managed solution and easily roll it back if you want to take it out. Otherwise if you would like to possible change things in your target system after the import, then you should export this as an unmanaged solution.
  3. Work in your target Environment
    First off, you need to recreate the custom fields that your workflows need in your target system. Refer to your documentation as well as the export dialog screen to know what needs to be in your target system. Secondly, import the solution file in your target system.
  4. Import the solution in your target environment
    After you import the solution & publish, your target system will be set & ready to go. For future use of this solution file you will go to your documentation to understand what entities and respective fields are needed. Once you create these, you can import the solution with a comfort that you will not overwrite any existing work.

Posted in Microsoft Dynamics CRM | Tagged: , , , , , | Leave a Comment »

Adding Bing Maps to CRM 2011

Posted by duanenapier on December 31, 2012

When I give presentations to companies on Microsoft Dynamics CRM I am often asked if the product has any map integration for a salesperson’s use. This article will step you through the process to integrate Bing Maps.

Many times there is a need (or strong desire) to show an address on a map for a business or contact. Many companies would like to have their CRM system integrate with a mapping system without buying a 3rd party tool but aren’t sure how to do it. In short, it’s very easy and it only takes a small amount of time to set up an iFrame and Bing Maps inside Microsoft Dynamics CRM 2011.

What’s Required:

1) Create an iFrame on the Contact (or Account) form.
2) Create a JavaScript web resource (this is easy, don’t get overwhelmed just yet…)
3) Add an OnLoad event to the form.

Steps:
1) Customize the target form
a) Create an iFrame called Map (This newly created form field will show something like IFRAME_Map once you publish it).
b) Set the target to _blank & be sure to UNCHECK the “restrict cross-frame browsing”

BingMapiFrame

2) Create a Web Resource file that contains the form JavaScript. The JavaScript will be fired on the form OnLoad event which will take the address lines If you are using the Out Of the Box fields you can use the below syntax for your Web Resource file. CRM2011 supports older JavaScript so you may notice that I am using the older CRM 4.0 JavaScript syntax for the form fields.

function bingmap() {

var AddLine1 = crmForm.all.address1_line1.DataValue; var AddCity = crmForm.all.address1_city.DataValue; var AddState = crmForm.all.address1_stateorprovince.DataValue; var AccountZip = crmForm.all.address1_postalcode.DataValue;

if (AddLine1 != null )
{
var MapURL = ‘http://www.bing.com/maps/default.aspx?v=2&where1=’ + AddLine1 + ‘,’ + AddCity +  ‘,’ + AddState + ‘,’ + AccountZip ;
if (MapURL != null)
{
crmForm.all.IFRAME_map.src = MapURL;
}
}
else
{
// alert(‘no address’);
}
}

3) Customize the form and do the following:
a) Add the BingMap web resource to the form library
b) Add the bingmap function web resource to the form event handler

BingMapImage
4) Publish the form.

In this screenshot I have made a custom “Land” entity and integrated BingMaps.
LandMap
Following these easy steps will allow BingMaps to work in your Microsoft Dynamics CRM 2011 environments.

Posted in JavaScript, Microsoft Dynamics CRM 2011 | Tagged: , , , , , , , , , | Leave a Comment »

Texting from Microsoft Dynamics CRM 2011

Posted by duanenapier on June 18, 2012

This article explains how to send text messages from Microsoft Dynamics CRM 2011 without the use of 3rd party components. 

In order to text someone from your email all you have to do is send an email using a cell phone number with an appropriate domain extension of their carrier such as: 5135551212@txt.att.net. The domain extension of @txt.att.net specifically denotes the AT&T cell phone service. This has nothing to do with Microsoft Dynamics CRM 2011.

The email message will come into the recipient’s phone as a text message and their text reply will come into your email as a reply. The following web site has a long list of cell phone providers’ texting domains.
http://www.emailtextmessages.com/

So, how can we integrate Microsoft Dynamics CRM 2011 with texting? There are two ways to accomplish this:

1) It’s very easy to send text messages from Outlook and track the email back to CRM. You just type in the cell phone number with the appropriate cell phone domain extension and send. If you want to track it in CRM, you just click on the tracking icons in Outlook for CRM.
2) If you want to send texts from within the Microsoft Dynamics CRM I.E. (non-Outlook) interface, there is a hoop you have to jump through, which is to temporarily change the Contacts Email. As part of the instructions on how to do this, I will explain WHY you have to do this… 

How the email interface \ process works in Microsoft Dynamics CRM: When you create an email in the Microsoft Dynamics CRM I.E. interface you are forced to select an Entity, then a specific record, such as Contact, then the actual person’s name you want to email. The interface doesn’t give you the option to manually type in a phone number. So in order to send a text message to the person you have to temporarily change the selected Contacts Email field from their normal email to their cell phone number along with their proper text domain (mentioned above). Once the email is sent you would need to change the email field back to their normal email address. This process can be invoked through workflow or done manually. It’s not really pretty but it can be accomplished. The practicality of doing this may not be a real world scenario but these steps can be followed to show how text messages can be sent from CRM without any 3rd party involvement.

Posted in Microsoft Dynamics CRM, Microsoft Dynamics CRM 2011 | Tagged: , , , | Leave a Comment »

How to create a 3D chart in CRM 2011

Posted by duanenapier on November 11, 2011

In CRM 2011 there is a rather simple way to make a chart 3D. After you have created the chart in the CRM editor you will follow 4 steps:

  1. Export the desired chart.
  2. Open the XML file and enter a line of XML code in a specific location in the file.
      What XML you need to enter in the file:

    • <Area3DStyle Enable3D=”true” />
    • Where will you need to enter this in the chart XML file (between the ending tags for the axis and chartarea nodes):

    • </AxisX>
    •  <Area3DStyle Enable3D=true />
    • </ChartArea>
  3. Import the chart XML file back into CRM
  4. Publish the customizations.

Posted in Microsoft Dynamics CRM, Microsoft Dynamics CRM 2011 | Tagged: , , , | Leave a Comment »

Now available – Update Rollup 5 for Microsoft Dynamics CRM 2011

Posted by duanenapier on October 26, 2011

The update rollup 5 was released on 10/25/2011 and is now available. The update rollup includes a lot of additional capabilities including social networking. Check out the new rollup and capabilities:

New Features

  • New Business Intelligence Capabilities
    • multi-series charts
    • multiple category charts
    • new chart types
  • Dialogs & Workflow Enhancements
    • lookup and date field types supported for Dialogs
    • dynamic record hyperlinks for Workflows & Dialogs
  • Enhanced Data Management
    • Audit User Access
    • Ignore null values in duplicate detection
    • Exclude inactive records in duplicate detection
  • CRM Outlook Client Enhancements
    • reading pane improvements to include hyperlinks to CRM records, compose e-mail and Lync presence
    • Performance Enhancements to E-mail Tracking
  • ActivityFeeds
    • enable a user to follow important activities related to people, accounts, contacts, leads, sales deals (opportunities) and more

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27820

Posted in Uncategorized | Leave a Comment »