Power Platform Capacity Monitoring

If I look back at customer engagements over the last few years around Power Platform, whether it was a new capability or an existing capability, there was ONE thing that stood out above all. This was the ability to be able to track capacity usage over time, and to be honest, most organisations weren’t really doing very well at it.

For those who are unaware, there are actually three different types of capacity present within Power Platform environments. These are:

  • Data
  • File
  • Log

Each one is used for a specific purpose – broadly speaking, File holds all attachements that are uploaded directly into Dataverse, Log is used for auditing purposes, and Data holds everything else (hence the name)!

Now this data is shown within the Power Platform Admin Centre, under the ‘Resources/Capacity’ section’. An example of this is:

There’s also a nice little breakdown of capacity allocation through licenses etc, which essentially shows where the available capacity has come from:

If we drill down a bit further, we can open up a specific environment, and see not only the overall usage per capacity type, but also which tables are consuming the most amount of data:

All of this is well & good so far, for someone wanting to take a look at what is currently happening. But this is a manual action – it is possible to manually export the data, but again, this isn’t automated.

It’s also not possible (at least not at this point in time) to query the underlying records that hold these values. So we’re a little stuck. If an organisation wanted to see historical data usage, and/or predict data trends (such as ‘how much capacity would we need to have in 6 months if we continued our scaling’), there’s no way to do this. At least not automatically – someone would need to store the values down manually, then report on it. A hassle, to say the least.

Now when it comes to looking overall at Power Platform, the Centre of Excellence Starter Toolkit is really quite amazing. The Microsoft PowerCAT team continue to iterate existing functionality within it, as well as bring new functionality as well.

At this point in time, however, it doesn’t have any capacity monitoring in it. Well, it sort of does – we can implement notifications to alert us when capacity reaches a certain value. But this doesn’t solve the challenge as laid out above.

So with this in mind, I set out to create a solution to handle it. I’ve always wanted to create some sort of tool for giving back to the community & helping others, and I saw this as my chance to do so (I’m in awe of the various XrmToolBox tool creators, for the record).

So, I’m releasing a capacity monitoring tool. I’m using GitHub as the host, and the repo can be accessed at https://github.com/thecrmninja/Power-Platform-Capacity-Monitoring (it was a learning experience as well as how to use GitHub as a source repository, as I’ve not done that before!).

Model-Driven App:

Reporting Dashboard:

This is just the first version – I have various ideas about how to iterate on it, and tweak functionality. Each release will include release notes & important information to be aware of (such as security needing to run it). Also importantly, thanks to the amazing Matt Collins-Jones for reviewing some of my work around this.

The audience for this tool is aimed at IT/Power Platform admins who are already familiar with the Microsoft CoE toolkit solution, and have appropriate access to it.

If you find any issues, please raise an appropriate GitHub Issue item, and I’ll look into it. Also, if you have any ideas that you think could be worthwhile, please feel free to suggest them!

Finally, I’d be interested in hearing how you think this could support you or your organisation – feel free to drop a comment below!

Keeping belief in oneself

Although I usually post around technical matters & such, occasionally I digress into personal reflection. After all, this is my personal blog, & I feel it’s sometimes good/relevant to share certain personal things. Today’s post is along those lines, though it does relate to a technical matter.

Let’s set the scene. As many of you know (either from knowing me personally, or from reading my blog posts), I’m from the ‘model-driven app’ background. Canvas apps are really cool, but I wouldn’t say that I’m a very advanced creator of them. I’m learning the whole time about them (well, when I have a free minute here & there). There are many people in the community who are extremely more advanced than I am, and I love being able to learn from them.

I’m also considered to be in ‘Delivery’, This is the fancy word for those who run/are involved in projects, rather than selling concepts to clients. I’d run a mile if someone tried to put me in a Sales role (though I do admire the power suits that Sales have, occasionally). I’ve done a bit of Pre-Sales (where I’m helping out from a technical perspective), but haven’t been heavily involved. It’s actually something that I’m trying to work on, with being a tech evangelist. After all, if people already know/rave about the tech, how can you evangelise about it to them!!

Account Managers vs Sales People - davidmarkshaw

So last week I get a call from our Sales team. They’re really nice, and know their stuff. However they’re not ‘techies’. They had a situation – we’d been talking to a client about a potential project, and the client told us to pitch for it. Brilliant, right? Well…

