Tuesday, May 31, 2016

4x4 Series: Planning your Upgrade

I was asked to participate in the CRMUG 4x4 webinar series. These are quick webinars with multiple speakers sharing tips and answering questions. I also wanted to document my tips here for future reference.

Upgrades are exciting but they can be a lot of work especially in very customized systems. Check out these tips and let me know what other tips you have.

Clean up Before

Determine what you can do before the upgrade to save you time during the upgrade. For example, when going from 2011 to 2016 (as I will do later this year) make sure that you are on the latest rollup so your JavaScript is up to date and work on getting all of your integrations on the 2011 end points. Look at unsupported code early so you can deal with it ahead of time or at least have a plan in place. If you are on 2013/2015 and moving to 2016, look at the JavaScript you have and see if it can be transitioned to business rules so it will upgrade without issue.

What can Wait

Two pieces to this point: waiting to take advantage of new features and implementing a code freeze. When you train new users on the system you want to focus on getting them to do their job in a new system, you do not also want to be training on new processes and features. Focus on migrating not improving/changing right away.

Also maintain the integrity of the upgrade by implementing a code freeze or as much as possible holding off development during the upgrade window. If you are making changes in production, you will need to re-work or at least review all of these changes in your upgraded development. Prepare a plan to hold off on most requests and also be prepared to get working on them once you upgrade

Showing Value

As you work on the upgrade look for the "Big Win" tips. This can be anything that helps users or is just a flashy feature. These are great to show off in training and show upper level management so they can quickly see the value of the upgrade. These can also be used for promotion to build excitement and drive user adoption. Also look for the features that executives will care about - will this help reporting? Performance? Be prepared to promote those items too so you can build sponsorship and buy-in. If the organization can see the value of the upgrade then they will be more likely to be engaged in training, patient during the code freeze, and ready to adopt the changes.

Other Tips

I also stole some tips from our partner Dave Ireland, at Salentica:
  • Ensure you have current software, instructions, and license keys from all 3rd party vendors.  You don’t want to get to upgrade weekend only to find out you’re missing a license key or that you should have removed a managed solution from the old version prior to upgrading.
  • If coming from CRM 2013 or newer, do you have access to your CRM Encryption key?  You may need it so be sure to have it handy.  Don’t forget to ensure the encryption is active post-upgrade or Outlook clients might not be able to connect.
  • If coming from ‘pre-metro’ versions of the UI (CRM2011 or lower) allocate a significant amount of time for UI design work.  There’s a lot more white space on your canvas and there are also some new controls to play with, so take advantage.   Also test the layout of your forms on the mobile app if that’s in scope for your deployment.
  • Have all users ‘gracefully’ remove the outlook client before cutting users off from the ‘old’ CRM version.  You can either get them to disable all of their sync filters or ask them to remove the Org from their configuration.  They key is to allow the Outlook client to remove all the data from its internal database store before the upgrade.
  • Have a plan for handling regularly-scheduled integrations.  If you have integrations that run periodically or on a scheduled basis, determine how they will be impacted if your CRM is down for 24 hours.  Will the integration ‘catch-up’ or will you need to pause the integrations and run them manually once the new CRM is online?
  • Do a dry-run in UAT.  Document every step and the expected duration of each.  On go-live weekend there’s a lot of stress that isn’t present when you’re doing the upgrade in a sandbox.  If you have every step documented (even in bullet points) it will help ensure you don’t miss anything or do something out of sequence.  Tracking the times will help you set expectations with the business owners about when they need be available for testing.
  • Starting in CRM 2015, Contacts have an extra ‘system address’ added.  In previous versions, there are only 2 addresses on Account, Contact, and Lead.  Now there is an address3 on the contact record – if you use More Addresses, take note that the ‘first’ More Address might get dropped from the More Address list because it is now in the address3 slot, and no longer considered a ‘more’ address.  If this is a problem, you might need to manufacture a dummy address3 record, and bump all the other address numbers up by one to get back to where you started.
  • If you are upgrading from 2011 be aware that the File -> Properties area of the form no longer exists. So you may need to consider moving the created on/by and modified on/by onto your forms as read-only fields.

