Dynamics 365 for Customer Service

Dynamics 365 Saturday – Dublin 2018

The Dynamics 365 Saturday 2018 took place in Microsoft Dublin (One Microsoft Place) and was hosted by Janet Robb and her Team. Congratulations on Janet for a great work on organising such well-structured event.

Lots of cool sessions provided, as well as workshops for PowerApps and CRM for the ones who were interested.

 

Even though I’m not a Dynamics consultant, to me as a SharePoint/Office 365 Consultant, it was very cool to see how the same stack of products (Power platform + Azure) that we use on top of SharePoint/Office 365 is been adopted in the Dynamics Community as well. As mentioned on the keynote, for all D365 specialists it’s been a constant work to keep up to date with tons of new features been released (I can assure that for Office 365 as well), and an event like this helps to connect the community and to get a summarized overview of what’s been there in the market.

Special thanks to our Dynamics Guys who came from the UK and smashed in their presentations:

Chris Huntingford – Dynamics 365 for Marketing

Kylie Hill – My Favorite new D365 Features

It was a pleasure to meet those legends in person.

Also, the interaction from the community posting and sharing content and pictures on social media (Hashtag #365SatDub) was really nice, cool to see such engagement and nice pictures from everyone on Linkedin and Twitter.

Looking forward to the next #365SatDub!!

Can’t Associate Existing Contacts to an Account in the D365 UCI? – WHERE IS THE DAMN BUTTON??

Don’t feel like the emotional post? 😀 😀 FIND THE SOLUTION HERE!!

Recently I was doing some config. within Dynamics 365 for a customer that was keen on using the UCI (Unified Client Interface).  I’ve done a load of demo’s for this type of thing but never actually helped configure for a live implementation. To be deadly honest, I had to change my mindset a bit about how I designed things.

After a few hours of build i ended up setting up a little training solution that allowed users the ability to associate existing contacts to an account. A pretty straight forward N:N relationship on the account form showing the associated contacts that had been trained and the internal users that had actually done the training.

I was happy with the setup but when it came down to testing, something weird happened… There was no button available on the sub grid that allowed me to associate an existing record. The Add Existing User button was there, but no “Add Existing Contact” button 🙁 

I checked if it was working in the Web refresh… Lo and behold, i could work just fine! No issues with adding existing contacts to an account. 

I tested out different views and still no luck I even tried a 1:N relationship to Contact and it only allowed me to create a NEW contact rather than add an existing one. 

After a bit of searching… I found the one solution that worked! THANK YOU to the Joel THE TIP OF THE DAY team for this post! you saved me a TON of time. This could have been a rabbit hole. Also Scott, your Ribbon Workbench comes to the rescue again! Legends!

FIND THE SOLUTION HERE!!

Skills for the PowerApp developer

It seems to me that PowerApps will prove to be a game-changer by enabling businesses and organisations to build bespoke apps designed to meet very specific needs.

The curious thing about PowerApps is that the product is pretty well where it needs to be as of today but the major blocker for a global revolution is that there simply aren’t enough people out there with anything like the skills that they would need to be able to build robust business product.

So let’s assume that you can’t buy in PowerApps skills or maybe that you have some but need to grow some more.  What would you be looking for in an individual to identify them as a potential PowerApps developer?  In this article I’m going to outline some of the skills that I would be looking for when identifying candidates with the potential to be high performers.

Excel

It feels kind of strange to start with a product rather than personal skills but in this case the Excel formula structure and Excel cell construction is so closely related to that of PowerApps that is the number 1 skill.

The Excel and PowerApps teams work closely together so that any new formulas created are aligned to each other.  With this in mind this also opens the door to the many years of formulas created by individuals within excel that can theoretically be borrowed or referenced to enhance a PowerApp.

Maths

PowerApps is the product that is the most mathematical that I’ve ever seen.  Variables can be easily created that can be used in an algebraic fashion.  X and Y properties exist to govern the position of everything that you see on a screen.

Empathy

You need to be able to consider your products from the perspective of other users.  If people don’t like your product they won’t use it, and you should be aiming for them to love them.

Logic

To my mind there are 2 kinds of logic.  Firstly, the more mathematical/excel based ‘If X=1 to this otherwise do that’ and secondly there is the type of logic where you put yourself in the shoes of a user or administrator and be able to see whether or not a form (as in business world this is the most likely application) has a logical flow.

Design

Having an eye for design is a skill people have to a greater or lesser extent.  To be fair it doesn’t come naturally to me, but I do know that from making lots of products some designs work better than others and it is a skill that can be learned.

Initiative

PowerApps won’t go to you, you have to go to PowerApps.  If you create a blank app it will stay blank until you do something.  Additionally, many technical solutions may require techniques that feel like work-arounds mainly because the problems you have been facing haven’t been faced before, so looking them up on Google won’t necessarily yield any results.

Lifelong Learning

The product is ready, but is changing all the time.  Good sources for keeping up to date are twitter and the PowerApps blog, but even the latter tend to focus on ‘big’ updates whereas some of smaller adjustments can still be game changers.  Keep up with it.  I’ll be honest in saying that there are times when staying at the cutting edge can be difficult to manage versus traditional tools and skills that stay very similar over long periods of time.

Perseverance

Some problems will require high levels of determination to find the exact syntax you need to solve your problem and when those fail you may need to pull back stick your head up and work out if there ways around the problem or if the items is even needed (i.e. do you really need to collect the data at all or is it a nice to have)

Patience

Not necessarily my forte, but patience may be required of yourself as you may not have the skills that you need at your fingertips and similarly the same may be true of those around you.  You’ll also need a level of patience on the part of your sponsors or users.  I can almost guarantee that unless they are very familiar with digital form building you may produce a product to the exact specification requested but nevertheless you, and they, know that it’s not quite right and that adjustments, sometimes significant may be required.

Use the community

The PowerApps community at this stage is currently populate by a relatively small but passionate group of individuals building highly imaginative solutions designed to stretch the product.  Make use of these by joining https://powerusers.microsoft.com, follow people on twitter posting using the #powerapps or @PowerApps references.  By all means take a look at my youtube channel www.youtube.com/dataspinners and don’t forget to join https://dynamics365society.uk which contains a PowerApps bank that you can make use of once you sign up (for free).

Go on a course

Personally, I’m quite happy with an online course as typically these are completed over a longer period of time which for me is a better way of allowing the learning to sink in.  The best single free resource is https://courses.edx.org where DAT207x is a very useful starting point.  You can search up courses run in a classroom setting, but you will need to ensure that you invest time in utilitizing the product one you’ve completed it as otherwise you’ll lose your knowledge quite quickly.

Concluding remarks

This article was intended for hirers or individuals trying to make some sense as to the range skills needed for PowerApps excellence.  Hopefully, it isn’t too daunting.  Whatever you do, start small but build usable solutions.  This particular tool offers us astonishing scope for us to run our businesses in efficient ways and the more we can grow as a community the closer we will all get to a culture of efficiency the impact of which may be widespread, more operations, better scheduling less wastage all by putting the right information in front of the right people at the right time.

 

 

Dynamics 365 User Group – Birmingham – 17 May 2018

Recently I had the pleasure of presenting at the D365 Birmingham User Group Meeting. Thanks to everyone that attended. Was really fun and I learnt a whole lot. For those of you that haven’t been to one of the D365UG meetings, and if you are utilising Dynamics 365, I suggest that you join and get involved.

I had the pleasure of following Julian Sharp, an absolute legend in the D365 world and a brilliant trainer whose focus is “Helping organisations make the most of Dynamics 365 Customer Engagement through advice, optimisation and training”.

Julian gave a great presentation on the importance of Dynamics 365 Customer Engagement exams and as well as how to prepare for them and how to study. You can follow Julian on twitter using this handle: @Julianatvigence or check out his blog here for some really useful information.

My presentation was focused on why brand perception is so important within a business and the ability to generate more meaningful conversations with your customers utilising Dynamics 365 Customer Engagement.

This presentation was a “Spin Off” of the one I did at the D365 User Group Summit event. I only used Microsoft Social Engagement as the channel of interaction rather than use a load of channels. More information regarding this session can be found in my next post (Awaiting Hyperlink).

Just a quick summary of what the User Group is all about… it’s not a sales pitch for Dynamics, but more of a community lead initiative that enables the community to help and assist one another regarding all things Dynamics 365 related. There is a big mix of Dynamics 365 customers, Partners, ISVs and even Microsoft guests.

I’ve found it massively useful because the people part of the community just want to help and share info. It’s a super relaxed environment that promotes learning and development. To find out more and to even register, follow this link and get stuck in. There are User Group chapters popping up all over the place. Hope to see you there.

Follow the Dynamics 365 UK user Group on Twitter using the following handle: @CRMUGUK

PowerApps – Camera Integration Part 2

So we left the last article (Part 1 – if you have not read Part 1 please do before moving onto Part 2) with a glorious self app that involved putting a camera element into a new screen then configuring the ‘OnSelect’ command to capture the image from the camera and store it in a collection. Which looked a little something like this:

 

Please note I foolishly forgot to ‘Save’ my app (more a rush to start the weekend and grab a beer) so some of the control and component names may have changed but please just engage logic for this.

 

Displaying the collection to show the person using the app the image they have just captured:

Now the next stage is to allow the users of the application to quickly see the image they have just taken. The first step in this glorious journey is to add an image under the Camera component go to ‘Insert’>Media>Image and place it under the camera element – which should look something like this:

I think it’s important that I publicly apologise for the amount the readers of this article has to keep seeing my face, sorry ;-).