The client told us that we had 4 days until the pitch deadline. Not only were we needing to pitch with the usual presentation pack (however would Sales operate without PowerPoint…?), we also had to do a live demo. Not for a completed product, but rather a Proof of Concept (PoC).

The only person available was….yes, you guess it…me. There wasn’t anyone else around with the necessary knowledge/skills to create the PoC in the time-frame needed. I’ll freely admit that I was absolutely slammed with existing projects, but wanted to be able to help out.

However, things then got ‘better’. And by ‘better’, I meant ‘interesting’. I got told who else was pitching to the client. Obviously I’m not going to mention any specific details here, but I knew who they are. More importantly, I figured that I had a very good idea of who from their side would be creating the tech, & doing the pitch.

Now as I’m not mentioning any identifiable details, I’m feeling free to say this. They’re not at my level of tech skills. They’re nowhere NEAR my level of tech skills. This is NOT because I’m better than they are. Totally the opposite – they’re SO far ahead of me with their knowledge of things, I can barely see the dust that they kick up in a race.

Knowing this, I knew that I couldn’t build a model-driven app (though it would have worked perfectly for the scenario/s we were given). I HAD to do a canvas app. But even with doing that, it wasn’t going to be anywhere near as good as what the other side would be able to put on.

The phrase ‘gibbering in fear’ does come to mind with my reaction to finding all of this out. I did feel slightly like a deer caught in the headlights. I wanted to do well, both for myself & my company, but I honestly had no idea how we could stack up.

Deer in the Headlights: By Generation Success – Generation Success
How I felt I looked like!

Thankfully, my company has an extremely open culture, and I was therefore able to talk to my manager about it. He understood where I was coming from, but encouraged me to go for it & do what I would be able to create.

My wife also encouraged me to go for it. Well, actually her words were ‘it’s not sexy when a husband says that he can’t do it, so man up and go for it!’. Ha…after that I couldn’t very well NOT do it.

So I applied myself, and with some VERY late nights (I did have other projects on, as I mentioned above), managed to get something in place. Not only did I create it, I think it looked really good. There was some really nice (canvas app) functionality, and it all came together pretty well.

Everything was in place in time (including some last minute tweaks). I even decided to spice up the demo a bit, and borrowed some dinosaurs from the kids to use for personas. We were using live camera feeds for part of the demo, and suddenly the demo was joined by ‘Rexy’, the ‘Customer Service Representative’ T-Rex! They were quite amused by it (thankfully!), and our team thought it was absolutely hilarious.

Hire A Dinosaur - Creature Events
‘Good afternoon, how may I be of assistance?’

I have no idea how the other partner pitched to the client, or what the decision will be from the client. It’s way too early for that.

What I do know is that sometimes we can lose track of ourselves. I’m not going to go into the subject of ‘Imposter Syndrome’ (check out Em D’Arcy if you want to read up about that). Rather that having others around to encourage us, even though others may be more skilled, can really make the difference.

In life, we can often face challenges. How we handle them, and how we decide to move forward, can define who we are. When dealing with technology items such as the Power Platform, where there’s constant change, it can sometimes feel very daunting, but we still need to push ahead.

Yesterday I was listening to Lisa Crosbie talking about her journey into technology (and canvas apps). As she put it – ‘there is no comfort zone here – you need to find a place to feel comfortable with this level of discomfort, and ride it to be successful’. It’s really so true. It’s not just needing to push ourselves in the traditional way, but to keep up our own confidence in our skills & abilities. With this, we can continue to drive forward, keep on learning, and continue our journey of greatness!

I’m really glad that I was able to do this, and hope that I can keep this with me. By doing so, I’ll be able to continue along my own journey.

Have you ever had a time when a challenge seemed insurmountable? How did you cope with it? Drop a comment below – I’d love to hear!

Channel Integration Framework (I)

So for starters, the title is somewhat of a mouthful, right? Try saying ‘Channel Integration Framework’ several times fast, and you’ll end up with some VERY interesting sounding words. Thankfully, people and organisations working with it usually shorten it to ‘CIF’. So that’s what I’m going to do as well (which will also hopefully prevent any RSI whilst I’m typing this all out).

The definition of CIF according to Microsoft is:

The Dynamics 365 Channel Integration Framework is a cloud-to-cloud extensible framework to integrate third-party channel providers with Dynamics 365 model-driven app using a browser-based JavaScript API library.