Here are some tips from the other panelists as well:
  • Plan well - inventory customizations (plugins, JavaScript, Workflows) and inventory connectivity to external systems
  • Test in a Sandbox, make use of the Code Validation tool to test your customizations
  • Clean up code - can we replace code with new out of the box features? Evaluate processes and determine if there is a better way to handle it
  • Plan your timeline. You cannot make changes in a Dev 2016 environment and then import into a lower environment. You will need to do these changes multiple times. Factor this into your project plan
  • Plan your training. How will you train? What do you roll out with the upgrade and train on? How will this impact users? Keep users informed and seek feedback. Make use of power users for improvements, engagement and also help with questions.
  • Dealing with new features - wait to implement those until after the upgrade. This gives you more time to test and review and train separately.
  • Scribe - always using web services when you are using the adaptor so everything should be straight forward to migrate.
  • Security Roles - create new base role and go through permissions to identify what is unique for 2015 that wasn't in 2011. Must compare roles because new permissions were added.

What other tips do you have? What are you doing now to prepare for your next upgrade?

Friday, May 20, 2016

May 20 Blog Review

Let's jump into a quick blog review for your Friday afternoon.

PowerObjects posted Solving Security Headaches: Display Rules Based on Security Roles. This walks through how to use the Ribbon Workbench to modify the security of your forms.

CRM Tip of the Day shared the Illustrated guide to entity creation in Dynamics CRM. This walks through what to do when creating a new entity and some questions to keep in mind. Most important tips from my point of view are PLAN (all potential users, future impact) and don't turn on anything you don't need right now (most can be turned on later if needed).

Mitch Milam expanded on this TechNet Article with What's New for Administrators and Customizers in CRM 2016 and CRM Online. Check this out to be prepared for the updates.

That's all for today. Have a great weekend!

Saturday, May 14, 2016

May 14 Blog Review

Let's jump right in to this week's blog review!

PowerObjects shared No More Whoops: Preventing Accidental CRM Emails in a Non-Production Environment. Learn from other people's mistakes and take some time to make sure your test environments cannot send emails. It is not a fun issue to deal with. Also make sure you can easilly identify test records in your live environment so you don't use a real record as a test. (I feel so bad for people whose actual last name is "Test".)

PowerObjects also posted So Many Shortcuts: Reducing Clicks in CRM 2015. This is a handy reference for all the keyboard shortcuts you need to be aware of.

Mitch Milam shared a cautionary tale in Bad Design: A Tale of De-Architecture and De-Engineering. This walks through a very common scenario where a system is over-customized and this causes problems in the future. Be aware of the custom code you are adding and document well. Be ready to test thoroughly with an upgrade and know it may break. Also remember that out-of-the-box pieces were made that way for a reason. Maybe there is a chance to simplify your business process instead of complicating the system.

That's all for today. Did I miss anything?

Have a great weekend! 

Thursday, May 12, 2016

4x4 Series: Workflows

I was asked to participate in the CRMUG 4x4 webinar series. These are quick webinars with multiple speakers sharing tips and answering questions. I also wanted to document my tips here for future reference.

Workflows are a great way to quickly and easily provide automation to help your users and your business process. It is very important to understand how they work so you can use them effectively. Here are my tips for working with workflows.

Map Out the Process

With any type of process it is important to map out exactly what you want to happen. Start with your requirements and then use a visual tool like Visio (or a white board) to draw out the steps. This is important so you can find logic errors or any pieces that may need additional thought. Ask yourself questions like:
  1. What conditions do I need to check before processing?
  2. Are there any exceptions?
  3. Does this IF need a default condition?

This is also a good time to look for pieces that can or should be broken out into child workflows. Child workflows are a great way to divide up the process into logical groups but it cannot pass it's status back to the main workflow so you have to account for that. Child workflows can also be called by other workflows. So if you notice many of your workflows are doing the same few steps, consider seeing if this can be made into a child.

Finally, drawing your process gives you something visual to share with your stakeholders. Especially in complex workflows, it is good to walk through this with your stakeholders to make sure they have thought through all the possible branches and the logic associated with them.

Test in Test

I always recommend creating your workflows in a development or test environment and using a solution to move it to the production environment. This ensures that you have an opportunity to fully test without the danger of harming any production records. It also allows you to see the outcome of the workflow and demonstrate to the stakeholders to ensure it is what is needed.

