Our team at TechLabs London have recently faced a fairly complex and bewildering issue on Dynamics 365 v9. We have setup access team templates against the Contact entity to manage access to Contact records individually. If you haven’t used Access Teams before, you can read more here, but in essence it is a way to control which user can see which contact at a record level.
Our customer has converted from another vendor (a.k.a SF) to our iProperty Cloud solution (http://iProperty.Cloud) built on Dynamics 365 v9 and the new Unified Client Interface (UCI). As part of our data migration, we imported thousands of contacts to Dynamics 365 Customer Engagement and allocated a number of users for each contact record based on a predefined list and set of rules. This was a custom data migration process to create these record level access records using our own TechLabs London propriety migration solution.
Once our data migration into Dynamics 365 was complete, we checked Access Team security and everything looked absolutely fine. The next day after going live, Team access security disappeared for few thousand contacts – but NOT all contacts. Upon looking at the POA table (Principle Object Access Table) where security is set, we found that about 4K access records have disappeared. Literally disappeared!
Apologies for the long story but I want you to be aware of everything we tried to resolve this issue as one of these steps may help you fix your issue (which may or may not be similar to ours).
Basically, we spent the following few days trying lots of different resolutions to try to find out the issue.
- First we re-imported Access team records using our migration App – everything went back working fine until the next day in the morning – 4K access records disappeared again!
- We tried setting the record level security using “Share” not Access Team (manually and programmatically). While we know that Access Teams are “hidden share” and both get created in POA table, we thought this may solve the issue. It didn’t – next day, everything disappeared.
- One possible cause of these record level access security issues could be triggered by re-parenting. For example if contacts are associated to an account and you give ownership of this account to a team while the relationship behaviour is set to cascade all, then the child contact records will become accessible to this team. We removed any cascade relationship behaviour – but still didn’t help. Next day, all access disappeared.
- We then Disabled all our custom plugins that remotely affect security and access – we had few automation on security between different entities and teams. No luck.
- Also we disabled our own security roles synchronisation process (Azure function) which synchronises security between Dynamics 365 and SharePoint security. Nope! Not even that.
- We deleted and recreated the team access template then re-imported all access records. Still same issue. All 4k access records were deleted from POA table the next morning.
- We setup an hourly extraction routine to extract Access records from POA table to a separate Azure SQL. We monitored and tried to find out the issue or the cause – still nothing.
- After blaming ourselves and our code for good few days, we raised a ticket to the Dynamics 365 Support and Product Team.
Finally, the issue was found to be related to the Table: SubscriptionTrackingDeletedObject table and an associated cleanup process that runs every day in the morning (our UK time) in the Dynamics 365 Platform. Apparently this table includes a list of GUIDs for records that need to be deleted from the POA table (and other locations). This table is not exposed via API (or at least we are not aware of a way to).
Basically, it came down to the fact that we imported contacts before go live the first time with these contacts original GUIDs as they were coming from an older CRM system and we wanted to maintain the relationship between entities and records. This is normally fine, however, at one point before going live we had to make some changes to the structure so we deleted those imported contact records and re-imported them with the same GUIDs again. When we did that, apparently these records and all their related security access records were marked for deletion from the POA table. When we re-imported, these contact GUIDs and their related access records were still marked for deletion. Hence, every day in the morning the good old record deletion clean up process SubscriptionTrackingDeletedObject would delete our access records and drive us crazy.
The fix was a script created and run by the Dynamics 365 support team which permanently fixed the issue for us but not before we have learnt a few hundred ways of how to try to fix such issues!
Today 25th May 2018 is the day GDPR goes live! To “celeberate” this important day, and as a contribution from me to the Microsoft Dynamics 365 community, I’m offering my Dynamics 365 GDPR Add-on Solution free to the community both Customers and Partners. You can find a link to download the solution for free at the end of this post.
The solution delivers the following functionality and Data Subject requests:
- Consent Management
- The Right to be Forgotten (anonymising contacts information)
- Personal Identifiable Information (PII) Management
The solution includes the following components:
- “Consent” Custom entity with relationship to Contact entity
- New form for Contact entity called GDPR and few additional fields on Contact
- “Configuration Settings” entity for capturing config information
- A Plugin Assembley for the Anonmisation function
- A Workflow for creating tasks to renew Consent at 30, 7 and 0 days from consent end date.
For the solution to work properly, once you import the solution, you will need to do the following:
- Create a Queue called “GDPR” so that tasks for consent renewal created by the workflow can be added to this queue.
- Create a Configuration Setting record called “GDPR Contact” as the screenshot below. You need to enter names of fields you want to be anonymised separate by semicolons.
The solution takes the approach of anonymising the contact information without actually deleting the contact record. This means everything stays the same, attributed to the same contact record but the record itself will no longer hold any personal identifable information (PII) of the customer.
Here are screenshots on how the “Anonymise” button works:
GDPR Contact Form:
Click on “Anonymise” button:
Anonymised Contact record:
I hope this solution helps many in the Dynamics 365 community. If you find this solution helpful, please review and/or vote on this solution. I’ll be happy to support the solution where I can (and based on its popularity).
N.B. The solution is provided as is with no warranty. It does not guarantee GDPR compliance and your organisation will still need to ensure they are compliant.
With the new release of Dynamics 365 v9.0.2 Spring 2018, I thought I’ll share links to all the new licensing guides and information sheets that are available for Dynamics 365 Microsoft Partners with access to Microsoft Dynamics Partner source, they can get the same information here:
and here is what I believe a publicly available version of the Dynamics 365 Spring 2018 (v9.0.2) licensing guide:
Finally, you can find all detailed documents, guides and information sheets/videos on Partner Source here:
Microsoft Dynamics 365 Licensing Guide – Spring launch updates
Microsoft Dynamics 365 Existing Customer Transition Guide
Microsoft Dynamics 365 Licensing Guide – Addendum for Case Management
Microsoft Dynamics 365 Business edition Licensing Guide
Microsoft Dynamics 365 Pricing and Licensing Videos
Microsoft Dynamics 365 Licensing and Pricing Deck – Spring launch updates
Microsoft Dynamics 365 Pricing and Licensing FAQ – Spring launch updates
MICROSOFT DYNAMICS 365 ON-PREMISES DOCUMENTATION
Microsoft Dynamics 365 On-Premises Licensing Guide
Microsoft Dynamics Field Service On-Premises Planning Guide
Microsoft Dynamics 365 On-Premises FAQ
Hope this helps!
We have recently had a fantastic two days as part of our Dynamics 365 Saturday event and Hackathon. It started with a Hackathon on Friday afternoon all the way until the end of the night then followed by a Dynamics 365 Saturday full day event. We had some amazing content including opening keynote by Ben Vollmer, Microsoft Dynamics 365 Field Service Global Lead. We also had an excellent closing keynote by Steven Kaplan, LinkedIn Group Manager for Sales Navigator and an ex-Microsoft Dynamics exec himself.
I had the pleasure to interview Steve as part of the Question and Answer section of the closing keynote. You can read more about the event on this blog post:
You can also see my live LinkedIn video from the closing key note here:
We have also had some fantastic feedback from various attendees including this potential Dynamics 365 Customer:
I have also delivered a sesson on my “favourite” subject: GDPR. The session was titled: Business and Technical Design considerations for a GDPR compliant Dynamics 365 solution.
I’ve been asked many times about the session slides and I have just got round to upload them. You can find them on http://crm.boutique at the following location:
Enjoy! I hope you find the slides useful.
I have a Dynamics 365 Solution built on v9 (Cloud) and it is built on the new Unified Client Interface (UCI – also known as Unified Interface).
When I render my UCI App on Dynamics 365 Mobile app running on an iPhone Mobile Device, everything works fine except one issue: My Speech to Text web resource does not work. When I checked, I found out that the Dynamics 365 Mobile App (latest version as of Feb 2018) does not have access to the iPhone Device Microphone.
Moreover, when you go to check under the iPhone Settings –> Privacy –> Microphone, you can see all Apps that requested access to the Device Microphone but you will find that Dynamics 365 App is not listed. I also could not find a way (initially) to get the App to request acces to my device microphone.
This issue has now been reported to the Dynamics 365 Product Group team responsible for the Mobile App – so they are aware of it and hopefully will fix it in an upcoming release.
However, thanks to my friend and fellow MVP, Marius Agur Pedersen, he alerted me to the fact that there is a “Microphone” icon on the Timeline control on several Dynamics 365 entity forms. Once you click on this “Microphone” icon, I managed to get the standard Dynamics 365 Mobile App to request access to the Microphone from my iPhone Device and the App now shows up on the iPhone Microphone Setting under Privacy.
Here is how you can initiate this request from the App to access the Device:
I’ll be updating this post with more information once I get confirmation from the Product team that the App can request access to the Microphone when it runs for the first time. But for now, the above work around should be good enough and should allow your voice recognition, audio and/or Speech to text web resources and modules to work inside Dynamics 365 Mobile App.
Hope this helps!
I had really great audience and some excellent interactions at my Microsoft Dynamics 365 #GDPR compliance session in the stunning #Oslo at Microsoft Norway. I’ve heard and discussed several shared concerns on GDPR significant impact on #CRM solutions, its complexities and how soon the regulation is coming!
I also want to thank everyone for their positive and encouraging feedback. That’s what keep me (and other MVPs) going and make us continue to help the Dynamics 365 community in passion!
As per everyone’s request, I have incorporate our useful interactions into my slides and you can now download them via the link below on this post or on http://CRM.Boutique (free registration is required).
If you would like to attend this session again in person, then you can join me at our next Free Microsoft Dynamics 365 event in Milan at Microsoft Italy offices on 16th September 2017. This will be another great CRM Saturday event, this time in Italy.
One last off-topic point: Oslo and Norway are absolutely stunning (did I say that before?). If you haven’t been there, then try visiting soon – preferably in the summer. Make sure you: a) take the Oslo Fjord cruise, b) do the Oslo River walk and c) eat plenty of Norwegian fish (especially Salmon).
I leave you with some photos from the event and amazing Norway!
We have just had our first CRM Saturday Bootcamp at Microsoft UK London Paddington offices this Saturday, 22nd July 2017. It has been a lot of hard work for everyone at CRM Saturday especially the trainers: Neil Parkhurst, Janet Rob, Raz Choudry and Baris Kanilca. As for me, I did 16K steps just walking between the various rooms ensuring all sessions are adhering to our agenda times. Personally, my sessions both overrun by few minutes and some of my track attendees missed part of their breaks as I got carried away! For this, I’m sorry 🙂 It has been a seriously fun event with some excellent attendees.
Not only we had 110 excellent attendees @ our free #MSDyn365 #CRMSaturday Bootcamp. We also raised £1,421 for the London Fire Fund, British Red Cross.
We learnt Dynamics 365 together in 3 different parallel tracks. There was a lot of excellent networking as well as some great fun at the various breaks and the Raffle ticket awards.
Some of our attendees even went back home with an XBOX S One, an Amazon Alexa/Echo and other prizes. What a day!
However, I’ll have to name names in this post! Firstly, many many thanks go to: Microsoft’s Matt Fox and Bruce Nicholson Scribe’s Henk Adriaans and Steven Thornhill Nigel Frank’s Oliver Norton and Andrew Brownlie
Without our host, Microsoft, and our sponsors, such an amazing events wouldn’t have been possible. And of course special thanks goes to our trainers: Raz Dynamics, Neil Parkhurst, Janet Robb and Baris KANLICA
And our helpers: Lipi Sarkar (MBA), David Robertson and Samira Kadiri
And of course many thanks to our Dynamics Community colleagues and Professionals who attended the event and made the donations to make such an event a success!
If you are currently responsible for a Microsoft Dynamics CRM system or planning / delivering a Dynamics 365 solution, then you need to be aware of this important Microsoft announcement about the deprecation of some features and functionalities.
Microsoft defines “Deprecated” as an intention to remove the feature or capability from a future major release of Dynamics 365. The feature or capability will continue to work and is fully supported until it is officially removed. This deprecation notification can span a few years. After removal, the feature or capability will no longer work.
Hence, you should start planning replacing these features from your current Dynamics systems or avoid using these capabilities in your current Dynamics 365 implementation projects.
Here is the list of features, functionalities and capabilities officially deprecated and will be removed from Microsoft Dynamics 365 CRM:
- Dynamics 365 for Outlook (Outlook client) is deprecated
- Service scheduling in Dynamics 365 for Customer Service is deprecated
- Dialogs are deprecated
- Usage of Parature knowledgebase as the Dynamics 365 knowledge management solution is deprecated
- Project Service Finder app is deprecated
- Contracts, Contract Line Items, and Contract Templates entities are deprecated
- Relationship Roles are deprecated
- Mail Merge is deprecated
- Announcements are deprecated
- Ready-to-use business processes available through Add Ready to Use Business Processes setting are deprecated
- Silverlight (XAP) web resource is deprecated
- The following client APIs are deprecated
For full details about these deprecations and the official Microsoft announcement, please refer to the following Microsoft Documentation:
Please note that deprecations described in this post and in the original Microsoft Documentation announcement, apply to Dynamics 365 Customer Engagement as of the July 2017 Update. All Dynamics professionals should use this information to prepare for future releases of Dynamics 365.
Customer Engagement refers to the applications that make up the CRM portion of Dynamics 365, which includes the Sales, Customer Service, Field Service, and Project Service Automation applications.
Does this blog post title sound confusing? If yes, then I have to admit it is intentionally written to sound confusing. I made it confusing because this is how I felt after reading about the so many names and naming combinations I heard about Dynamics Porals, ADX Studio portal recently acquired by Microsoft, Dynamics Portals by Microsoft and Microsoft Portals SaaS module.
To clear this confusion, I found this comparison on Adoxio website to be helpful to clarify the confusion:
For those who don’t know, Adoxio is the consultancy part of ADX Studio that Microsoft didn’t acquire.
So to clarify, Adxstudio portal were up to versions 7 before Microsoft acquired them.
Once Adx code was acquired, Microsoft rebranded it to Portal, from Microsoft. This is the new SaaS Dynamics Portal from Microsoft which is normally included in your Dynamics 365 Enterprise subscription. This is also known and referred to as: Microsoft Dynamics Portals, Microsoft Portals for Dynamics 365 and few other permutations. This dynamics portal is only available in the cloud (SaaS) and is not available for on-premise
Microsoft has then decided to release the source code as a one-off release to the Dynamics community. This is the release of the Microsoft SaaS portal source code at a specific point this year but as mentioned, it is a one-off, as is with no support or bug fixing. You can understand more from the comparison in the image above.
Finally, Adoxio has taken the Microsoft Open Source Portals code and made it freely available on GitHub as XRM Portal community edition so that it can easily be downloaded, updated, and maintained by itself and anyone else, including other Microsoft Partners. This represents the definitive edition of Microsoft Open Source Portals for Dynamics 365 brought to you by the same team behind ADXStudio. xRM Portal community edition is available to be used both on-premise and cloud.
Hope this post has clarified the confusion between the various versions and the new promising XRM Portal community edition.
Microsoft Dynamics 365 December 2016 release (version 8.2) included some significant changes to Dynamics CRM Business Process Flow data model and entities structure.
In the new Model, every time a business process flow is activated, a custom entity is automatically created to store the activated business process flow instances.
Before that, every time you create a business process flow, it is stored in the Workflow entity (https://msdn.microsoft.com/en-gb/library/mt622427.aspx).
The Workflow entity stores the business process flow definition. So once the entity is created, it is always in Draft state and its definition is stored in Workflow entity. XAML property is where the definition is stored and is mandatory/required.
Once you activate a business process flow definition (by changing the state of the corresponding Workflow entity record), a custom entity with the following name is automatically created to store the activated business process flow instances:
More details can be found in this MSDN Article here:
There is also the Process Stages Entity which contains: Step metadata for process stage (Client Data). It also contains stage Category (Qualify, Develop, Propose, etc.) as well as the Stage Name.
Properties represent fields of data stored in the entity. Some properties are read-only.
||Description: Step metadata for process stage
Display Name: Client Data
||Description: Select the business unit that owns the record.
Display Name: Owning Business Unit
||Description: Primary entity associated with the stage.
Display Name: Primary Entity
||Description: Shows the ID of the process stage record.
Display Name: Process Stage
||Description: Select the category of the sales process.
0 : Qualify
1 : Develop
2 : Propose
3 : Close
4 : Identify
5 : Research
6 : Resolve
7 : Approval
Display Name: Stage Category
||Description: Type a name for the process stage.
Display Name: Process Stage Name
||Description: Version number of the process stage.
Display Name: Version Number
More information on the ProcessStages entity is here:
Finally, here is a Dynamics Community post with few more information and discussion on this subject: