Omnichannel & Org URL

This post topic came out of some research that I was doing when getting my Omnichannel webinar presentation together, and I thought it would be useful to share with others.

When an environment (also referred to as an organisation is created within a tenant on the PowerPlatform, it’s given a URL. By default, this will be imaginatively named by the AutoGenerateElves, along the following lines:

It is of course absolutely possible to change this (assuming that someone else hasn’t taken that ‘special’ URL that you’re wanting to use!). To do this, you go to https://admin.powerplatform.microsoft.com/, log in with system adminstrator credentials, go to Environments, select the one you’re wanting, and click the ‘Edit’ button:

You’ll then be able to enter the name that you’re wanting to use (incidentally this is also where you’re now able to switch environments between Production & Sandbox):

You then click the Save button at the bottom of the screen. Assuming you’ve entered a name that isn’t already being used, all is successful. However if it’s being used by someone else (very frustrating, we know!), it’ll give a lovely error message at the top of the screen along the following lines:

Not very helpful, I know – if only there was a way that when you entered the name you wanted and moved off the field, there could be some validation checking happening there & then, with information in plain English if it was able to be used or not…ah well – one day!

OK – so people know this. Brilliant.

What I want to share, however, is how this affects Omnichannel within an environment.

See, when Omnichannel is provisioned into an environment, one of the things that it sets somewhere in the back end is the environment URL. You can’t see where it’s stored, but it’s saved somewhere. This is then used when setting up things such as Chat within Omnichannel – there’s an auto-generated code snippet that you would then use in an HTML block on a webpage to launch a chat session with an Omnichannel agent:

Now, when you change the URL of an environment, it doesn’t change in here – it seems that whatever is happening/updating in the background when you do the URL change, it’s not being pushed into Omnichannel and refreshing the settings there (and you can’t change them manually). Hopefully at some point it’ll happen, but it’s not doing it now.

Even manually changing the code in the HTML block on the website page won’t work, as it won’t be pointing to a valid Omnichannel URL.

We know that it’s not a usual course of events to change an environment URL, but there are valid scenarios that it would happen in, and we obviously need to know how to deal with it!

Having looked into this and tried out some different things, at this point in time there’s only one way to do this – you need to remove the Omnichannel solution, and then re-apply it to the environment. My immediate reaction to this was WHOAH…what about all of the settings (aka static data) that’s been entered for Omnichannel to be configured to the business needs?

With this in mind, I reached out to some people for advice – and they came through. Yes, you need to remove the solution totally (until a better mechanism will be implemented hopefully). But there’s something called the ‘Microsoft Configuration Migration Tool’.

Disclaimer – I haven’t actually used this yet, so this is based on the information I’ve seen on it

With this tool, it’s possible to select various entities, and export/move the data from one environment into a saved file, and then be able to import it. Phew – this sounds somewhat easier than manually doing things (as long as you remember every single place that you need to get the data from, of course).

Note: PowerObjects has a great article on the tool at https://www.powerobjects.com/blog/2018/08/27/microsoft-dynamics-365-crm-configuration-migration-tool/ , and the tool itself can now be gotten from http://xrm.tools/SDK (as it’s no longer part of the released SDK).

With this in mind, it’s now possible to recreate Omnichannel for the environment without hopefully TOO much fuss. The only additional thing to bear in mind is to then check and update the code snippets for Chat etc to reflect the new URL.

Man in Red Crew-neck Sweatshirt Photography

Let’s hope that in the future, this is streamlined and is much more trivial to be able to do!

Environments for Projects

As as tech guy, I immediately know what someone is referring to when they’re talking about environments (within a technical context, of course). However there are a large number of (non) technical people who have absolutely no idea what the word ‘environment’ means, leaving aside how they are used.

The aim of this post is therefore to demystify what environments are, the different types, how they’re used, etc.

Image result for technical environment

Caveat: There may be specific circumstances in which these may differ, eg for Dynamics F&O

So firstly – what is an environment?

This is simple to answer – an environment is a full (technical) system. There may be multiple different systems contained within the same environment (or they could be split out). There will be different environments used (more details below) in any company

Incidentally, people may also use the word ‘instance’ instead of ‘environment’.

The next question is – how are environments used?

Thankfully this is also simple to answer – environments are used to enable different parts of the technical system roll-out process. Each environment is unique (and should usually not be connected to each other

Types of environments

There are quite a few different types of environments needed. Listed below are the ones that are usually considered to be MVP (no, not Microsoft Valued Professional….in this context it means Minimum Viable Product)

Development
This is the environment that the development team will use for coding and configuration, as well as initial testing of code
Once code is stable, it will be promoted to the next environment

UAT (User Acceptance Testing)
This environment is where the client/business will access to test the system. Each development item will have a logged story, and these will be tested against. They will either pass (and then be signed off) or not pass (with explanations given as to why they haven’t passed) and be sent back to the development team

Note: It may be possible to use the UAT instance for training, and all client/business users to access it. This will depend greatly on the resources needed, project timeline/progress, etc. It is not usually advised to do this though

Staging
This environment is where data migration is tested out, to ensure that all data from the previous system/s are successfully migrated (with any transformations that may need to take place).

Note: It may be possible to combine the UAT and Staging instances, if the proposed system is very simple and not complicated/large

Production
This is the actual LIVE system for the company

Customisations, code etc are promoted through the different environments with releases. It’s important to ensure that these are carried out properly and scheduled in, especially when applying a release to a production environment. I’ll cover how this should be done, and what things to bear in mind, in a future post.

There are also several other types of environments that may be being used, depending on the type/scale/scope of the project:

Training
This is an instance with all customisations and code (to date) along with data that is used to train all client/business users. Any updates in functionality to test environments would need to be replicated to this environment as well

Integration
Depending on the other system/s that D365 will be exchanging data with (both in and out) it may be necessary to have a specific instance set up to test out the integration with these other components

Support
A clone of the Production environment for use in support cases eg attempting to recreate issues/bugs that have been raised

If you’ve come across any other types of environments, please do comment!