If you want to test the workflow on a larger volume of records try importing records that meet the criteria (even exporting from a production system if it is a workflow update instead of full rewrite) or using the bulk edit feature. This will allow you to quickly fire off a large number of the workflows so you can monitor the system jobs and look for any errors.

I also find that including workflows as part of a release raises the visibility. We never import solutions to production unless it is our designated release. For releases, we review all of the items going and determine which groups need to be aware of the change. So the system team has an opportunity to ask questions early and user are aware so they can provide input as well.

CRM Horror Story: My CRM horror story is from back in the days of CRM 4.0. This was before solutions so most workflows were created in live. I was a part of the CRM Team focused mainly on development, training and troubleshooting. There was another group of power users focused on reporting who had access to create workflows.

One of these reporting users created a workflow to fill in some data on certain records. He had it start when fields were edited including the Modified On field. The workflow then updated 3 fields in 3 separate steps. He turned this on and then imported 3000 records. So each of these records triggered a workflow and as that workflow ran it updated the record 3 times and triggered 3 more workflows.

This brought the CRM system to a halt! The problem was not obvious at first because we were unaware of this workflow until we evaluated the system jobs. To resolve we have to deactivate that workflow and give the reporting user a stern talking to (twice actually because he tried to do it again).

Moral of the story - limit access to create workflows, educate people on their impacts, ensure people are aware of workflow effects and TEST before releasing to production!

Review System Jobs

It is very important to know what is happening in your system. Get familiar with how the System Job view looks - how many workflows are running in a given time period, what kind of workflows, what other things do you see here. This is helpful so if there is an issue you can look and know what you are expecting to see.

Keep an eye on your suspended jobs (waiting) as well as failed jobs. If you have workflows that wait, these will appear in your suspended jobs. Edit this view to pull in additional details of the workflow (stage, regarding record details, etc.) so that you can look for items that should not be waiting.

The capabilities of Advanced Find are amazing so you can narrow down your results based on records related to the workflow to specifically see items that may need more work.

Also look at System jobs with an Error Message. This means that as it was processing it ran into an error and could not continue. These workflows are still in a waiting or suspended status. These should be manually reviewed. If you can resolve the issue, you can resume the workflow so it moves forward. If you cannot resolve it or the necessary processing was already done, then you should cancel the system job. At the end of your review you do not want any error workflows still in a waiting status.

As part of your review of System Jobs with errors, you should evaluate if the Workflow needs to be changed. For example, if the error was trying to update a task that had been closed, you can add a check condition to the workflow to check that the task is open before editing it.

Use Case: Maintenance Work

A great use case for Workflows and Dialogs is maintenance. By this I mean record edits or changes that power users may need to make that you do not want the average user to be able to make.

For example, say there is a date field that is automatically populated based on when another field is changed. If you need to set this to a date in the past you can use a dialog which asks what date it should be set to and then makes the change. (An alternative tip provided by Mitch Milam I believe is to create an "Administrator" form where all fields are editable. Make this only available to System Administrators.)

Recently we have also used this for test records. Instead of trusting that a user will handle all the steps to ensure the record is properly marked as a test - create a workflow that can be run. This workflow can append test to the name, add comments, and even reassign to a test owner.

Other tips?

Here are the tips from other panels:
  • If you can't document it in a document flow then you shouldn't do it in a workflow
  • Keep them clean - do not over-nest if statements. Try to break into child processes. More flexibility for future changes as well. Just don't forget to close all the doors by including stop workflow statements
  • Clean them up - turn on automatic deletion and use bulk delete jobs for others
  • Review system jobs to look at failed and waiting jobs, review the associated message to see if there was an error
  • "When pigs fly" conditions - talk to the manager and also the person doing the work and get them involved in the planning. Still prepare for other situations. Consider a default condition that will send an email (or queue item) for awareness.
  • Don’t underestimate the power of workflows
  • Be careful what you trigger it off of - don't want it to be called over and over again. Look at the workflow possibilities before building custom code.
  • Can combine with custom code to trigger workflows based on ribbon button clicks (JavaScript). Have script set another field that triggers the workflow.
  • Be aware of the user security and impact on the workflow. On-Demand runs as the user. Automatically triggered runs as the workflow owner.
  • Gus G tip for creating dummy records then remove with bulk delete to trigger workflow on a linked record - http://community.dynamics.com/crm/b/adopt2win/archive/2013/04/15/scheduling-recurring-workflows-in-microsoft-dynamics-crm-2011-online-and-on-premise
  • Required fields do not apply to workflow, only on the form. Users will need to populate if they are assigned the record.
  • Wait conditions - make sure to include a timeout and a way for users to cancel
  • Trigger custom error messages with real-time workflows: http://survivingcrm.com/2013/11/using-real-time-workflows-to-show-error-messages/
  • Remember you cannot trigger workflows off of updated to calculated fields