Now we need to instruct the image to show what is in the collection (remember we are using the ‘ClearCollect’ formula for storing the captured camera image in the collection which means only one will be stored at a time, so this is the main reason for choosing an ‘image’ component rather than a ‘gallery’). Select the image and go to the advance settings and set the ‘Image’ as: Camera1.Photo (previous article would be Camera3) as shown below:

Now the last piece that i’d like us to is to flip the image horizontally, to achieve this select the image and go to the ‘Design’ grouping area withing the advanced options and then select “more Options”:

Then scroll down to the ‘FlipHorizontal’ property and change it from ‘False’ to ‘True’ this will flip the image horizontally and marry up with the camera.

This finishes Part 2, Part 3 will focus on sending this image via Flow to an email address as an attachment as well as storing it on SharePoint!

If you like the articled then please do ‘Like’ it below and if you have any questions please use the questions functionality in the main menu of the site.

 

PowerApps – limitations, requirements & configuration values

Here is some more great reference material lifted from Microsoft regarding PowerApps requirements, limitations and configuration values.

 

Supported platforms for running apps using the PowerApps app

Minimum required Recommended
iOS 9.3 or later iOS 10 or later with at least 2GB of RAM
Android 5 or later Android 7 or later with at least 4GB of RAM
Windows 8.1 or later (PC only) Windows 10 Fall Creators Update with at least 8 GB of RAM)

 