Now, for the technically minded (isn’t that all of us?), CIF is a set of API’s (methods, events & protocols) that enable developers to build their own solutions, and integrate them with Dynamics 365.
Examples of these would be a communication widget that’s running on a 3rd party provider cloud system, but that can surface and interact with Dynamics 365.

There are multiple partners out there who are doing this, such as Solgari. The immediate benefits of this is that additional functionality can be provided for customers that Microsoft hasn’t built into the system (yet!). An example of one of the functionalities provided by Solgari is the ability to dial a number directly from the Contact record (telephony):

Before CIF was available, it was usually an immense headache to integrate a 3rd party application solution into the system. It could be done of course, but was something that you had to be REALLY dedicated to doing, with all of the time, efforts and costs that it would involve.

With it being launched, many people breathed a massive sigh of relief, and then started to look around for partners who had solutions that supported it. There are now several Microsoft partners who offer solutions that integrate with CIF, and through this extend the functionality.

The CIF framework offered the following benefits:

  • It provides an extensible framework to integrate third-party cloud-based channel providers or channel aggregators with Dynamics 365 model-driven app (not Canvas)
  • It’s channel agnostic. Ie channels such as voice, video, chat, co-browse etc can be built as long as there’s a Javascript-based widget available
  • It’s not just a single direction flow of data; it allows two way communication. This therefore allows both inbound and outbound data
  • It exposes Javascript API’s (note the item above about it being a Javascript based widget)
  • Deployment is easy (well, as easy as any deployment can be!). Deployment is also the same across all apps/widgets – it follows a standard process
  • Plug & Play! It’s now very easy to have multiple different providers integrated, rather than being limited to a single provider
  • Dynamics 365 model driven app agnostic – once the channel has been built and deployed, you can then enable it on the model-driven app that you’re wanting to use it with, based on business requirements
  • Not reliant on operating system or web browser – it’s not reliant on a specific hardware/OS/browser configuration (obviously the browser needs to have the appropriate Javascript security settings enabled, or else it won’t work)
  • Screen pop! Popouts are available to display customer information that can help agents with their customer conversations and service.

The architecture behind CIF is as follows:

High-level architecture diagram of Dynamics 365 Channel Integration Framework
  1. The Dynamics 365 environment is where the CIF app is present to create and manage the required configurations
  2. The single-session Dynamics 365 model-driven app exposes the CIF panel to host the 3rd party widget
  3. The CIF Adapter enables the communication between a single-session model-driven app and the channel provider solution
  4. The web-based communication channel (2rd party) is hosted in the widget that the CIF provides. This is multi-purpose; it’s possible to host chat, email, or telephony channels of your choice
  5. The Channel Provider is the service that you want to integrate and interact with using the CIF. Channel capabilities are specific to the channel provider (ie a 3rd party solution that only supports chat won’t be able to support telephony etc!)

So essentially by using 3rd party solutions that integrate with CIF, it’s possible to have customer service offerings covering things like:

  • Telephony
  • SMS
  • Chat
  • Social media

This is really great, and is really the starting point for taking customer service to the next level. Companies want to be able to easily and quickly support their customers across all possible channels, as forcing them into using a specific channel doesn’t always work well, and can in fact be counter-productive.

Now, all of the above is of course amazing, and really great. The MAIN drawback is that this was CIF 1.0…..and it’s not possible to load a CIF 1.0 widget into Omnichannel! Aarghhh!!! It’s only possible to use 1.0 widgets with model-driven apps, which Omnichannel is not (more on that another time). So it’s possible to have chat or telephony integrating with Accounts, Contacts etc.

However, don’t despair yet. Microsoft has released CIF 2.0, which DOES integrate with Omnichannel. So stick around, and I’ll be putting up a post around how that works (I know – such a teaser!).

Bus Apps At Speed Day

Today I attended a ‘BusApps@Speed’ day (BusApps refers to Business Applications) at the Microsoft campus in Reading. The aim of the day was to give a whistlestop tour through many different applications, including some that I’m not that familiar with (in terms of the functionality and integration). Organised by Chris Huntingford (who also took most of the pictures that I’ve used below), it was really great to learn & broaden my knowledge and understanding of the different applications/functionality that can be used

A quick summary is below:

Image

