[SOLVED] Navigating URL from Ribbon’s custom button in Dynamics for Phones app

So, with all the buzz about the transition to the Unified Interface, I came across this issue where Url Command Action doesn’t work on the Dynamics for Phones app for a custom button

urlAction

Scenario

I’m Url Command Action in the Ribbon Workbench’s custom button to navigate to a PDF User Guide stored on the SharePoint for users to simply click and navigate.

classicUI

unifiedUI

Now, this works fine on the classic Web UI and Unified Interface Web Application.
targetPDF

 

But doesn’t work on the Dynamics for Phones app! Nothing happens when you click on it.

guideButtononPhone

Workaround/Resolution

So, the workaround is, using JavaScript method to navigate the URL as shown below

  1. Write a JS file which uses Xrm.Navigation.openUrl(<link>); instead.
  2. Remove the URL Action Command and use JavaScript Command instead in the Ribbon Workbench.
    useJSAction
    jsFuntion
  3. Sample Code here
    oAccountFormCustomization = {
    guideButton: function()
    {
    Xrm.Navigation.openUrl(“https://<yourlink/>&#8221;);
    }
    };
  4. And this should work on your phone app when you click the button there and it should successfully navigate to the said URL (my SharePoint Document in this case)
    docAppears

 

Related

Here are some of my other posts that are related to custom ribbon button –

D365 Ribbon Button shortcut to open a Document in SharePoint Online

Fix Ribbon icons on the Unified Interface in D365 CE

Hope that works!!

 

Date and Time field’s Time-Zone behavior in D365

In most cases, customizers/administrators leave the Date & Time field as Local without paying much attention to detail.

types

With involvement of time, there are 2 behaviors while creating the field (or changing them, but there’s a catch)

You can change from Local to Time-Zone Independent any time, but can’t change from Time-Zone Independent to User Local once saved this way.
cantChangeBehavior

User Local

The Date & Time displayed in this field will be converted to the time-zone you are situated in.

localTime

Let’s say, the Date & Time is stored in UTC behind the scenes was 25th June 2019 6.30 PM, so whatever was stored, it will be converted to your System User’s local time according to the Settings. See below –

myTimeZone.png

Time-Zone Independent

This type of Date & Time of field, the time is stored in UTC, regardless of where you are located in the world.

timeZoneInd

If it is 6.30 PM on 25th June in UTC, it will be 12 AM in India on 26th June

 

It’s pretty basic, but needs to be done carefully!

Hope this helps.

Execute an Action from a Business Process Flow

One of the easiest and useful feature of a Business Process Flow is being able to Implement and Action right from a Business Process Flow just with a click of a button.

Here’s how you do it.

Let’s say you have an Action that you want to trigger that the Account was Approved for some sort and you want to alert the Stakeholders. You can have this functionality in your Action and call the Action from the BPF itself.

Action

  1. Let’s say your Action has some logic as below which you want to execute when you trigger Action on BPF
    actionLogic
  2. Make sure your Action is marked as below for it to be enabled for adding in a BPF
    enableForBPF

Once this is set, let’s move to the BPF part.

Business Process Flow

  1. In a BPF, since you have enabled your Action to be added to BPF, you’ll be able to add it as below.
    addActionStep
  2. In the Properties, look for your Action Process and select it and click Apply.
    actionFound
  3. Make sure you’ve clicked on Apply.
    apply

Now, you’re all set. Let’s see how it works.

Execution

Now, this is how you’ll see your Action on the BPF on the record,

executeButton

When you click on Execute, it will mention (if you don’t have any Input parameters) that there are not parameters and ask for Confirmation
noInputParameters

Once you confirm, this is how it will show while executing –
executing

 

If there’s any failure, it will show as below
executionFailure

 

And success like this
success

Simply click and the Action will execute!

Hope this helps!!

Prevent Contact creation in D365 on tracking Emails from new recipients

Typically, when you track Email/Appoint records from Outlook, unknown senders are created as Contacts in Dynamics 365?

A new Email from unknown recipient.

newEmail

And if you track this Email using D365 App For Outlook, a new Contact is created in D365 without you being notified about it.
contactCreated

And the Email from the Saved Contact in D365 appears like this
emailFromSavedContact

Now, this could be unwanted. And there’s a simple way to turn this off!

Disable Contact/Lead creation

This setting is controlled from your Personal Settings. Under Email tab, look for the option that let’s you create Contacts/Leads for tracked Unknown Recipients.

personalSetting

Once you un-check the same, when you track the Email/Appointment with unknown recipients, new Contacts will not be created.
And you could identify this by simply going into Emails and seeing that the Email address appears rather than a Contact.

EmailFromUnsaved

Hope this helps.

Summarizing D365 App For Outlook Setup in 3 steps with Exchange Online mailbox

Remember, there are a lot of considerations for security and synchronization. The above setup is recommended for all first time Outlook and Dynamics users. While all this, I would like to summarize the steps for all you first time users!

Here’s a crash course guide to setting up D365 App For Outlook for new on-boarders.

Part 1 – Outlook License

  1. So, you can have any of these licenses which has Outlook service included. Be it Enterprise E3, E5 etc. Basically, you need an Exchange Online mailbox. Also make sure the license is assigned to the user and Mailbox is created as below.
    license
    licenseAssign.png

Part 2 – Enable Server Side Synchronization

Once Mailbox is setup for the User. Now, let’s go the D365 For enabling Server Side Synchronization on the user’s mailbox. Remember, you must be a Global Administrator to Approve the Mailboxes.

  1. Go to Settings >Email Configuration > Mailboxes. Open Mailbox you want to enable SSS for.
    selectMaibox
  2. Then, click on Approve.
    approveMailbox
    confirmApprove
  3. Then, click Test & Enable Mailbox from the ribbon.
    test&amp;Enable
  4. This is important, if you have multiple instances like Production, Sandboxes etc. Choose if you want to only enable it for the current organization and not else where, select the checkbox.
    enableForCurrentOrg
  5. The Mailbox in D365 will complete testing in a few minutes and you should see the status of the same  as Success if everything went well.
    allSuccess

Part 3- Enable D365 App For Outlook

Now, once Server Side Synchronization is enabled, you’ll need to go to Dynamics 365 App For Outlook in Settings.
D365FOSitemap

If you don’t see the above in your SiteMap, refer this post for the details and the shortcut- https://d365demystified.com/2017/11/14/missing-dynamics-365-app-for-outlook-from-settings-in-dynamics-365-v8-2/

Now, in my case, I had selected to enable this feature for anyone who has already been enabled with Server Side Sync to also be enabled for D365 App For Outlook.

Hence, when I opened the App, I could already see my being added to the App!!

alreadyAdded

Else, you’ll need to add other users explicitly by selecting them and clicking on Add App To Outlook button on the view shown above.

READY!

You’ll see the Dynamics icon that denotes the D365 App For Outlook, you can click on it and the D365 App For Outlook is ready to be used for that selected item.
iconReady

and the app will show up in the pane next to it.

readyApp

For detailed information on Support Matrix of the D365 App For Outlook, refer this – https://docs.microsoft.com/en-us/dynamics365/customer-engagement/outlook-app/deploy-dynamics-365-app-for-outlook

Here is also a YouTube video summarizing the same: 

Hope this summarizes the setup well!

Sending Image from Canvas PowerApps to SharePoint Document Library using Flows

One of the most common requirements is to upload images to SharePoint using PowerApps. From my learning from various sources, I’ll try to “demystify” my explanation to send/upload an image to SharePoint Document Library using Flows on my Canvas PowerApp.

Ingredients

Assuming you have the following things already  in place in PowerApps as well as in SharePoint

  1. PowerApps’ Camera/Image control and a Submit button. In my case, the image above is a camera so that I capture the image I want and the image below is the Image control to show me what I clicked.
    powerApp
  2. A SharePoint Document Library to record, say, Incidents.
    spDocLibrary
  3. We will get to the Submit button on the PowerApp once we create our Flow.

Flow

Let’s create a Flow to pick the Image from your PowerApp, convert it to binary and send it to the SharePoint Document Folder location called Incidents.

  1. Since we want to trigger the Flow from the PowerApps itself, we will select the trigger of the Flow as ‘From PowerApps’ and hit Create
    createFlow
  2. Once your Flow is ready, leave the first step of PowerApps because that’s the trigger. Add Step to create a SharePoint file and fill in the details of the Document Library you have created.
    createSPFile
  3. Fill in the FileContent as above. You’ll need this to be converted in the intermediate step after this.
  4. Now, you’ll need to add an additional step in between PowerApps and the Create SP File step as below. It will be a Compose action.
    addAction
  5. In Compose action, under Expression, select dataUriToBinary expression and make sure you open the bracket as well.
    dataUriToBinary
    toolTipHidden
  6. Now, go back to the Dynamic Content section and select the CreateFile_FileContent to complete the formula.
    fileContentAvailable
    completedFormula
  7. Click OK on the screenshot above and the formula should be set.
  8. Now, replace the File Content section to take in the Output of the Compose step.
    outputRecorded
  9. Save your Flow and your complete Flow should look like this.
    CompleteFlow
  10. I’m naming my Flow as ‘IncidentFlow’ so that I can identify it.
    incidentFlow

Adding the Flow to Submit button

Going back to the PowerApp, let’s Run this Flow on the selection of the Submit button and pass the image.

  1. Now, select the Submit button, and on the Formula bar, add the Flow you created, I named it IncidentRun. Select the same so that the Formula comes as IncidentRun.Run( for you to pass on the image.
    Now, pass the latest image on the collection i.e. the same image which is being displayed in the image control below.

    runFlowFormula

 

Running the App

I just ran the app on the desktop itself, you could do it from your phone too!
So I clicked on the Camera when I was ready, the image appeared in the image control and I that was what I wanted to upload. So I clicked on Submit button.
hittingSubmit

The flow was successful
FlowSuccessful

And my image was in SharePoint too!
imageUploaded

I know it is a lengthy post but I tried to summarize as much as possible. Make sure you have a way to uniquely name each file or else, the same file will be overridden.

Thank you!