Tip #906: Pets are dangerous

Kyle the dog from Descpicable meYou move into a new CRM system and you found a cute new feature. You love that feature–it is your favorite feature, and you adopt it.

I call these features “pet” features–features that are viewed as significantly more important than anything else in the application. Some examples I’ve seen in real-world deployment pets include Connections, dialogs, certain Outlook client features, offline access, and goals.

The reason that pet CRM features are dangerous is that they can cloud your vision, hold you back from implementing new and better features, and give you angst if your pet does not perform at 100% of your expectations.

So let’s say connections is your pet. You love connections, and every problem you see you answer with connections. The problem is, connections should not be used for every relationship scenario, connections have limitations, and there are some newer better options. If the connections feature is your pet, when it fails you (and it will), your world will be shattered, and your faith in Dynamics as a platform may be shaken.

How do I identify my pets?

  • If this feature doesn’t work or has limitations, does my workflow stop? If your business process is so dependent on one specific feature that it can’t be done in any other way, it may be a pet.
  • Which features, when they don’t work, raise your blood pressure the most? These may be your pets.
  • Which features are you resistant to replace, even if there is a better way? These features may be pets.

Tips for keeping your pets in line

  • Maintain a realistic outlook. No feature is perfect; no feature is the solution for every problem. Test and validate the fit of the feature, including user experience, administration process, and performance.
  • Get involved in the Dynamics Community. Meet users from other companies and industries. This will give you exposure to the broader world of CRM, and how other people are using CRM. Whenever there is something in CRM that doesn’t work exactly the way that users want it to, it is common to hear “I can’t believe we’re the only ones who are doing this.” Realize that just because a specific feature doesn’t work in exactly the way you are trying to use it, that doesn’t make it bad. Sometimes the “by design” behavior is there because the majority of client feedback that Microsoft receives asks for it to be done in a different way than how you want to do it. Have you voiced your opinion on ideas.dynamics.com? Have you opened a support ticket with Microsoft or called your partner about it? If you don’t make your voice heard, you can’t complain about it.
  • Fully regression test system updates. Ensure that features used by users, including your favorite pet features, work correctly before deploying the update to production. If you find that the update impacts the performance of one of your pet features, identify if there are usable workarounds or newer approaches that might work better than your pet.
  • Re-evaluate old pets. Features like connections, goals, dialogs, Outlook client, and legacy service entities, while still functional, are no longer in the mainstream of the Dynamics product roadmap. This means that these features typically do not receive the same level of testing in new releases, and are in maintenance mode. These features do not work on mobile or with the new Unified UI, so holding on to these pets may prevent you from fully benefiting from the latest product enhancements.
  • Don’t be afraid to replace your pet if a newer better feature comes along. Sure, you and the CRM 4.0 Announcements entity had a great time, but he’s now gone to live in a farm in the country.

 

Tweet about this on TwitterShare on FacebookShare on Google+

Tip #905: Another option for delegate tracking

Filed under #CRMfeaturesweforgotabout

Recently, we described some of the limitations of support for delegate tracking with server-side synchronization. There is one additional option that I neglected to mention that allows for the creation of appointments for other people from Outlook while using server-side synchronization, and may be another reason why you may not want to dump CRM for Outlook quite yet.

In the settings for CRM for Outlook, there are some options to select which forms to use when clicking the new record buttons from the Dynamics 365 tab of the Outlook ribbon. The Appointment, Contact, and Task buttons are checked by default.

In this scenario, the delegate can be in Outlook, view their boss’ calendar, and click the new appointment or new contact button from the Dynamics 365 ribbon tab of Outlook.

This will launch the CRM form for new contact or new appointment. The assistant can create the appointment or contact, save the record, and via server-side synchronization, the record will synchronize with the boss’ Outlook inbox or calendar.

So what do I need to do to make sure the item synchronizes correctly?

The following reflects the default synchronization rules. If you have modified your default rules, you will need to ensure that you are setting the appropriate fields to be included in the boss’ synchronization filter.

Contacts

The default synchronization rule for Contacts is “contacts I own.” Before saving the contact set the owner of the record to the boss.

Appointments

The default synchronization rule for Appointments is appointments where I am an activity party other than owner. Just make sure you specify the boss as a meeting attendee. This also means that, by default, if the assistant owns the appointment, but is not an attendee/recipient, he or she will not see the appointment on their calendar.

Tasks

The default synchronization rule for Tasks is tasks where I am the owner. Before saving the task set the owner of the record to the boss.

 

 