Chris kicked off the day in his usual style, talking about how the landscape has changed and evolved. Quickly covering abilities that are now present in Power Apps, Power Automate and Power BI with quite some finesse, we were immediately entranced and ready for the rest of the day.

Image

Ruth Forster-Towne from FourVision gave a presentation about Human Resource, which is what Talent has been rebranded to (along with some changes). There were some gaps in the functionality, so FourVision brought several HR ISV solutions to the table to fill these gaps, which is really great to see. The ability to have a standard integration for payroll gives the option for companies to use a local payroll provider in order to be compliant with the necessary legislation (as this can change extensively from country to country!)

Chris Haley spoke about Project for Web, Project Online and PSA. Covering some of the architecture and how best to use each one, it was quite informative as I’ve never used any of them. It was also interesting to hear that DevOps could be included alongside as a project tool, and I’m going to be doing some research into how this would work best.

Image

Afshan Ipsen blew us away with talking about ‘One Version’ for FinOps – we couldn’t believe it’s the first time she’s carried out a speaking engagement at one of these events. Talking through the continual development of the platform, and how to efficiently handle testing the new releases (minor as well as major) on a regular on-going basis. Some really amazing thoughts which can apply to all technology projects really.

Image

Thomas Carroll absolutely wowed us with his presentation on the different Reality series that Microsoft has. Augmented, Virtual and Mixed all bring amazing solutions for being able to help us get better, as well as troubleshoot situations.

Dynamics 365 Guides in particular together with HoloLens can bring the amount of time needed to skill up in a particular area down by a massive amount

Image

Jack Lewis came to talk to us about Microsoft Teams, and the amazingly cool stuff that it’s now able to do. Benefits to people using it obviously include auto-creating Sharepoint sites in the background, but what was amazing to hear was that it’s possible to surface some Power Platform capabilities within Teams itself! Imagine having a Power App right there in the Teams channel.

Paul Henwood gave an amazing session on Power BI and AI capabilities. Demonstrating some of the functionality that Power BI can bring to the table (along with some of the noticeable limits when it comes to data sizes and processing), it was great to learn how AI can really feature. I’ve only played around with Power BI a little bit, and it’s definitely on the list of things that I’d like to take a further look into!

Image

Ana Demeny talked to us about integration architecture, and pointed out very clearly that the ‘right solution’ will always depend on the exact circumstances of the project. It was very clear that it’s vitally important to clearly understand all of the different components that could be used from the entire platform, and apply them in the right way for handling the business scenario, as well as licensing/cost considerations.

Pavlos Vasileiadis talked to us about the importance of having a Centre of Excellence for Power Platform objects (ie Power Apps). Unfortunately I was too engrossed in his session to take any pictures, as it was so excellent! Covering what’s needed to enable a CoE to run and function, as well as how it should be structured for success.

Image

Kaila Bloomfield led the final session, showing how wonderful everything would be if it were all pink! This talked about the capabilities of the different options of Power Platform versus Azure functionality, and that it’s not always a case of just being able to use Power Platform components without running into issues.

Continual development in small steps

One of my resolutions for 2020 is to go out and get books to read, for self improvement – all in the name of getting better at stuff!

One of the books that I’ve read is The Phoenix Project (billed as a novel about IT, DevOps, and Helping Your Business Win). It’s been a real eye opener as to how we may currently go about projects, and what would be a much better approach. The thinking behind it is to look at how to best use DevOps.

Incidentally Tricia Sinclair has recently started talking about DevOps, and is REALLY knowledgeable on the subject. I’ve had many conversations with her, and her breadth of information and understanding is second to none. I’d really recommend that you go check out her blog at https://triciasinclair.com/.

There are several ideas/concepts that I’ve taken out of it. One of the main ones (as far as I’m concerned) is about continual improvement, and doing this in small steps.

It’s not about massive changes in life. It’s about identifying something (small) that can be changed/modified, and implementing a new regime around it, or a new way of doing it. This way you can train yourself into a new habit, which will take you forward. Once it’s settled in, pick something else, and then work on that.

The effect will be gradual, but it’ll be noticeable in being better at whatever it is that you’re addressing. It doesn’t just stop there though – improvement in ONE area has shown a noticeable marked improvement in OTHER areas as well across the board.

This concept doesn’t just apply to personal habits – it also applies to technology. Gone are the days (for most people!) when the next updates and/or items were released just in new product versions, or major updates.