Supported browsers for running apps

Browser Operating system
Google Chrome (latest version)
(recommended)
Windows 7 SP1, 8.1, and 10
Android 5 or later
iOS 8 or later
macOS
Microsoft Edge (latest version)
(recommended)
Windows 10
Microsoft Internet Explorer 11 (with Compatibility View off) Windows 7 SP1, 8.1, and 10
Mozilla Firefox (latest version) Windows 7 SP1, 8.1, and 10
Android 5 or later
iOS 8 or later
macOS
Apple Safari (latest version) iOS 8 or later
macOS

 

Supported browsers for PowerApps Studio

Browser Operating system
Google Chrome (latest version)
(recommended)
Windows 7 SP1, 8.1, and 10
macOS
Microsoft Edge (latest version)
(recommended)
Windows 10
Microsoft Internet Explorer 11 (with Compatibility View off) Windows 7 SP1, 8.1, and 10

 

Request limits

These limits apply to each single outgoing request:

Name Limit
Timeout 180 Seconds
Retry attempts 4

Note

The retry value may vary. For certain error conditions, it’s not necessary to retry.

 

IP addresses

Requests from PowerApps use IP addresses that depend on the region of the environment that the app is in. We don’t publish fully qualified domain names available for PowerApps scenarios.

Calls made from an API connected through an app (for example, the SQL API or the SharePoint API) come from the IP address specified later in this topic.

You should use these addresses if, for example, you must whitelist IP addresses for an Azure SQL database.

Region Outbound IP
Asia 52.163.91.227, 52.163.89.40, 52.163.89.65, 52.163.95.29, 13.75.89.9, 13.75.91.198, 13.75.92.202, 13.75.92.124
Australia 13.77.7.172, 13.70.191.49, 13.70.189.7, 13.70.187.251, 13.70.82.210, 13.73.203.158, 13.73.207.42, 13.73.205.35
Canada 52.233.30.222, 52.233.30.148, 52.233.30.199, 52.233.29.254, 52.232.130.205, 52.229.126.118, 52.229.126.28, 52.229.123.56
Europe 52.166.241.149, 52.166.244.232, 52.166.245.173, 52.166.243.169, 40.69.45.126, 40.69.45.11, 40.69.45.93, 40.69.42.254
India 52.172.54.172, 52.172.55.107, 52.172.55.84, 52.172.51.70, 52.172.158.185, 52.172.159.100, 52.172.158.2, 52.172.155.245
Japan 104.214.137.186, 104.214.139.29, 104.214.140.23, 104.214.138.174, 13.78.85.193, 13.78.84.73, 13.78.85.200, 13.78.86.229
United States 104.43.232.28, 104.43.232.242, 104.43.235.249, 104.43.234.211, 52.160.93.247, 52.160.91.66, 52.160.92.131, 52.160.95.100, 40.117.101.91, 40.117.98.246, 40.117.101.120, 40.117.100.191
United States (Early Access) 52.161.26.191, 52.161.27.42, 52.161.29.40, 52.161.26.33, 13.66.213.240, 13.66.214.51, 13.66.210.166, 13.66.213.29

 

Required services

This list identifies all services to which PowerApps Studio talks and their usages. Your network must not block these services.

Domain(s) Protocols Uses
management.azure.com https RP
msmanaged-na.azure-apim.net https Runtime of Connectors/Apis
login.microsoft.com
login.windows.net
login.microsoftonline.com
secure.aadcdn.microsoftonline-p.com
https ADAL
graph.microsoft.com
graph.windows.net
https Azure Graph – For getting user info (e.g. profile photo)
gallery.azure.com https Sample and Template apps
*.azure-apim.net https Api Hubs – Different sub-domains for each locale
*.powerapps.com https WebAuth + Portal
*.azureedge.net https WebAuth
*.blob.core.windows.net https Blob storage
vortex.data.microsoft.com https Telemetry

