Digital sales presentations are part of every field service employee's day-to-day work. However, their central delivery and use on various devices still pose major challenges for many companies. With Sycor.eFolder, we have developed a solution that allows your mobile field service employees to access the latest sales documentation, also offline. Thanks to full integration with Microsoft Dynamics 365 for Customer Engagement, you always see automatically which presentations you have already shown to your CRM contacts. In the following blog article, Senior Solution Architect Dr. Torsten Harden describes the technical basis of Sycor.eFolder and discusses the functionality offered by the solution.
I use terminology commonly encountered in the life sciences industry in this article:
Especially in the life sciences industry, but also in many organizations from other industries, we consistently observe similar technical requirements for sales presentations (-> details). These can be outlined as follows:
These technical requirements can be met quickly and easily with modern platforms such as Microsoft Office 365. The following functions can significantly optimize the sales process for the optimal use of details in sales:
The goal of the Sycor.eFolder solution is to provide a module for Microsoft Dynamics 365 for Customer Engagement that centrally administers details and automatically records all presentation data. I describe the technical particulars of this solution in this blog article.
Field service employees should work with a CRM client on their device, rather than having to switch between various applications. This is assumed in the following user story:
The field service employee opens a person dataset. Here they see a list of all details presented in the past, with the title and date. Clicking the "Present" command opens a list of all details in the system, and another list with all details that have already been presented during this presentation. After clicking a detail, it is presented in full screen on the device. Which slides are displayed for how long is automatically recorded during the presentation. Optionally there may be interactive content on the slides (such as input fields) that is also recorded in a suitable form.
After the presentation ends, the name of the detail that was shown is included in the list of presented details. Now another detail can be presented if desired. Alternatively the user can leave the dialog, and the customer dataset is shown again.
When a previously presented detail is selected, the display duration of the individual slides and the feedback from interactive content is shown.
Naturally we first thought of Microsoft PowerPoint or PDF as the format. Unfortunately platform-specific restrictions apply here for the exchange of data between the presentation and the CRM. This applies in particular under iOS. We therefore chose HTML5 as the presentation format. Even though preparing HTML presentations demands greater expertise compared to PowerPoint or PDF, HTML offers quasi unlimited design possibilities. The presentation of HTML5 content can also be responsive, so that it is optimized on various devices (laptop, tablet, phone) and at different resolutions.
If possible, details should be available directly in the CRM client app, without having to open another app. As of today (April 2019), the offline capability of the Microsoft Dynamics 365 for Customer Engagement app is not adequate to develop such functionality based on it. We therefore developed the entire functionality based on Resco at this time. However, the system has been planned so that delivery using the Microsoft Dynamics 365 for Customer Engagement app/model-driven app is also possible in principle.
In this article, I describe the system architecture at a level of simplification that clearly shows the core considerations for the solution.
We decided to map the entire system on a total of four entities (Figure 1, Table 1).
According to the user story described above, the Show entity could be omitted. Yet we decided to put this framework around multiple presentations. This has the following advantages:
Figure 1: ER model of the Sycor.eFolder solution
Table 1: Entities used in Sycor.eFolder
The "Presentation Player" is the core of the solution. It is responsible for unpacking the zipped HTML files of a detail, presenting the contents on the device, and processing the events that occur during the presentation.
An iFrame containing the Presentation Player JavaScript code is integrated for this purpose in the presentation entity form. A second iFrame is created in this iFrame, and the detail is ultimately displayed in that (Figure 2). Only a small interface JavaScript code is integrated in the presentation, for communication between the presentation and player (also see the next section: 3.3 HTML Inhalt).
Due to the strict Same Origin Policy (SOP) in some browsers, there are only a few options for sending data from an iFrame to the higher-level page. postMessage/onmessage proved itself as the most flexible method for data transfer between the detail interface (HTML content) and the player.
The functions of the Presentation Player can therefore be reduced to three simple steps (Figure 3).
Figure 2: Schematic representation of the presentation form
Figure 3: Core functions of the Presentation Player
Automatically recording feedback and the display duration of individual slides in the CRM is only possible if the HTML pages being used are extended with essential functions. Our goal was to minimize these required extensions. This allows content authors to quickly prepare their content for display on the platform, and possible error sources are reduced to a minimum. Not least for this reason, we also decided not to specify the navigation between slides in our system, but to put this into the hands of the content author as well. This offers maximum flexibility for content developers.
In order to realize these minimal interventions, we defined the constraint that each slide has to be delivered as a separate HTML page.
Data capture and data exchange between the HTML content and player is realized using a small JavaScript library (detailplayer.js). This library is integrated on each HTML page of a detail (also see Figure 2). When a page is loaded, the current time is automatically stored. When feedback is captured on a slide, the
ResponseAdd(Trigger:string, Value:string, Type?:string)
method can be called on the page at any time. The values transferred by this are initially stored in the working memory. When the event
window.onunload()
occurs, a dataset with the slide title, start time, end time, and where applicable all feedback received is automatically sent to the player for further processing per postMessage().
In other words, this means a content developer merely has to prepare their presentation as follows (also see Figure 2):
Nothing else needs to be observed by the content author in regards to the interface. Naturally the author has to ensure that the pages are also presented correctly on all desired target platforms. Since different browsers (Chrome, Safari, Internet Explorer) are also used on different platforms, some commands have to be optimized accordingly.
Limitations due to the Resco system framework are not expected, but cannot be entirely excluded. So far we have successfully integrated Angular, jQuery, jQuery Mobile, React, Bootstrap, and other libraries in our presentations.
Sales presentations can be centrally delivered for field service with Sycor.eFolder. The detail can be presented offline to a customer on a device. During the presentation, the display duration of individual slides and customer feedback are recorded automatically. These data are easy to present graphically and further analyze using out-of-the box means (dashboards, charts, Microsoft Power BI). Since the design of the feedback function is very open, it can be used to realize various scenarios. Here are just some examples:
Abhängig von den Anforderungen unserer Kunden ist die Erweiterung der Lösung Sycor.eFolder um weitere Funktionen bereits in Planung.
Author: Dr. Torsten Harden, Senior Solution Architect