There are so many great uses for workflows! I try to never do anything twice - if I have to do it more than once I should find another solution such as a workflow, bulk edit, export, etc. So, what do you use workflows for? What are your tips for learning and creating workflows?

Sunday, May 8, 2016

May 8 Blog Review

Clearly the blog has been a bit delayed so we have a bit of catching up to do. Let's jump right in!

CRMUG has lots of exciting things happening over the next few weeks. CRMUG European Congress is next week so be on the lookout for news from that. Also the Momentum Chapter Series! The DC Chapter meeting is on Tuesday, May 10. We will feature deep dive content straight from Microsoft on top of our usual programming. Plus there's lunch! Get registered for the CRMUGDC Meeting or see if there is a similar meeting coming up in your city! As always you can stay up to date on all of the DC Chapter activities by joining our community at CRMUG.com/Washington.

Ledgeview Partners shared a quick tip in Getting CRM Columns Sorted Out. This shows users how to sort by multiple columns in a view.

PowerObjects posted a deep dive into One Click Document Generation in CRM 2016. They walk through how to create a table in the template to pull in multiple lines of data - such as multiple products from an Opportunity.

Hitachi Solutions explains how to Use Real-Time Workflows for Data Validation. Real-Time workflows allow an error message to be returned to the user when they try to complete a certain action. This logic will fire from the web version, Outlook and even the tablet app.

A quick tip from Mitch Milam - Repurposing CRM Fields, Just Say No! Do not change out of the box fields to something else for your use. Keep in mind that they were created for a reason and future versions might make use of them in different ways.

Finally, I always recommend you keep up to date with the CRM Tip of the Day. If you are a bit behind I would recommend checking out Teach our users to type-ahead and 
The Forgotten Three.

That's all I have for today. Let me know if I am missing anything!

Wednesday, May 4, 2016

4x4 Series: Training Your Users

I was asked to participate in the CRMUG 4x4 webinar series. These are quick webinars with multiple speakers sharing tips and answering questions. I also wanted to document my tips here for future reference.

Training is an integral part to any implementation because you cannot have user adoption if they do not know what to do! Here are some of my tips. What other tips do you have?

Quick Reference Guides
Create quick reference guides for each user group or functional role. If possible, this should be kept to one page with all the steps they need for their primary job functions. This will give them something to keep handy and look at for their primary tasks.

You can build a repository of key functions with their step by step directions. These can be items such as searching for a record, scheduling an appointment, adding an address, etc. Then for each group you can just grab out the pieces that are relevant for them to build your document quickly.

Make Training Accessible
You also want to make sure you training materials are accessible for everyone. Part of each training should be showing the users how to get more training. This needs to be easy to get to and have details about the commonly used features but also the items they only need every once and a while. Make sure there are pictures and procedures incorporated where necessary.

There are many exciting ways to use the CRM 2016 Custom Help features to assist with keeping your training relevant and accessible.

Frequent Reminders and Tips
My last tip would be to keep the tips coming. Give user frequent tips to remind them of functionality and guide in the correct procedures. Make sure you find the balance here so your tips do not become too frequent (and therefore ignored) but stay relevant and helpful.

Other Tips
Here are some of the other tips discussed in the webinar:
  • When using a Train the Trainer approach make sure your trainers are accountable to their teams and available to for doing training and helping others
  • Keep training fun
  • Try optional lunch and learns - people will come out for food!
  • Tailor your training for specific groups and roles. Also make sure your training style matches up with company culture
  • Very related to User Adoption! Make sure you have executive support to encourage other users to learn the system and use it well

CRMUG Members can access the Recording here: 4x4 Training your CRM Users (Panel 2)

Please post your training tips in the comments! How do you help your users?