Monday, 2 July 2018

Terms and conditions for GDPR in Dynamics Portals

What is GDPR?

For a history of GDPR this article is a good starting point.

In 2016, the EU adopted the General Data Protection Regulation (GDPR), one of its greatest achievements in recent years. It replaces the 1995 Data Protection Directive which was adopted at a time when the internet was in its infancy.
The GDPR is now recognised as law across the EU. Member States have two years to ensure that it is fully implementable in their countries by May 2018.

GDPR is now in effect as of May 25, 2018.

What to do if using or considering Dynamics Portals as a platform with customers?

As a baby step towards GDPR in Dynamics Portals, there are new features that can be used to ensure customers as users of the portal to review terms and conditions.

Those that pay attention to the Microsoft Experience site will recognize this has most likely stemmed from this one.

These new features were made available in release 8.4 (as it says on the What's New docs.microsoft site) however if you dig into the release notes, you can't exactly pin which release it became available but I'm not complaining. I'm glad that there's functionality to provide terms and conditions 😃

Now keep in mind that there's still more ground work for your organisation to be GDPR compliant. It doesn't stop with enabling these features in Dynamics Portals. This is simply supporting the law.

Even though these features at first glance seem to appear to be applicable for brand new user of Dynamics Portals, the product team has designed it in a way where it can still be presented to existing users.

Check out my vlog for a brief overview.

Steps

Displaying your terms and conditions content

There is a Content Snippet record which will be blank by default. This Content Snippet record is Account/Signin/TermsAndConditionsCopy

Once you have your terms and conditions confirmed (and hopefully legally reviewed!) you can enter in the Content Snippet. There's HTML capability so you can include hyperlinks to additional web pages if needed to provide further information to the user.

Side note

There is four Content Snippets which can be updated in regards to what can be presented to the user upon reviewing and accepting the terms and conditions. The additional three Content Snippets is the following

Account/Signin/TermsAndConditionsAgreementText
This allows you to change the acceptance statement.

Account/Signin/TermsAndConditionsButtonText
This allows you to change the label displayed for the button that allows the user to continue to the site.

Account/Signin/Terms And Conditions Heading
If you want a different heading, this is your friend

Update a Site Setting

After entering your terms and conditions in the Content Snippet, you'll want to enable the functionality. As usual, my favourite gem in Dynamics Portals is Site Settings. The Site Setting to update is Authentication/Registration/TermsAgreementEnabled.

By default the value will be false. Update the value to true for the terms and conditions functionality to now display in your Dynamics Portals instance.

Hammer time - let's test

Refresh your Dynamics Portals and create a new account. After submitting your account registration details, voila! The terms and conditions will be displayed and you won't be able to continue unless accepted.

But wait! There's more

Enter Site Setting No. 2.

There is another Site Setting (surprised?) that can be updated. This Site Setting is Authentication/Registration/TermsPublicationDate. If you leave this blank then the user will continuously have to agree to the terms and conditions before signing in.

If you don't want the user to agree to the terms and conditions every time they sign in, you can enter a GMT value in this Site Setting.

Remember earlier how I said the product team designed it in a way where it can be presented to existing users? Users who have not not accepted the terms and conditions by the date and time, will be presented with the terms and conditions before proceeding.

I researched online what exactly is the string required for GMT values and came across this handy guideline. Sweet!

The next step was turning to Google and checking what time would it be in Melbourne if it was 8am GMT. This converts to 6pm here in Melbourne, Australia. At the time I was doing my vlog, it was past 6pm so this was perfect.

The value I entered in this Site Setting was Sun, 01 Jul 2018 08:00:00.


When I then logged back into Dynamics Portals using the same user account from earlier, the terms and conditions was no longer displayed. 


What is stored back in the Contact record?

This one I didn't cover in my vlog. In the Contact record there is a field called "Portal Terms Agreement Date" which will capture the date and time the Contact accepted the terms and conditions.

Summary

Terms and conditions can be displayed to users in Dynamics Portals to support the GDPR law. This was made available in preparation for the GDPR. This can all be done using configuration only. Steps are quite simple too.

Check out the other features available from the release.

Till next time, toodles.

Monday, 18 June 2018

Preventing users from seeing the profile form after signing into Dynamics Portals

Like Dynamics 365, when you provision Dynamics Portals there's features that already exist so you can hit the ground running. One of these features which I often get asked about when working on a project with clients is "Can you change the sign experience where users don't see the profile form after they sign in?"

The current behaviour is after a user successfully signs into Dynamics Portals they are presented with the profile form. This is valid when the registration is "open" where any member of the public can create a log in account for themselves.

When creating an account with Dynamics Portals the only details asked are
  • Email
  • Username
  • Password
  • Confirm Password
Therefore it make sense for user to see the Profile form immediately after signing in to provide further details on their First Name and Last Name etc.

However in the scenario where registration for Dynamics Portals is invite only which is valid for some clients, then they shouldn't be directed to the profile form. Why? When sending an invitation to an individual to Dynamics Portals it's usually against a Contact where you already have details such as the First Name and Last Name in Dynamics 365.

To find out how to prevent users in seeing the profile form after singing into Dynamics Portals checkout my vlog.

Steps

The site setting to update in Dynamics 365 for Dynamics Portals is "Authentication/Registration/ProfileRedirectEnabled"


By default this is set to true. 

Update this to false. 

When you next sign into Dynamics Portals, the user experience is that they will be directed to the Home page. Ta da!

Summary

You can prevent users in seeing the profile form after signing into Dynamics Portals by simply updating a Site Setting. Zero code needed.

Till next time.

Toodles.

Thursday, 7 June 2018

Grant application management Part 2: the external reviewer and applicant experience

In Part 1 I demonstrated how Dynamics 365 Universal Resource Scheduling can be used to book external reviewers for a submitted granted application.

In Part 2 I'm demonstrating the review life cycle of a grant application where
  • the external reviewer receives an email that they need to review a grant application
  • the external reviewer can comment on the grant application to request for information
  • the applicant can respond to the comment
  • when the external reviewer is ready to make a decision, they update the status of the grant application
  • the grant application is not deemed as approved until both the external reviewer and internal reviewer have approved the grant application
The above was what I recognized as the business process to be implemented and along the way I faced challenges but overcame them.

I used the following technologies and methods
  • Actions, workflows, custom workflow activity using fellow MVP Aiden Kaskela's Workflow Elements solution
  • Dynamics Portals - in particular the Notes feature
Reminder that I'm using configuration and not using additional development for the grant application management business solution.

For an in-depth walk through, watch my vlog.

Sending an email to the external reviewer

Continuing from Part 1, after the Bookable Resource is created another workflow is triggered which will send an email with a hyperlink to the external reviewer.

Usually a hyperlink is provided where it directs them to the view that displays the list of records. Given that the external reviewers have other responsibilities in their lives, I wanted to make the end user experience smooth where the external reviewer clicks on a hyperlink and it will automatically redirect them to the application in Dynamics Portals. This is where I came across the first challenge.

Challenge 1 - How to allow the external reviewer open the application record directly in Dynamics Portals

When you open/view a record in Dynamics Portal, you will see the web page URL and the GUID of the Dynamics 365 record.

I knew how to create the hyperlink by using the url path of the web page that loads the entity form but my problem was how to retrieve the GUID.

Enter MVP Aiden Kaskela (round of applause) #whoishe
He created Workflow Elements solution which had a number of cool custom workflow activities that can be used. I recommend you do a test drive yourself as you might find that there's a use case for one or multiple custom workflow activities.

The custom workflow activity step that I used is "Workflow - Get Metadata."


Using they hyperlink wizard in the workflow step that sends the email, I inserted the web page url that displays the entity form.

The next step I did was using the form assistant, I inserted the slug for the Get Metadata and referenced "Record ID" which grabs the GUID for the Application.


The external reviewer experience is that when they click on the hyperlink when they receive the email is that they will automatically be directed to the application record in Dynamics Portals.

If they are not signed in, the outcome will be the following


This is because there is a web role required to access the web page and since they are not signed in they see this. The message displayed can be updated using a Content Snippet to prompt the external reviewer to sign in.

If they are signed in, the outcome will be the following


Pretty nice.

Decision

I did find a way for the external reviewer to see the Sign In web page if they weren't signed in by inserting the Sign In URL path in the hyperlink. This wasn't a great solution as if the external reviewer was signed in they'd be directed to the Sign In page.

I weighed the pros and cons, decided the option to direct them to the review application web page was better.

Unless someone can suggest something better? (Hey Colin if you're reading this feel free to let me know).

Allowing the external reviewer and applicant to communicate to each other

The external reviewer can comment on the grant application to request for information. In turn the applicant can respond back to the external reviewer.

I wanted to reduce the two parties emailing each other. Why? For these reasons
  • Prevent the email addresses to be shared in case either become disgruntled. They really should get in touch with Sir Grants A Lot to raise an issue.
  • Emails get lost and if someone else from Sir Grants A Lot needs to step in, it's easily visible in the Grant Application under Notes.
  • Driving more foot traffic to the portal is another way of getting more interaction of your content with your users. As humans we have the tendency to look at other information available so if Sir Grants A Lot had other meaningful content for their external reviewers or applicants, they'd find it on the portal. Less likely to get a hit rate if emails were sent.
My weapon of choice was enabling the Notes feature for Dynamics Portals. I could have used Timeline Control (upcoming vlog on this) but decided to stick with Notes as no other type of activity is going to be exchanged.

Once I enabled it and tested it out, it worked fine.

I then had to configure a workflow that will notify the external reviewer or the applicant when a new note was created so that either party can respond. Sounds simple right?

OK so when a Note is created from the portal, the only way to know the author of the note is to take a look at the Title field. In the Title field the Contact fullname and GUID of the Contact is stored in the Title.


I thought I could do this type of conditional step in a workflow:


However I couldn't as when you go to the regarding entity which is Application in my case, it will only display string/single line of text fields as this is the field type of the Title field in the Note entity. External reviewer and applicant is lookup fields therefore it's not displayed.

I came across this obstacle. However ain't no mountain high enough for this sista! #word #youfeelme

Challenge 2 - How to do a conditional workflow that will check who was the author of the Note

Now I don't want to take full credit for this as I happened to be talking about it with my technical consultant and suggested to use Actions. Sweet, gave it a go and it worked like a charm.

I used an output argument for a string field that will assign the value of the regarding application external reviewer or applicant field.



I then used this action in my conditional workflow that will now call the action to check if the Title contains the assigned value of external reviewer or applicant.


Yes. Almost there.

Challenge 3 - How to allow the external reviewer or applicant open the application record directly in Dynamics Portals

Next obstacle to overcome was providing the same experience from step one where the hyperlink provided directly takes the external reviewer and applicant to the application. A nice consistent experience. Or you could call it OCD.

I wasn't able to use Aiden's custom workflow activity step (cue the violins) as it will retrieve the GUID of the Note. 

What I did do was create a custom field in the application that would store the GUID on create of an application. I have another workflow that will perform this and it does use Aiden's "Workflow - Get Metadata" custom workflow activity step.


I then used this custom field in my hyperlink to insert the GUID. This is the end result:

Decision time

When the external reviewer is ready to make a decision they update the status of the grant application by clicking on two "buttons."

Behind the scenes these are two on demand workflows configured as actions against the Dynamics Portals Entity Form.

I have one on demand workflow that will update the external reviewer status to "Approved" and another that will update the external reviewer status to "Declined."

When an external reviewer is ready to approve or decline, they simply click on the button and the external reviewer status reason will be updated immediately.

Grand finale - two approvals equals Approved

The grant application is not deemed as approved until both the external reviewer and internal reviewer have approved the grant application.

This was fairly simple to achieve by having another workflow update the Status Reason if both the internal reviewer and external reviewer status reason equals Approved.

Summary

You can create a business solution for grants application management using Dynamics Portals and Dynamics 365 Universal Resource Scheduling. This was the challenge I set myself and it turned out great. Even though I had faced obstacles along the way, I overcame them by using different methods.

Some people don't like Dynamics Portals but I honestly really like it. Once you learn Dynamics Portals it's not difficult to create something cool. And then when you team up with another complimenting service like Universal Resource Scheduling, it makes the business solution even more cooler. I'm still learning Universal Resource Scheduling and am so keen to see what else can be done with it for custom entities.

What I would like to experiment further is create a model driven app for the internal reviewer experience.

Till next time.

Toodles.

Wednesday, 30 May 2018

Grant Application Management Part 1: Universal Resource Scheduling

20:56 Posted by Elaiza Benitez , , ,
A few months ago I was wondering what could I present at Melbourne's Dynamics 365 Saturday which took place in May. I knew I wanted to do present something on Dynamics Portals as I'm quite fond of it.

One evening after the Melbourne Dynamics 365 User Group, Yawer Iqbal who is known in our Dynamics community here, suggested I present a solution around application management.

I did some research into grants application across five different organisations.
  • Three of the five provided an application form that could be downloaded from their public facing website and emailed to an email address. 
  • Two of the five appeared to have a portal for the grant application.
I decided to go ahead with grant application management and gave myself two challenges
  1. Can I use Universal Resource Scheduling for assigning grants to be reviewed by external reviewers? I wanted to see if it can be used as the term "Universal" suggests the feature can be used for anything.
  2. Can I do this with configuration, try without development?
Away I went and this is what I came up with as a proof of concept in terms of yes, you can use Dynamics 365 Universal Resource Scheduling and Dynamics Portals for a grant application management solution.

I presented this at Melbourne's Dynamics 365 Saturday. Thanks Dan for the pic!


The solution and interaction is as follows:
  • Application submits their grant application through Dynamics Portals.
  • End user from the organisation schedules an external reviewer. External reviewers is required in some organisations as there needs to be a review conducted by an expert in that area. External reviewers would receive an email regarding the application to be reviewed which is to be done through Dynamics Portals.
  • The external reviewer can ask for more information or for the applicant to verify information. In return, the applicant can respond back to the external reviewer. 
  • When the external reviewer makes a decision, they can approve or decline the application.
  • Until two approvals are made (one by the external reviewer and the other by the internal reviewer), the application will be updated to approved.
Since this is a bit to get through, this is Part 1 of grant application management where I briefly talk about the applicant process using Dynamics Portals and the main focus is on Universal Resource Scheduling in Dynamics 365.

Watch my vlog for a detailed explanation. This blog covers it lightly compared to the vlog.

Applicant process

For the applicant process, Dynamics Portals is what applicants use to submit and comment on their application using a combination of Web Page, Entity List, Web Form, Web Form Steps, Web Metadata, Web Roles, Entity Permissions, Web Page Access controls... the usual suspects. I have previous blogs and vlogs configuration methods for setting up an application-like process.

Scheduling an External Reviewer using Universal Resource Scheduling

The cool bit that comes into play is the Universal Resource Scheduling. From this point onwards, I will refer to Universal Resource Scheduling as "URS."

I did follow this two learning materials:
I chose URS because typically an organisation who provides grants will require a reviewer. Some require external reviewers who are experts in the space of what the grant application relates to.

Base records

To use URS there's some base data you need which are
  • Resources - I used Contacts to represent the external reviewers.
  • Work Hours of the resource - this defines the availability of the resource. In my case, the resources are humans where I entered the work hours of the external reviewers. Make sure you set the correct timezone too cause this tripped me up.
  • Resource role - do you want to differentiate your resources? I did by creating one that represented "External reviewers."
  • Resource characteristic - do you want to find resources based on skills? I did so I created characteristics that can be linked to the Industry of the submitted grant application.

Enable URS for custom entity

The next step I had to go through was enabling URS for my custom entity, applications. This is configured through the resource settings where you

1. Select the custom entity.


2. Select a relationship or create a new relationship.


3. Then set the metadata to be used by URS.


In my case, I opted for creating new relationships. This wasn't the best approach as what I found out later was that the relationship was created in the default solution. Live and learn! Next time I will create the relationship in a solution and so should you.

By enabling the custom entity for URS, there will now be a book button displayed on the Application entity form in the command bar. If you're old school, you call this ribbon ;)


After setting up the base data and configuring URS to be used for the custom entity, you can start using the schedule board to book your resources. It will look like this:


Booking resource requirement

To go one step further where you only want to see suggested resources for the application based on some criteria, this is where you can use a booking resource requirement.

What I did was create a workflow that is triggered when the status reason gets updated to Submitted, and the next workflow steps was configured to create a booking resource requirement and associate a resource characteristic to the booking resource requirement. I set up the From and To date fields in the booking resource requirement by using the date of when the application was submitted and adding 6 days to the submitted date to work out the To date value.

This way when the "book" button is clicked on and the schedule board is launched, suggested resources will be displayed rather than displaying all resources. This makes the D365 end user experience better when fulfilling the need of finding an external reviewer.



As you can see from the schedule board, there are resources displayed and it will tell you which resources are valid. You can also see the availability of the resources in the form of hours which is driven by the Work Hours that are defined for the resource. This is why you can see Bruce Sanchez being available Monday - Friday for 8 hours whereas Holden Caulfield is available through out the week 24/7.

The other cool thing that I had found was that the default work hour template also kicks in as during the time of me creating the above booking requirement, D365 recognized it was a Sunday and made the first day be the Monday.

Once a resource is booked, the bookable resource bookings will be created and associated to the application. You will also see that the start time and end time respects the work hours of the resource.


I also have another workflow that sets the External Reviewer lookup on the application when the Bookable Resource Bookings is created. I forgot to show this in my vlog.


What you need for URS

Currently to use URS, you must have a licence for Field Services or Project Service Automation. You're out of luck if you think you can get away with using Teams licencing.

Additional thoughts

Wonky hours

I did have some trouble if I was submitting the application during the working hours (eg 10am or 4pm) as it would throw my schedule board out of whack. Below is an example screenshot.
As I'm still learning URS, I couldn't figure it out so if you know why or something I need to try then please comment in my YouTube video.


Only considers one external reviewer

For the workflows that I set up for the booking resource requirement and to update the external reviewer lookup field, this worked as there was only one external reviewer required.
If there are multiple external reviewers required there would need to be custom fields or additional logic to handle creating more than one booking resource requirement to represent the multiple external reviewers and updating the external reviewer lookups back in the application.

Summary

Pretty cool right? Or am I nerd burger in thinking that it is cool that you can use URS for finding external reviewers available to review grant applications?

I put URS to the test by using it for scheduling external reviewers to review the grant application and it turned out great.

What's next

Part 2 is covering the external reviewer process including notifying the external reviewers and applicants when further information is required.

In part 2 I will show you a cool solution that has been built by a fellow MVP Aiden Kaskela.
Stay tuned and make sure you subscribe to my blog, my YouTube channel or Twitter to find out about Part 2.

Monday, 21 May 2018

Unboxing my Microsoft MVP award

22:41 Posted by Elaiza Benitez , , , ,
Earlier this month I was awarded by Microsoft as a MVP in Business Solutions. Around the world, there's 200+ Business Solutions MVPs and in Australia there is now 13 MVPs. Being the first female in the Australia/NZ region is an incredible feeling and it was truly a special moment for me when I found out I had been awarded.

*Edit: actually I'm the second, found out there was another female awarded a few years ago. I am currently the only awarded female*

I thought I'd share the moment I opened my Microsoft MVP gift package through a vlog. I hope this inspires others, especially those who have started their journey with Dynamics, PowerBI, PowerApps (list goes on) to share what they know by contributing to the community whether it be a podcast, blog or vlog.

Notable mentions

Andre Margono - one of the nicest and kindest people I've worked with to date. He nominated me last year after our first Dynamics 365 Saturday here in Australia.

Julie Yack, Leon Tribe and Neil Benson - for supporting my nomination.

Sophie Khun-Hammond - I learnt CRM4 from her back in 2009 and she was more than happy to show me the ropes. She is the foundation of my learning and really appreciated her guidance during that period of my career.

Lastly, Ben Hosking - in 2014 I reached out to Ben and said I always wanted to blog and do video blogs but had been afraid to do so. Through his encouragement from the other side of the world, I plucked up the courage to start blogging and vlogging. A little bit of encouragement goes a long way.

Ben, I still have that message if you're reading this. Thank you.


Thanks everyone. More vlogs coming.



 

Tuesday, 27 March 2018

Updating the redeem invitation URL in the Send Invitation workflow in Dynamics Portals

21:31 Posted by Elaiza Benitez , , , No comments
The Send Invitation workflow in Dynamics Portals is what is used to invite Contacts to access the portal by redeeming an invitation code. One of the workflow steps is a Create Email step where there is a URL that outlines the web address of the portal and an embedded invitation code from the Invitation record.

In case you're not familiar with the Dynamics Portals redeem invitation process it looks like this:
  • An Invitation record is created and associated to a Contact. 
  • When the Invitation record is created, an invitation code is automatically generated that is unique for the invitation of that Contact.
  • An email is sent to the Contact once a Dynamics 365 end user runs the Send Invitation workflow. 
  • In the email there is a redeem invitation URL that contains the page address for the Contact (user) to sign up with an invitation code and the invitation code is embedded.
  • When the Contact clicks on the URL they are directed to the Sign up with an invitation code web page.
Those who have tried to update the URL in the email step may have experienced some loss of time. I say this cause there's a trick to it and I get asked about it frequently where I currently work at Barhead Solutions.

In my vlog I go through what people think would work (note I have experienced these scenarios myself and so have colleagues) and I also show you the trick into successfully making the URL work. Watch my vlog for a detailed walk through.

Most common mistake

The most obvious path to take initially when doing this for the first time is copying the Dynamics Portals URL address into the hyperlink that's already provided in the Send Invitation workflow. This won't work.

Almost there

OK I am going to try my best to explain this in written format. This is one of those occasions where a video demonstrates the steps better compared to written instructions.

First insert your hyperlink using the hyperlink wizard (is it a wizard?). Make sure you use your Dynamics Portals address. Save and Close.

When the hyperlink is displayed in the email message, you want to set your mouse cursor after the =%f and select Encode Invitation Code in the form assistant. Make sure you remove any extra spaces after =%f and before the </value> statement of the hyperlink. It should look like the following below underlined in red once you've inserted the slug.

Bonus Tip

If you only apply the Encode Invitation Code, the user experience is that the Invitation Code field in the Sign up with an invitation code web page will be blank.

A user is not going to know what to insert in the field. Even if you did expose the invitation code in the email and explicitly stated "Hey user, copy and design this long piece of code below to access the portal," there's still the risk of the user entering it wrong or copying and pasting with spaces or missing characters. The user may try again and can still get it wrong. Not a happy user experience.

To have the Invitation Code automatically populate with the generated code from the Invitation record in Dynamics 365, there's extra string/text to enter in the hyperlink:

&invitation=

You want to insert this before the Encoded Invitation Code slug in the email.


By doing this, the user experience will be that they are directed to the Sign up with an invitation code web page and the invitation code is automatically updated without input from the user.

Side Note

You can choose to expose the raw URL with the invitation code in the email message as seen in the original URL provided in the Send Invitation workflow. I think it's better to show it as a hyperlink where more user friendly text is provided such as the standard "Click here to ...."

Sometimes seeing a long raw URL with funky characters can be a bit too much for a user. This is my personal opinion, you don't have to follow it.

Summary

Updating the redeem invitation URL in the Send Invitation workflow isn't so bad after you know how to do it. I've found this works for me 100% every time I apply the above steps.

If you have something else that works let me know by leaving a comment in my YouTube video. Otherwise if you did give it a go yourself and it works, leave me a comment too :)

Thanks for stopping by and toodles till next time.

Tuesday, 20 March 2018

Preventing users from seeing the Search feature in Dynamics Portals

22:04 Posted by Elaiza Benitez , , , No comments
In every Dynamics Portals project I've worked on customers will always ask "Can the search in portals find results in custom entities?" The search feature of Dynamics Portals unfortunately does not allow custom entities to be enabled (yet).

Refer to Colin Vermander's answer in this Dynamics Community Forum post.
Colin's suggestion is to vote for it on the Microsoft Ideas site: Ability to search custom entities in Portals. Please vote :) Thank you.

The next question I get asked is "Can we prevent users in seeing it then?"
Yes, this can be done and I can help with this. Check out my vlog below.

Steps

There is no code required to prevents users in seeing the search feature in Dynamics Portals. You don't need to fiddle with the .css or use JavaScript. It's a matter of clicks. 

Update a Site Setting record

In Dynamics 365, navigate to Site Settings and open the "Search/Enabled" record.

Update the Value field from "true" to "false." Save and close the Site Setting.


Browse to your Dynamics Portals and hit the refresh button. You'll now see that the search feature no longer appears.

Summary

By updating the Site Setting record, the search feature will no longer display in Dynamics Portals. It's done in a few clicks without the need for code.

Till next time.