Category Archives: Mobile

Capture contact images with Xrm.Device.captureImage

This article shows how to capture contact images using a Dynamics 365 mobile App based on the new client API in version 9. The same could be extended to capture images in any entity for other business scenarios.

The new Dynamics 365 API introduces several new namespaces, one of them is Xrm.Device. This namespace offers the method Xrm.Device.captureImage that we will use here to take the photo of our contact.

Firstly, we will create a Dynamics 365 App:

rtb_blog_apps menu

You can also get into the “My Apps” section using the following URL:

https://orgname.crm.dynamics.com/apps

Please notice we will use the new Unified Interface in the Client option:

rtb_blog_unifiedinterfaceapp_captureimage

This app will be available for the Dynamics 365 for phones. In my case, I’m testing it with an iPhone.

In the new app, we will edit the site map to include the contact entity:

rtb_blog_unifiedinterfaceapp_sitemap_contact

Now we will add a new button to the contact form ribbon. There are different ways to do this, in my case I have used the Ribbon Workbench editor within XrmToolbox:

rtb_blog_ribbon_form_new_photo_button

We will pass the record GUID and the entity type (e.g. contact) as the command parameters:

rtb_blog_ribbon_form_command parameters

The button will trigger the corresponding command (e.g. GetPhotoCommand) and this will execute the JavaScript function to capture the image (e.g. GetPhoto). This code should be placed in a WebResource.

rtb_blog_unifiedinterfaceapp_captureImage code

You can download this code from GitHub:

https://github.com/rtebar/Dynamics-Utils/blob/master/Dynamics.Utils/Dynamics.Utils.Web/CaptureImage.js

Once we have captured the image, we will update the current contact record. There is where we are using the method Xrm.Web.updateRecord. To display some alerts or potential error messages, we will use the method Xrm.Navigation.openAlertDialog and Xrm.Navigation.openErrorDialog. Finally, to refresh the form and show the new picture, we are refreshing the form with the method Xrm.Navigation.openForm. These methods are also part of the new client API with Dynamics 365 version 9.

In the actual mobile app, you should see something like these screens:

20180122_114627000_iOS

The new button should appear when you click on “…”:

20180122_114643000_iOS

Once you click the button, it should trigger the device camera:

20180122_114700000_iOS

If everything is ok, it will show us the alert dialog we were expecting:

20180122_114708000_iOS

Finally, the picture should appear in our contact form:

20180122_114809000_iOS

Notes: This article has been written using the platform version 9.0.0.3267

Advertisements

Resco Mobile Certificate Pinning validation

This article describes a new security feature now available in the Resco Mobile solution that allows certificates validation. This is an important consideration when you are dealing with mobile devices.

During the last months, we have been working with the Resco.net solution integrated with Dynamics 365 and it has been a great experience. It is definitely a very competitive alternative if you are considering a mobile solution for your business and CRM implementation.

ramontebar_blog_resco.net_web

This new Certificate Pinning validation feature has been introduced in the version 10.2.1. 

Basically it allows the mobile client to confirm if the service that is connecting to (e.g. Dynamics 365) is the expected one.

Normally, once you configure the Resco App with the corresponding Dynamics 365 URL, you would expect that everything would be ok and the connection would be safe based on the TLS protocol:

ramontebar_blog_TLS Certificate

However, in a hostile environment where the network may not be reliable, a malicious party could take advantage of it and intercept this connection, providing a fraudulent certificate:

ramontebar_blog_Malicious TLS Certificate

To avoid this risk, Resco has implemented a certificate pinning validation based on their current solution:

ramontebar_blog_Resco Certificate Pinning solution

Within Woodford, an administrator will now be able to configure the expected certificate(s) thumbprints:

ramontebar_blog_Resco Woodford Certificate settings

The Certificate Thumbprint can be found easily using, for example, Internet Explorer:

ramontebar_blog_Dynamics 365 Certificate root

ramontebar_blog_Dynamics 365 Certificate Thumbprint

In this example, the Mobile Resco App would have downloaded the corresponding Woodford Project with the Thumbprint “62 7C 0A 58 A2 64 76 77 1D 55 74 10 35 56 F8 79 54 33 F6 05”. When the app connects to the service, it compares that value with the one in the actual certificate. If they were the same, it would carry on; otherwise, the user would get the following error:

ramontebar_blog_Resco Mobile App Certificate error

You can find more details about the Certificate Pinning technique in the Open Web Application Security Project (OWASP)

**Images Credits: Icons made by Freepik and Smashicons from https://www.flaticon.com