Tweet about this on TwitterShare on FacebookShare on Google+

Tip #904: Portal refresh, change notification, and reset button

Portal, change notification and reset button walk into a bar… We did discuss portal refresh previously and the topic seems to have been closed. But some users have reported that, despite all of the correct settings, portal cache refresh just was not working as advertised and the only solution to make the changes visible was to restart the portal.

Dileep Singh, the man on the inside, to the rescue.

If you’re observing an erratic portal cache refresh behaviour and entity change tracking does not seem to be doing its job, your organisation may not enabled for change notification monitoring [from the portal point of view]. This is an internal setting which gets enabled when you provision a portal (or enable relevance search). However, if you reset your org or restore it from another org, after provisioning the portal, it can get reset.

To enable it again, go to Portal Management Page > Portal details tab, modify the name of the portal and submit. This will enable the tracking and cache will start working.

Bonus

Developers, rejoice! There is a hidden new feature in the new release that you might like to know about.

If you log into the portal with site admin permissions, you can visit the about page (append _services/about to your portal url). This page will show additional diagnostic information if you are an admin as well as a reset cache button. W00t!

That said, you should not need to reset cache in normal operations. The admin button was added to help portal development scenarios where developers need instantaneous cache updates so that they can debug and develop without slowing down.

Tweet about this on TwitterShare on FacebookShare on Google+

Tip #903: Scribe Insight error after Dynamics 365 upgrade

This tip of the day comes to us from Alexandros Miaris. (And you can send us your tip to jar@crmtipoftheday.com.

After a recent upgrade to Dynamics 365, we received the “metadata contains a reference that cannot be resolved” error message when trying to connect to Dynamics from the latest version of the Scribe Insight Workbench.

This issue was discovered by Scribe after version 7.9.2 of Insight was released, and a Hot Fix is now available. If you experience this issue, contact Scribe support and request Hot Fix ScribeInsight792_HF1

Tweet about this on TwitterShare on FacebookShare on Google+

Tip #902: Can I use both the Dynamics 365 Outlook Client and Outlook App?

As we have covered extensively on CRMTOD, the new Dynamics 365 App for Outlook is a great lightweight CRM experience for Outlook and will probably be the CRM interface for Outlook of choice for most users going forward.

But what if you like the new app and want to use it, but you still occasionally may need some functionality offered by the Outlook client. Some examples:

  • People who need offline CRM access
  • People who sometimes need functionality that isn’t available with the new
  • People who like to browse CRM folders from within Outlook
  • CRM consultants and trainers who need to demonstrate both options

A personal example–I like the experience of the new app when tracking an individual email, but I miss the ability to bulk track multiple emails with a single click, like I can do with the Outlook client. But I want to use the Outlook app from Outlook on my phone.

Shortly after the Dynamics 365 release, users reported, and my testing confirmed, that the Outlook Client would become disabled if the CRM was enabled. On a whim, this week I tested again and reinstalled the latest version of CRM for Outlook. Based on my testing, I can now simultaneously run both the Outlook Client and the new Outlook app. Bring on the belt and suspenders.


 

Tweet about this on TwitterShare on FacebookShare on Google+

Tip #901: Restricting access to your instance revisited

We’ve been hosting Dynamics CRM/365 instances for our customers since CRM 4 days but lately they have been moving to Dynamics 365 Online in drones (awesome – now I can sleep at night!). Some have been hesitant because we were using geo-restrictions for their instances (implemented in a supported way). Digging into why it was done in a first place: majority of the customers just wanted to restrict access to their instances outside the workplace.

Good news is that this kind of restrictions can now be implemented for Dynamics 365 Online using trusted IP rules. It will cost you a bit extra, e.g. last time I checked, Azure AD Premium would set me back $7 per user per month in one of the top 2 countries in the world.

The most important caveat is that, unlike on-premises approach, IP restriction is only enforced during user authentication.

But for most of the customers, ease of configuration, ability to enforce MFA outside of work, federation with on-premises AD for even more control, and device-based conditional access policy easily outweigh the limitations.

For more security goodness, consider auditing user access that has been part of Dynamics 365 / CRM since version 2011.

Tweet about this on TwitterShare on FacebookShare on Google+

Tip #900: Check custom roles if users can’t see the app

This tip is from Rocky “Road” Sharma.

What if you watched the video on App Designer, applied custom security roles to your app and now your users can’t see the App? If you are using custom security roles and create Dynamics 365 Apps for teams/departments in your organisation, the app may not appear in the list of Apps for the user even if all the correctly security roles are assigned to the App.

That could be due the missing Read Privilege on App entity, that you need to add to the user’s security role in the Customization tab.

Read privilege on app entity

 

Tweet about this on TwitterShare on FacebookShare on Google+

Tip #899: If email gets rejected check for duplicate addresses

tl;dr

When incoming email gets rejected, check if you have records in mail-enabled entities (contacts, accounts, queues, and system users OOB) using the same email address.

I’ve done this today

  • Set up a hybrid server-side sync for a customer. (There are some gaps in the docs, this is a recommended reading companion.)
  • Add a support queue and a mailbox for support@foobar.com
  • Set Convert Incoming Email to Activities to “All email messages”
  • Approve email
  • Test & enable mailbox. Inbound – success, outbound – success)
  • Test it myself: outbound email works like a charm, inbound email gets delivered to the support mailbox but not to the queue. Er?