[Source: https://docs.microsoft.com/en-gb/powerapps/maker/canvas-apps/limits-and-config]

PowerApps Formula reference for PowerApps

Formula reference for PowerApps

When building PowerApps I have found the below from Microsoft incredibly really helpful, an index of awesomeness for all things related to PowerApp formulas. I have lifted this from the Microsoft page but kept all the hyper links to allow you to drill into each piece of functionality.

A

Abs – Absolute value of a number.

Acceleration – Reads the acceleration sensor in your device.

Acos – Returns the arccosine of a number, in radians.

Acot – Returns the arccotangent of a number, in radians.

AddColumns – Returns a table with columns added.

And – Boolean logic AND. Returns true if all arguments are true. You can also use the && operator.

App – Returns information about the currently running app, such as which screen is currently displayed.

Asin – Returns the arcsine of a number, in radians.

Atan – Returns the arctangent of a number, in radians.

Atan2 – Returns the arctangent based on an (x,y) coordinate, in radians.

Average – Calculates the average of a table expression or a set of arguments.

B

Back – Displays the previous screen.

Blank – Returns a blank value that can be used to insert a NULL value in a data source.

C

Calendar – Retrieves information about the calendar for the current locale.

Char – Translates a character code into a string.

Clear – Deletes all data from a collection.

ClearCollect – Deletes all data from a collection and then adds a set of records.

Clock – Retrieves information about the clock for the current locale.

Coalesce – Replaces blank values while leaving non-blank values unchanged.

Collect – Creates a collection or adds data to a data source.

Color – Sets a property to a built-in color value.

ColorFade – Fades a color value.

ColorValue – Translates a CSS color name or a hex code to a color value.

Compass – Returns your compass heading.

Concat – Concatenates strings in a data source.

Concatenate – Concatenates strings.

Connection – Returns information about your network connection.

Count – Counts table records that contain numbers.

Cos – Returns the cosine of an angle specified in radians.

Cot – Returns the cotangent of an angle specified in radians.

CountA – Counts table records that aren’t empty.

CountIf – Counts table records that satisfy a condition.

CountRows – Counts table records.

D

DataSourceInfo – Provides information about a data source.

Date – Returns a date/time value, based on YearMonth, and Day values.

DateAdd – Adds days, months, quarters, or years to a date/time value.

DateDiff – Subtracts two date values, and shows the result in days, months, quarters, or years.

DateTimeValue – Converts a date and time string to a date/time value.

DateValue – Converts a date-only string to a date/time value.

Day – Retrieves the day portion of a date/time value.

Defaults – Returns the default values for a data source.

Degrees – Converts radians to degrees.

Disable – Disables a signal, such as Location for reading the GPS.

Distinct – Summarizes records of a table, removing duplicates.

Download – Downloads a file from the web to the local device.

DropColumns – Returns a table with one or more columns removed.

E

EditForm – Resets a form control for editing of an item.

Enable – Enables a signal, such as Location for reading the GPS.

EndsWith – Checks whether a text string ends with another text string.

Errors – Provides error information for previous changes to a data source.

EncodeUrl – Encodes special characters using URL encoding.

Exit – Exits the currently running app.

Exp – Returns e raised to a power.

F

Filter – Returns a filtered table based on one or more criteria.

Find – Checks whether one string appears within another and returns the location.

First – Returns the first record of a table.

FirstN – Returns the first set of records (N records) of a table.

ForAll – Calculates values and performs actions for all records of a table.

G

GroupBy – Returns a table with records grouped together.

H

HashTags – Extracts the hashtags (#strings) from a string.

Hour – Returns the hour portion of a date/time value.

I

If – Returns one value if a condition is true and another value if not.

IfError – Detects errors and provides an alternative value or takes action.

IsBlank – Checks for a blank value.

IsEmpty – Checks for an empty table.

IsMatch – Checks a string against a pattern. Regular expressions can be used.

IsNumeric – Checks for a numeric value.

IsToday – Checks whether a date/time value is sometime today.

L

Language – Returns the language tag of the current user.

Last – Returns the last record of a table.

LastN – Returns the last set of records (N records) of a table.

Launch – Launches a web address or an app.

Left – Returns the left-most portion of a string.

Len – Returns the length of a string.

Ln – Returns the natural log.

LoadData – Loads a collection from PowerApps private storage.

Location – Returns your location as a map coordinate by using the Global Positioning System (GPS) and other information.

LookUp – Looks up a single record in a table based on one or more criteria.

Lower – Converts letters in a string of text to all lowercase.

M

Max – Maximum value of a table expression or a set of arguments.

Mid – Returns the middle portion of a string.

Min – Minimum value of a table expression or a set of arguments.

Minute – Retrieves the minute portion of a date/time value.

Mod – Returns the remainder after a dividend is divided by a divisor.

Month – Retrieves the month portion of a date/time value.

N

Navigate – Changes which screen is displayed.

NewForm – Resets a form control for creation of an item.

Not – Boolean logic NOT. Returns true if its argument is false, and returns false if its argument is true. You can also use the ! operator.

Now – Returns the current date/time value.

O

Or – Boolean logic OR. Returns true if any of its arguments are true. You can also use the || operator.

P

Param – Provides access to parameters passed to the app when the user opened it.

Parent – Provides access to a container control’s properties.

Patch – Modifies or creates a record in a data source, or merges records outside of a data source.

Pi – Returns the number π.

PlainText – Removes HTML and XML tags from a string.

Power – Returns a number raised to a power. You can also use the ^ operator.

Proper – Converts the first letter of each word in a string to uppercase, and converts the rest to lowercase.

R

Radians – Converts degrees to radians.

Rand – Returns a pseudo-random number.

Refresh – Refreshes the records of a data source.

Remove – Removes one or more specific records from a data source.

RemoveIf – Removes records from a data source based on a condition.

RenameColumns – Renames columns of a table.

Replace – Replaces part of a string with another string, by starting position of the string.

Reset – Resets an input control to its default value, discarding any user changes.

ResetForm – Resets a form control for editing of an existing item.

Revert – Reloads and clears errors for the records of a data source.

RGBA – Returns a color value for a set of red, green, blue, and alpha components.

Right – Returns the right-most portion of a string.

Round – Rounds to the closest number.

RoundDown – Rounds down to the largest previous number.

RoundUp – Rounds up to the smallest next number.

S

SaveData – Saves a collection to PowerApps private storage.

Search – Finds records in a table that contain a string in one of their columns.

Second – Retrieves the second portion of a date/time value.

Set – Sets the value of a global variable.

ShowColumns – Returns a table with only selected columns.

ShowError – Displays an error message to the user.

Shuffle – Randomly reorders the records of a table.

Sin – Returns the sine of an angle specified in radians.

Sort – Returns a sorted table based on a formula.

SortByColumns – Returns a sorted table based on one or more columns.

Split – Splits a text string into a table of substrings.

Sqrt – Returns the square root of a number.

StartsWith – Checks if a text string begins with another text string.

StdevP – Returns the standard deviation of its arguments.

Substitute – Replaces part of a string with another string, by matching strings.

SubmitForm – Saves the item in a form control to the data source.

Sum – Calculates the sum of a table expression or a set of arguments.

Switch – Matches with a set of values and then evaluates a corresponding formula.

T

Table – Creates a temporary table.

Tan – Returns the tangent of an angle specified in radians.

Text – Formats a number as a string for display.

ThisItem – When in a gallery or form, returns the data for the current item from the container.

Time – Returns a date/time value, based on HourMinute, and Second values.

TimeValue – Converts a time-only string to a date/time value.

TimeZoneOffset – Returns the difference between UTC and the user’s local time in minutes.

Today – Returns the current date/time value.

Trim – Removes extra spaces from the ends and interior of a string of text.

TrimEnds – Removes extra spaces from the ends of a string of text only.

U

Ungroup – Removes a grouping.

Update – Replaces a record in a data source.

UpdateContext – Sets the value of one or more context variables of the current screen.

UpdateIf – Modifies a set of records in a data source based on a condition.

Upper – Converts letters in a string of text to all uppercase.

User – Returns information about the current user.

V

Validate – Checks whether the value of a single column or a complete record is valid for a data source.

Value – Converts a string to a number.

VarP – Returns the variance of its arguments.

ViewForm – Resets a form control for viewing of an existing item.

W

Weekday – Retrieves the weekday portion of a date/time value.

Y

Year – Retrieves the year portion of a date/time value.

 

[Source: https://docs.microsoft.com/en-gb/powerapps/maker/canvas-apps/formula-reference]

HOUSING HACKATHON – Opinion Interview with Addi Ammar – Housing Rockstar!

Recently I had the privileged of having a chat to Addi Ammar, one of the Dynamics 365 housing specialists at Hitachi Solutions and also one of my mates. Addi is SUPER passionate about housing and has working in the industry for over 5 years. Her passion for the technology and for how it can be utilised to provide solutions in the housing industry is infectious. I really loved chatting.

Firstly, Thanks to Addi for taking the time out to chat to me. Was super fun and I learnt a whole lot. Recently Addi attended a housing hackathon hosted by Microsoft at the Thames Valley Park Offices on the 14th of March. Addi and her team were the proud winners J very cool and congratulations to all who put in so much hard work to make this event possible.

Normally we would do a recording, but I thought we would try this in a Q&A / dialogue type structure just to see how it works. We did laugh a lot: D so, here we go.

Chris: Welcome Addi, thanks for taking the time to chat. So, after attending the housing hackathon at Microsoft yesterday, what did you think? Was it fun to hang around a bunch of like-minded people and chat tech / problem solving?

Addi: I thought it was a really interesting and insightful day. There were a number of housing associations there as well as a number of vendors with different technologies and different offerings. So, it was really good to get everybody in a room together and, kind of, pass the ideas around. What was interesting, was that every HA had the same pain points… Even though this is something that we know, it’s really nice to get that sanity check and to hear everybody saying, Do you know what? Repairs, how do we manage them? How do we make it more intelligent? And, in fact, for the hackathon, all the teams picked repairs as their biggest pain point.

Chris: HAHAHA, no ways! That’s really interesting.

Addi: EVERYBODY! So it was really hard for the judges, because they were judging 5 repairs solutions.

Chris: Wow

Addi: So our table was predominantly Dynamic vendors. We had Advanced at the table, we had RSM, and obviously Hitachi. We had ANS there who weirdly, I used to work for. ANS offer a solution where they can migrate your current platform up into the cloud. We also had our housing association we were working with. What was cool is at our table, they had brought one of their tenants, so instead of bringing all IT staff and people from the business, they brought a tenant as well, which is probably what gave us the edge, because we were able to talk about technology and its impact on people at the other end. The GENUINE customer experience. I thought it was a fab day. We had loads of idea sharing.

Chris: That’s very cool! So did you and your team come up with a great solution to solve problems with repairs? Did you focus on anything in particular about repairs, or just the whole process?

Addi: We looked at the End-to-End journey and we started by saying that you should be able to raise a repair through any mechanism because it has to be what meets the needs of the tenant. So as well as having a mobile app, Artificial Intelligence, Chat bots that learn based on what’s been done before, being able to take a photograph of the repair and being able to recognise what that is. We also looked at things like Alexa and Google home because there are tenants that might have a smart phone but have no idea how to use it, whereas, Alexa is something you can physically speak to. We actually talked about tenants with dementia and Alexa might be easier for them to interact with than handling a mobile phone or interacting over a portal. Then we looked at flowing that information in and routing it out to the correct services. We also looked at the commercial element as well.

Chris: Oh Really?

Addi: Yeah I think it’s one of the things that set us apart from the other teams and one of the reasons we came first. We said well, we’re putting all this good stuff in, but HA’s firstly have maintenance staff that aren’t always busy, but they could also run like a trusted traders thing. SO, for tenants and non-tenants, they could access a service and say, you know what, my flat needs a piece of work doing, it needs painting or a toilet seat and you could pick a trusted trader that the housing association has either employed or verified. It’s an income stream, because you could charge for those repairs AND if you are letting trusted traders advertise through your housing association, you are generating income. SO, Yeah, they really liked that.

Chris: So you managed to bring a load of the bits and pieces together from a repair point of view. Do you think that there alignment between the HA’s and the partners? I suppose different ideas come from different places! Do you think the HA’s even knew some of this technology existed?

Addi: My impression was, there is a lot of buzzwords in the industry at the moment and for some housing associations, they have not even started their CRM journey. They have a load of disparate systems, they have all this data that is sitting in different systems, but they can’t use it. They have heard buzzwords in the industry like Alexa and Chat Bots but they don’t know where to begin in applying that because they have not got the fundamentals in place yet. I think that was really interesting in its–self. I think different people are at different stages of the journey, and that was evident in the room. So one of the housing associations that presented have gone through their digital, I’m not going to say “transformation”. HAHAAHA! I’m not going to say “Digital Transformation” because that implies that there is a destination, it’s more of a journey.

Chris: I love that!!!

Addi: You should ALWAYS be moving with the new technology and moving with the times. Striving to always be better. But the HA previously mentioned, they have done their CRM bit, they have done their standardising and rationalisation of data, systems and processes, so they are now able to look at how to make all of this more innovative. How do we get our tenants plugged into this digital shift? Some of the other HA’s haven’t started that journey, so everyone is at different points. There is A LOT of noise in the industry at the moment about chat bots, AI, Alexa bit I don’t think people realistically know how they can be applied.

Chris: You know something interesting; I was having a conversation about Alexa the other day about using Alexa in areas like Social Care. You have a scenario where an elderly person is in a smallish house, they have a fall and they can simply call out to Alexa to contact the HA or emergency services. Now that may be a little way in the future, but I thought that would be something that would make a real difference to someone’s life.

Addi: yep, that parallels really nicely with the tenant at our table was talking about one of the people she works with (She sits on a tenant panel and offers support to other tenants) has dementia and has got fixated on her laundry. This person will go out to the laundrette multiple times a day because she can’t remember if she has taken laundry there and left it. She will continuously go and check. And I said, well, if she had something like Alexa, and she could say in the morning “Alexa, I’m doing my laundry today”, then she could ask later. This stops her having to go out multiple times in a day… and we are talking about going out in bad weather as well. So, she would get a taxi or take a walk down to the laundrette because she has no-one to remind her.

Chris: Wow, that’s tough!

Addi: She doesn’t want to give up living in her home. She doesn’t want to go into a care home. Technology would enable her the ability to stay in her social housing home and not have to move into a care home…. And actually live better.

Chris: That’s very awesome. That really improves someone’s quality of life. I genuinely think that leveraging tech in that way makes a difference.

Chris. So in your opinion, realistically, how close do you think housing associations are getting to actually implementing this type of tech?

Addi: I think again, it comes down to the fact that everybody is at a different point in the journey. Based on what was said in the room, it seems everybody knows that the capability is there, actually delivering that is another story… Simply because, the HA’s themselves aren’t necessarily there yet. It has to come down to; getting the fundamentals in and working and then acknowledging that you are not building the fundamentals just for today, you are building for tomorrow as well.

Chris: So it’s very much about future proofing?

Addi: Exactly!

Chris: During the event, you must have interacted with a load of different types of people. What was the general consensus on the event?

Addi: Everyone really enjoyed it! The team that Rob Fletcher (Green Square Group) was on came up with something almost like a Pokémon go type app where when you are walking around your property it could actually pickup that there was a potential problem. It could see the damp and see the boiler lights flashing. After chatting away to people like Rob and the other vendors, everyone was getting really fired up. Yes, we were competing against other teams, but it was friendly competition. We were genuinely working together to hack these issues.

Chris: I’m actually super jealous that I couldn’t attend! So, do you think that these types of events are beneficial to the housing industry? Do you think there should be more of them?

Addi: YES! YES I do! I think HA’s want to come and I think they want to talk about what ever part of their journey they are at! They want to talk about where to go next. I think regardless of the size of the HA, there will be interest and enthusiasm. I’d really like to be part of running one with Hitachi actually! Everyone seemed to be really bought in. It wasn’t like we were trying to design something that was never going to happen. In the near future, a lot of this stuff is seriously possible. I think it would definitely be worth having more of these types of events.

Chris: Fantastic! I’ll be at the next one!

Chris: LAST QUESTION, I promise…. Do you think the Microsoft product stack aligns nicely with the requirements being made by HA’s?

Addi: The Microsoft stack is offering HA’s the ability to get all their data and processes into one place. They are sitting on so many disparate systems. A lot of the HA’s are locked into systems that they can’t easily configure or change themselves. If they want to add a few fields they need to pay someone a lot of money to do that. The Microsoft stack is flexible and Dynamic. It’s growing because of the investment behind it, which is really important. We also would love people to stay with Hitachi as their provider, but if they decided to move on, it’s not as if they are locked into something so bespoke they can never get away from it. I’ve worked at housing associations where people have been depressed because they are stuck with a system that is so bespoke and they can’t move away from the supplier. HA’s are ready for a solution that allows for them to be put on one platform and where they can control their data and processes and can still do all this innovation. Because it’s Microsoft, the innovation will just keep coming.

Chris: Oh for sure, the innovation will never stop! NEVER!!

Addi: Well, in the keynote speech at the hackathon, Microsoft stated that they are constantly updating their vision, which will then reflect on the customers.

Thank you so much to Addi for this awesome chat! As you can see through the information Addi has shared with us, Housing Associations are clearly ready to be taken on the digital journey with Microsoft and the focus on innovation is hugely important. I love the fact that the tenant on Addis team gave so much information and I think that plugging tenants into the digital journey and showing that some of the processes and technologies can make life A LOT easier creates massive value all round.

Future Proofing your Implementation and Configuration – Part 3 – The Configuration Question

In part 2 of this 3 post series I spoke about the Microsoft and how you are able to keep up to date with what is being released, so that you don’t end up building something into your Dynamics 365 implementation that is going to be added in a next release. In this post, I am going to talk about why it is important to carefully consider the use of custom functionality versus the use of out-the-box functionality when implementing and configuring Dynamics 365 Customer Engagement.

Why would we want to make our implementation of Dynamics 365 future proof? Well, there are loads of reasons.

  1. So that upgrades are smoother and less painful.
  2. So that customers can leverage other parts of the solution to support their business.
  3. So that Dynamics can be grown from both a functional and business point of view.

Essentially, Dynamics is used to solve more problems, which then increases user consumption and adoption.

So, I guess the million-dollar question is “Should we configure this or should we use what’s available out the box”? I have been working with Dynamics 365 CE (CRM) since version 3 and a lot of the time, in the earlier versions, we needed to configure stuff from scratch. There was a load of great functionality there already, but the previous versions were nowhere near where Dynamics 365 is today.

I remember spending hours trying to get past a problem without using loads and loads of code. This is partially because I am no developer. There was a huge reliance on form side scripting (pre-business rules) where setting things like field visibility or business relevancy required several lines of JavaScript, and this was incredibly Important because the experience of the user was at stake. The reason we tried our best not to code was because when the next release came out, there were always issues with certain bits of code not being supported and not working.

Now, for all my developer friends out there, I am not saying that there is anything wrong with coding at all. What I am saying is that the role of the developer has simply changed from when the previous versions of Dynamics were released. Before, functional consultants like myself were expected to code and write plugins, and if you couldn’t then you needed a developer with you. Now, this may not be the case. There is so much one can achieve with what is available out the box in Dynamics 365 that developers are focusing more on REALLY extending what Dynamics 365 can do.

So, back to my question….. Do we build it or do we use what is already available? Well, in my opinion, the answer is relatively simple. We use what is already available and extend through configuration, customisation and ISV solutions where the functionality we require is lacking. This approach really is in line with the Microsoft future proof strategy where the current functionality utilised within the Dynamics 365 CE framework is supported. Caveat: Yes, Microsoft do often deprecate functionality that is not widely utilised (Such as contracts).

Some time back I had a scenario where it was suggested to me that I did not utilise the standard Case entity and I was told that it would be better to recreate this functionality in a custom entity because it gave me more flexibility and freedom to do what I wanted. (Multiplexing rules aside) I didn’t agree with this. Why? Well, to recreate the functionality that existed in the standard case entity would have taken me more than 3 times the amount of time that it would have taken me to just do some basic config to support the main case entity that is already available in D365 CE. I would have to do all sorts of crazy stuff around routing rules, SLAS, Entitlements, Case Resolutions, Case Hierarchy and much more. It seemed that the right thing to do would be to supplement the case entity with some related metadata entities that enabled the user to lookup to various sub entities. This worked well because it also gave the users the power to maintain their own lookups.

The other thing that we thought of was that we couldn’t ad hundreds of fields to the case form. This would make maintenance and business rules a logistical nightmare. We ended up creating several sub entities for each case category and then just associated the sub entity to the case. This way the core case management functionality was utilised but not drowned with attributes. This also made upgrades MUCH easier.

Scenario 2 was a little different where I wanted to utilise the standard Contract & Contract lines entity in Dynamics 365 CE. I found that the functionality that I wanted couldn’t be achieved through utilising this entity set. One thing that really stood out was I couldn’t enable a contract to be associated to the Business Process Flow functionality, which was pretty important as far as the “Agreement – Contract” process was concerned. I actually ended up creating a custom set of entities and only ended up replicating a very small amount of the current contract functionality.

There are hundreds of examples of this type of thing that I could bring up at any one given point. One of the most talked about scenarios at the moment is “Will Custom Controls (CCF) replace web resources”. In many cases, yes! Check out this video for a bit more information.

Essentially the moral of the story here is that the requirement to configure the solution versus utilise what’s out the box is entirely scenario based. What I’ve found is that the more I utilise out the box functionality within Dynamics, the ore future proof it is. HOWEVER, this needs to be done in such a way that you don’t completely overuse the standard functionality to a point that it can’t be leveraged across the rest of the solution. The example in scenario 1 with the case management is a perfect example of using what’s out the box, but knowing how to supplement with config.

When implementing Dynamics you need to be a bit like the precogs from the movie Minority Report. You need to look into the future and try to understand how your customer may grow as well as how the solution may grow in order to be more future proof.

Future Proofing your Implementation and Configuration Part 2 – The Roadmap Question

In Part 1 of “Future Proofing your Implementation and Configuration – The Licensing Question” I covered off a couple things to take into account as far as licensing goes. The next question is around the Microsoft roadmap and a few things both customers and partners need to consider when planning for and implementing Dynamics 365 Customer Engagement.

Let me start with an example It’s 2011 and Partner X has developed a FANTASTIC business process management solution that enables businesses to create and manage sales processes, which in turn effectively promotes governance and sales performance within their sales team. After joining the CRM 2013 preview program, it was realised that out-of-the-box Business Process Flows did a similar job. The functionality created and implemented by partner X was still VERY relevant and provided a brilliant solution to their customers, but would the Business Process Flows replace this? The answer is yes and no.

We see similar scenarios in loads of implementations where partners and customers have implemented functionality utilising ISVs, as well as custom code, and this functionality is matched by something being released by Microsoft in a “Next Version / Release”. So, what do we do? We only know what we know right?

There are a load of resources out there that will give you a certain amount of visibility into future releases to make sure you are not “Double Dev’ing” or buying an ISV product that may be deemed unnecessary in the future…Caveat: If your customer needs the functionality now, it will be up to you to be open and suggest the right solution.

My first go-to resource is the Microsoft Dynamics 365 roadmap site. There is a LOAD of information about what is going to be released in the future releases of Dynamics 365 (the ‘In Development’ tab). It’s a really user friendly site that allows for filtering by application.

Back in the day (up to last year) D365 participants were able to register on the MS Connect website to participate in the D365 preview programmes. Connect has been RETIRED… Many of the services offered by Connect are moving to new tools and services. Check out this post for more information.

A lot of the Connect functionality seems to have moved off to the Dynamics 365 Ideas site where one can present ideas which can be voted on. This is a very smart method of keeping an eye out for functionality that may be expected in the roadmap site, based on input from the D365 community.

I would suggest joining the Dynamics 365 Insider programme and applying to be one of the “Insiders” who will join the previews for the selected applications and feedback based on your findings. The application can be filled out here.

A very reliable source of information can also be some of the direct Microsoft resources available to you. Don’t forget the DynamicsLearning Portal (DLP) and the ‘Blitz’ recordings which highlight upcoming functionality and capability. It’s often also worth your time to reach out to your Partner Development Manager or Partner Technology Strategist if you have these available.

The other method of finding out what may be in the pipeline is to watch the forums and groups on all of the social sites. The Dynamics 365 community is larger than you think and many of the members are active participants in sharing knowledge, enthusiasm, and war stories. Multiple blogs out there (Including this one) really do try to share the Dynamics 365 love. The MVP community also do a fantastic job of sharing what they can with all of us, which really helps.

Honestly, the frequency at which functionality is released is completely dependent on Microsoft, but according to a Mr. James Phillips this release cycle should be more consistent and reliable starting from 1 April 2018. It is best to be open and upfront with your customers about what is coming in the future, as you may want to stagger the delivery cycle to cater for this. If we know we have a delivery roadmap of 1 year with our customer and we know that functionality X is coming in 6 months, we may not want to build anything in the interim and then have to deprecate that functionality… OR you may… The most important thing is to be aware that the functionality will be released and that your customer may want the opportunity to select what is available out the box rather than a custom solution.

In summary, try your best to keep your ear to the ground regarding what is coming in the Microsoft Dynamics 365 roadmap and utilise the tools and services out there to educate yourselves. You may be saving yourself time and your customers’ money!

Part 3 of this article will focus on some of the functional elements in future proofing your implementation and configuration.

Future Proofing your Dynamics 365 implementation and Configuration (Part 1 – The licensing question)

Microsoft Dynamics 365 Customer Engagement is an incredibly versatile platform that can be configured with relative ease. This is both a good and bad thing because often solutions that are implemented descend into configuration anarchy. Yes, it sounds as bad and it is. Imagine a deployment with hundreds of entities, attributes and solutions that are irrelevant or are there for no particular reason. On the other hand, what about loads of old ISV solutions that aren’t being used anymore. As fans of Dynamics 365, I can guarantee that most of us have seen this.

So how does one future proof their implementation? I appreciate the fact that there will be loads of opinions on this matter and there are hundreds of things one could do to manage this process from a business and technical point of view.

One of the big questions during any implementation is whether to utilise what is available out the box or whether to create custom entities and attributes. This is generally based on the scenario and the customer’s requirements. Personally, I prefer to use what is already available as much as possible as there is a load of functionality that you may need to rebuild using workflows and plugins if you go the custom route. IN ADDITION, when Microsoft release updates / upgrades, I know the functionality in my solution will be upgraded correctly and is in line with Microsoft projected functional roadmap. That isn’t to say that Microsoft don’t deprecate functionality. They definitely do!

Now, here is the thing: The licensing model limits us or controls what you can and can’t do as far as the addition of custom entities relevant to the existing functionality. YOU MAY NOT REPLICATE THE FUNCTIONALITY OF STANDARD ENTITIES IN DYNAMICS 365 WITH CUSTOM ENTITIES. If the standard entity is replicated then the user must be licensed appropriately for that standard functionality. This is available in the Licensing and Pricing guide on page 17. THEREFORE, in short… you can create your own “Case” entity, sure… However, you will then need to purchase the Dynamics 365 for Customer Services license for users that will be accessing this entity. This is because it replicates the current and standard case management functionality.

This makes absolute sense. Information on the enterprise-licensing model can be found here in appendix B. This is one of the first documents I generally consult during solution design. Microsoft suggest that configurators utilise what’s available within the standard Dynamics 365 platform so that when core functionality is added to the platform on top of the standard entity set or functional area (marketing, Sales, Service, PSA & Field Service), customers have access to this without having to add additional configuration. As an example, when the entitlements functionality was added to the services module, it linked to the standard case entity and functionality as a standard. Companies that had built their own case functionality had to either move to the standard case management functionality or configure a link to the entitlements.

A second example that I have come across before, which required configuration and was considered future proof was where a customer had several case types, each of which required a large amount of data capture. Instead of adding hundreds of fields to the case form, the case was simply used as the header record and a set of custom entities was created for each of the categories. The core case functionality, such as routing and email-to-case was used and the configuration flexibility of the platform was used to apply a huge level of personalisation from an incident management point of view.

In summary, part of future proofing your configuration is to bear in mind what Microsoft offer as out the box functionality, as well as what the licensing model allows you to do and not to do. Often, this involves an honest and transparent conversation with your customer, which will enable you the ability to educate them in what, is required to implement a robust, performant solution that is as future proof as you can make it. In the next post I will be talking about the Dynamics 365 roadmap and how you can prepare your solution for what’s coming.