Yes it’s true that there are two major releases each year for Dynamics and PowerPlatform (Spring/Fall), but the Microsoft Development Teams don’t work on items and then queue them all up for the major release.

Instead there are items that are released as soon as they’re ready (take a look at https://thecrm.ninja/required-fields-on-forms-what-did-you-forget-to-fill-in/ for an example of this). This is why you’ll be using the system, and suddenly notice that you don’t have as many steps to carry out, or something looks better and works faster, etc.

Every member of the team should feel that their input is valued, and able to be used – this will reinforce the team status. In the Toyota Way (see https://en.wikipedia.org/wiki/The_Toyota_Way for more information) quality takes precedence. Anyone at all, even a ‘lowly’ factor worker, is empowered to stop a production line when they’ve identified a problem.

One of the items in the ‘Toyota Way’ is called the ‘Toyota Kata’. This is a skill-building process to shift our mindset and habits from a natural tendency to jump to conclusions, to a tendency to think and work more scientifically. It’s not difficult to pick up, and recommendations are to practise it for only 10 minutes a day!

Everyone knows that making small improvements everyday is good and everyone wants to do that. But the following questions arise:

  • What to improve?
  • How to improve?
  • How will I know am improving?

The Toyota Kata comprises of 4 steps:

  • Plan. Draw up a list of things to do over the next period of time (one or two weeks). Establish objectives and processes required to deliver the desired results.
  • Do. Carry out the planned items. Small changes are usually tested, and data is gathered to see how effective the change is.
  • Check. The data and results gathered from the Do phase are evaluated. Data is compared to the expected outcomes to see any similarities and differences. The testing process is also evaluated to see if there were any changes from the original test created during the planning phase.
  • Act. This is where a process is improved upon. Records from the “Do” and “Check” phases help identify issues with the process. These issues may include problems, opportunities for improvement, inefficiencies and other issues that result in outcomes that are not optimal. The root causes of such issues are investigated, found and eliminated by modifying the process (as part of Plan in the next cycle).

Work in the next cycle Do phase should not create recurrence of the identified issues – if it does, then the previous action was not effective.

The most obvious manifestation of the Toyota Kata is the two-week improvement cycle at Toyota itself, in which every work centre supervisor must improve something (anything!) every two weeks. Mike Rother (who wrote the book for Toyota Kata) says ‘The practice of kata is the act of practising a pattern so it becomes second nature. In its day to day management, Toyota teaches a way of working—a kata—that has helped make it so successful over the last six decades.”

My resolve is to do this – not only on my personal items, not only in my work environment, but also with the clients that I work with.

Let’s go out there and use this to make things better for everyone. Let’s challenge our clients and see how this can enable and empower them? Sounds crazy, right – but it could actually bring a massive benefit to project/s. Sit down with the business team/s, and get them to identify one point (that’s not too big) that can be (quickly) worked on (try using the 80/20 rule). Do the work on it, release it, and then get them to do it again. See the results and benefit from it!

Note: Don’t get them to build too much of a backlog around this, as release items may cause one or more of the backlog items to be non-relevant anymore!

You could even get managers to give a reward for coming up with ideas around this concept that have a major noticeable effect on productivity etc.

By bringing these concepts together, our clients (along with ourselves) can better understand what’s happening, bring better suggestions to the table in order to build better systems, and a much higher working co-efficient will evolve, empowering everyone!

What is a Functional Consultant?

One of the questions that I’m regularly asked by people is ‘what do I actually do’. Well, that’s a good question, after all. Usually I’ll say something like ‘I look out of windows, and think about things’. It’s more exciting to them than what I actually do!

When I was interviewing in the consultancy world, I came across all of these wonderful titles. Technical consultant, Functional consultant, etc. I had to try to understand what they meant, as I’d like to think I have skills across the entire project lifecycle (though I’m not a developer).

Image result for project life cycle

So, with that in mind, I thought it might be good to do a post on what exactly a Functional Consultant is (as that’s apparently what I am…)!

The general statement goes as follows: ‘A Functional Consultant is there to be the liaison between the client and the development team. They listen to the client, understand what they’re trying to do, and facilitates the development of the product’.

Hold on – I know what you’re about to ask. This sounds similar to a Business Analyst, right?

That’s true, to a point. But there are functional (if you’ll excuse the pun) difference.

A Functional Consultant has strong product knowledge, understands the product/s on a (very) technical level – how it works, why it works that way, any limitations, etc. This can be quite specialist at times, depending on the product at hand. They know how to take advantage of native system functionality, and how it can support the client and their needs. This then allows them to best advise the client on the right solution that they should be going with.

Image result for correct advice

They also have the understanding, ability and knowledge to take what the client needs, create ‘user stories’ from this. The aim of a user story is to provide the full package and information for a specific feature, that is able to be understood both by the client as well as the development team. This will therefore include high level detail, as well as go into detailed specification/s that are required for the specific feature to be able to be developed and work.

By doing this, they remove the need for continual back and forth between the client and development team during the development process.

Image result for back and forth

There is also more to the role of the Functional Consultant. Because of their experience and in-depth product knowledge, along with the ability to understand and analyse what the client actually needs (as opposed to what is currently in place), they are able to up-sell, cross-sell, and increase the opportunity that they’re bringing to the client. Of course they’re going to be bringing in revenue by doing this, but they’re also then able to provide further value to the client overall.

This will then lead to a better professional image, further opportunities, and potentially even to act as a favoured advisor to the client (which is of course an amazing place to be in!).

Image result for trusted advisor

So, how would YOU describe your role?

Creating a Flow to set record image

Due to my interest in motorbikes, and being a keen biker (as touched upon previously), obviously one of my PowerPlatform/D365 environments is based around motorbikes! I mean, why not….

My aim is to have a list of motorbikes, and be able to distinguish them by make, model, and type. This is going to form the basis of various things that I’m minded to test out in the CDS with PowerApps and Flow, which I’ll be blogging about on a semi-regular basis.

Having the list of data is obviously necessary. Then it occurred to me – I should be saving an image for each motorbike against its record.

So there’s a default field available in every entity for an image. This is the little icon that displays next to the record name at the top left of the form when you open it:

There’s only ONE image field available for each entity – which makes sense, after all.

Now, this can be manually added to the record by manually uploaded. That’s a pain though – surely there’s a BETTER way to do this…and what could be better than using Flow!

So I started to create this, and see how it would work. Thanks to Mike Carlton for his amazing support with this.

The aim is to have a URL to a picture that the system will then automatically go out to retrieve.

The first Flow that we created did this by getting the URL, saving the image to OneDrive, and then taking that image and uploading it into the CDS record (we’re not touching D365 at all here)

After tweaking one or two of the parameters (the finished Flow is shown above), it ran successfully! High fives all around.

Looking further at it, I wondered if it would be possible to remove the stage where the image file was saved to OneDrive. I played around with it further, and lo and behold – it was indeed possible!:

This is now working very nicely, and I’m quite happy with it. More to come!

Environments & Security

Following on from my post last week (https://thecrm.ninja/2019/07/05/environments-for-projects/) where I talked about the different environments for projects, I thought it would be good to talk about security relating to it as well.

Image result for security

What I’ll be discussing below is best practise for projects that relate to (external) clients.

However, there are usually some small differences when it’s an internal project for a company – security is can be slightly more relaxed (after all, the dev teams are usually the ones responsible for rolling the project out, providing on-going support, new features, etc). It’s also the case that internal developers (usually) won’t be prevented from seeing what the actual company data is.

The essential principle is as follows: Users should be restricted to only using environments that they are needing to access

This follows Best Practise for system security, as well as some common sense (it’s surprising how many times this can seem to be lacking!)

Access to the environment/s will depend on roles/s of the person, along with infrastructure that is in place. Users should not be granted access to any environment that they have no need to access at all .

DevIntegrationUATStagingTrainingProductionSupport
Team
Developers




Consultants


Clients


Note: There may be exceptional cases people are required to access the Production instance for a client. In such a circumstance, it is vital and absolutely necessary to have a complete audit trail to cover this, setting out the reason/s for it, along with all actions that are taken within the system. This should be ideally be via email, or any other system that may be present to allow a definitive time-stamped communication of request and sign-off

There is an extensive security model within Dynamics365 that can be used to enable and control this, if needed (eg for users to have access to one part of the system, but not another – this could be due to the system holding restricted access data, for example).

Have you come across any cases where this wasn’t followed, and caused issues? Feel free to comment – I’d love to hear about what happened!

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!