So I’ve done a bit more:

  • Permissions – all good – I’m admin
  • Workflows – none

Time to troubleshoot:

  • Open Settings > Email Configuration > Server-Side Synchronization Monitoring – Mailbox Errors trace shows up lots of error code 29 entries – “incoming email rejected”. I can see that – you’re NOT helping, error log!
  • Boogle the problem. Yep, people reported it here, here, here, and here, and here. No definite resolution.
  • All hail on-premises – enable tracing.

ErrorCode: -2147218683, InnerException: Microsoft.Crm.CrmException: At least one system user or queue in the organization must be a recipient
at Microsoft.Crm.Common.ObjectModel.EmailService.FindBestOwner(AddressManager addressManager, TrackingInfo trackingInfo, AddressEntry[][] allResolvedAddressEntries, String traceSubject, Int32& ownerObjectTypeCode, ExecutionContext context)

Now, that is interesting, because, even with the glasses on (not that I need any just yet), I can see the queue with the support@foobar.com email address. Read forum entries a bit more closely. That one has couple people reporting the issue caused by inactive queue having the same email address.

But I don’t have any other queues? Wait a minute! What about other records? I’ll be damned, there is a contact support@foobar.com created at around the same time as I was tinkering with the mailbox. Delete the contact, test again – everything works!

Theory

I’m the owner of the mailbox so my personal email setting will apply
Personal options - email
When mailbox is tested, system will send email to support@foobar.com from, you guessed it, support@foobar.com. Mailbox is not approved yet so the sender is not known, the system goes ahead and creates a contact, according to my settings.
Then the system decides to resolve the recipient, and finds two addresses. Wouldn’t be a problem but there is a new organization-level setting that allows unresolved recipients:
Organization settings for unresolved
With the recipient unresolved, CRM throws an exception (see above).

This is just a theory, of course, but the problem is real and resolution is real – check for duplicate emails in mail-enabled entities in your organization, and make sure to check the inactive records too.

Tweet about this on TwitterShare on FacebookShare on Google+

Tip #898: Delegate tracking and server side synchronization

tl;dr

Delegate tracking of contacts and appointments does not work with server-side synchronization or with the new Dynamics 365 Outlook app.

Read more

Consider the scenario where the company owner, Ms. Bigwig, wants her appointments and contacts tracked in CRM, but she is too busy to maintain her calendar herself, so she has her assistant add items to her calendar and contacts and then track them in CRM.

According to the official documentation, “If you’ve delegated access to your Outlook account, the delegate can track items on your behalf.” So delegate tracking is possible. However, what the documentation (currently) does not state is that delegates tracking contacts and appointments on your calendar will not work if your mailbox uses server side synchronization or if you or the delegate are using the new Outlook app.

For delegates to track items on your calendar, you must be using Outlook synchronization for contacts, appointments, and tasks. In the scenario of Ms. Bigwig, she can have her assistant track things in her mailbox, but these items will not synchronize to CRM until Ms. Bigwig logs into Outlook. If she travels and does not open Outlook for two weeks, the delegate tracked items won’t appear in CRM until the next time she opens Outlook.

Alternative approach

So if you want to use server side synchronization and you want delegates creating or updating Outlook items, an alternative approach to delegate tracking is to have the assistants create items directly in CRM and assign them to Ms. Bigwig. These items will then synchronize to the boss’ calendar immediately via server-side synchronization.

Tweet about this on TwitterShare on FacebookShare on Google+