Advertisements

Archive

Archive for the ‘CRM’ Category

D365 Customer Service – Virtual Agent – Get Started

Virtual Agent for Dynamics 365 Customer Service is a new cloud offering built on the Microsoft Bot Framework to create powerful bots using a guided, no-code graphical interface.

In this article, lets see how to get started with ‘Virtual Agent’ using a simple demo.

Prerequisite:

  • Subscribe to a Dynamics trail .

Steps to Subscribe ‘Virtual Agent'(Preview):

  • Go to ‘Virtual Agent’ Portal and click on ‘Try preview’

VA_1

  • Login with your O365 credentials.
  • Continue by clicking on ‘Create’ link.

VA_2.PNG

  • You will be redirected to ‘Virtual Agent’ application with a ‘Create a new bot’ popup
  • Provide the bot’s name and click ‘Create’

VA_3

  • Initial Bot set up would take 2-4 minutes and you would be notified post completion.

VA_4

  • Once the bot set up completes, you need to configure ‘Topics’ to start the bot conversations.

Create ‘Topics’:

  • ‘Topics’ allows to set context of bot conversation. Its a combination of 2
    • Trigger Phrases – Prompts the conversation with BOT.  Phrases like ‘Hi’, ‘Hello’, ‘Help’, ‘Issue’ are sample phrases.
    • Conversation – Represents exchanges between bot and user.
  • Lets create a simple ‘Topic’ by name ‘Welcome’ to wish the User by his name.
  • Click on ‘Go to Topics’ link or ‘Topics’ tab.

VA_10

  • From the ‘Topics’ tab, click on ‘New Topic’

VA_11

  • Add the ‘Trigger Phases’
    • I added ‘Hi’ and ‘Hello’ as my Phrases to initiate the conversation.

VA_12

  • Click ‘Edit’ under ‘Conversation’ section
  • Now you will be redirected to ‘Conversation’ flow page.
  • Add ‘Bot Says’ control, to communicate to User from BOT.
  • Add ‘User Responses’ control, to provide options to User to answer
    • For example, I am adding ‘Tampa’ and ‘Orlando’ as ‘User Responses’ to show the city names as options for User to pick.
  • You can also create a variable to capture User response.
    • I created 2 variables to capture User’s ‘Name’ and ‘City’.

VA_13

  • Save the Conversation

Test the BOT:

  • Once you configured ‘Topics’, you can test the BOT by clicking ‘Test your bot’ link on the footer.
  • Turn on ‘Tracing’ to check the flow.

VA_14

Deploy the BOT:

  • Click ‘Deploy’ to configure Channel.
  • For this demo, I am choosing, ‘Demo Website’ option, which hosts the bot to a sandbox demo website.
  • Demo Website:

VA_9

  • Provide the details and click on ‘Publish’. You will be redirected to the demo website.

VA_15

  • Type ‘Hello’ phrase to initiate BOT conversation.
  • BOT responds back asking ‘Please help with your Name’

VA_7

  • You can also see City options, which User can select instead of typing.
  • Finally, Bot responds back wishing User by capturing Name and City provided by the User.

VA_8.PNG

  • Custom Website
    • This is the second deployment option.
    • Allows you to host the BOT in an IFrame control to your web site.
    • Copy the HTML content and paste it in your web site.

VA_16

🙂

Advertisements
Categories: CRM, Dynamics 365 Tags: , ,

Dynamics Portals – Using ‘Emojis’ in Entity Form and Entity List

In this article, lets see how to use Emoji’s to capture the data in Portal’s Forms.

Emoji1

It’s very simple to achieve. All you need to do is to set the Dynamics ‘Option Set’ field’s ‘Label’ with ‘Emoji’.

Below is the ‘HOW’ part.

Create an ‘Option Set’ field with ‘Emojis’:

  • In Dynamics, create a new ‘Option Set’ Field with 2 options
  • In the Option’s ‘Label’ paste the Emoji.

Emoji2

  • Place this ‘Option Set’ field on the Dynamics Form and View which are being referred in your portal’s ‘Entity Form’ and ‘Entity List’.

Make ‘Options’ to render side by side in Portal:

  • By default, ‘Option Set’ renders as ‘Drop down’ control in Portal.
  • To show the ‘Options’ as Side by Side, add a new ‘Metadata’ to ‘Entity Form’.

Emoji7

Test the Emojis in Portal:

  • Navigate to Portal and open the ‘Employees’ view. Option Set value would renders as ‘Emoji’

Emoji5

  • Open the record and you should get ‘Emojis’ rendered side by side.

Emoji1

Note:

  • You can ‘Copy’ the Emoji from here . Search the Emoji as per your requirement and click ‘Copy’.

Emoji3

  • The rendering of Emojis will be same in ‘Dynamics Web Application’.

Emoji8

🙂 

 

 

 

[Code Snippet] Dynamics Portals/ADX – Set ‘Field Requirement’ using script

Below is the code snippet to set the requirement level (i.e., Required/Non-Required) of a field using script in portals. This logic handles all kind of field types including Check boxes.

Set Field As Required:

function SetFieldAsRequired(fieldName) {
if (typeof (Page_Validators) == ‘undefined’) return;
if ($(“#” + fieldName) != undefined && $(“#” + fieldName + “_label”) != undefined) {
$(“#” + fieldName).prop(‘required’, true);
$(“#” + fieldName).closest(“.control”).prev().addClass(“required”);

// Create new validator object
var Requiredvalidator = document.createElement(‘span’);
Requiredvalidator.style.display = “none”;
Requiredvalidator.id = fieldName + “Validator”;
Requiredvalidator.controltovalidate = fieldName;
Requiredvalidator.errormessage = “<a href=’#” + fieldName + “_label’>” + $(“#” + fieldName + “_label”).html() + ” is a required field.</a>”;
Requiredvalidator.initialvalue = “”;
Requiredvalidator.evaluationfunction = function () {
var fieldControl = $(“#” + fieldName);
if (fieldControl.is(“span”)) {
var value0 = $(“#” + fieldName + “_0”).prop(“checked”);
var value1 = $(“#” + fieldName + “_1”).prop(“checked”);
if (value0 == false && value1 == false) {
return false;
} else {
return true;
}
}
else {
var value = $(“#” + fieldName).val();
if (value == null || value == “”) {
return false;
} else {
return true;
}
}
};

// Add the new validator to the page validators array
Page_Validators.push(Requiredvalidator);
}
}

Set Field As Non Required:

function SetFieldAsNonRequired(fieldName) {
if (typeof (Page_Validators) == ‘undefined’) return;
if ($(“#” + fieldName) != undefined) {
$(“#” + fieldName).closest(“.control”).prev().removeClass(“required”);
$(“#” + fieldName).prop(‘required’, false);

for (i = 0; i < Page_Validators.length; i++) {
if (Page_Validators[i].id == fieldName + “Validator”) {
// Remove the current field’s ‘Required’ validator from ‘Page_Validators’ array
Page_Validators.splice(i);
}
}
}
}

How to use the functions:

  • Above functions can be called from ‘Custom JavaScript’ tab of Portal’s ‘Entity Form’.
  • Pass the Dynamics field’s schema name as the parameter to both functions.
    • In below example, ’emailaddress1′ is the field name which I want to set the Requirement level.

ADXJ_1

Refer the article for Portal script syntax’s and usage.

🙂

 

Dynamics Portals – Customize OOB ‘Entity List’ grid

I was working on a Portal requirement where I had to customize the ‘Entity List’ grid by adding ‘Check Box’ control in the first column and a ‘Submit’ button, which has the custom logic.

Below is how the OOB ‘Entity List’ grid looks like

ADX-G_7

OOB ‘Entity List’ grid

Now, lets see how to customize the OOB ‘Entity List’ grid by adding additional controls (i.e., Check box and Button).

Below are the list of portal components in the order, to achieve this requirement.

  • Create a new ‘Entity List’

ADX-G_2

  • Create a new ‘Web Template’
    • In the ‘Source’, we will have logic to loop through the ‘Entity List’ records (i.e.,Rows) and add ‘Check Box’ control in the 1st column.
    • In the below image, {% entitylist id:page.adx_entitylist.id %} refers the ‘Entity List’ loaded on the current page.

ADX-G_4

  • Create a new ‘Page Template’ and map the newly created ‘Web Template’

ADX-G_6

  • Create a “Web Page’ and map the ‘Entity List’ and ‘Page Template’

ADX-G_5

  • That’s it. Go to Portal, clear cache and hit the ‘Web Page’ URL. You should see grid with ‘Check Box’ as first column.
ADX-G_1

Customized Grid

Web Template’s ‘Source’ :

<body>

 

{% entitylist id:page.adx_entitylist.id %}
{% entityview id:params.view, search:params.search, order:params.order, page:params.page, pagesize:params.pagesize, metafilter:params.mf %}
<table id=”tblContacts” class=”table table-striped”>
<thead>
<tr class=”row”>
<th class=”col-sm-1″>
&nbsp;
</th>
{% for c in entityview.columns -%}
<th width=”{{ c.width }}” data-logicalname=”{{ c.logical_name }}”>
{{ c.name }}
</th>
{% endfor -%}
<th width=”1″></th>
</tr>
</thead>
<tbody>
{% assign i = 0 %}
{% for e in entityview.records %}
<tr class=”row”>
<td class=”col-sm-1″>
<input type=”checkbox” id=”chk{{i}}” onclick=”” />
</td>
{% for c in entityview.columns %}
{% assign attr = e[c.logical_name] %}
{% assign attr_type = c.attribute_type | downcase %}
<td data-logicalname=”{{ c.logical_name }}”>
{% if attr.is_entity_reference %}
{{ attr.name }}
{% elsif attr_type == ‘datetime’ %}
{% if attr %}
<time datetime=”{{ attr | date_to_iso8601 }}”>
{{ attr }}
</time>
{% endif %}
{% elsif attr_type == ‘picklist’ %}
{{ attr.label }}
{% else %}
{{ attr }}
{% endif %}
</td>
{% endfor %}
<tr>
{% assign i = i | plus:1 %}
{% endfor %}
</tbody>
</table>
{% endentityview %}
{% endentitylist %}
</div>
</div>

</div>
</body>

🙂

ADX Portals 7.x – ‘Page_Validators’ is undefined

Other day, while adding a custom validator using JScript on an Entity Form, I was getting ‘Page_Validators’ is undefined error, at below line of code.

// Add the custom validator to Web Page’s validators array
Page_Validators.push(spouseValidator);

Reason:

  • The dynamics CRM form, associated to the ADX Entity Form, does’t have any required field, hence ‘Page_Validators’ array is NULL as ADX did’t need to load any validators.

Fix:

  • ‘Page_Validators’ is a validator collection and we dont have control over this.
  • Below workaround worked for us:
    • Make one of the field as ‘Required’ by adding ‘Entity Form Metadata’. ADX instantiates ‘Page_Validators’ array, as there is Required field now.
    • You can make the field as Non-required in the JScript.

Metadata_1

Note:

  • This behavior is fixed in further versions of ADX and Dynamics Portals.

🙂

 

 

D365 – How to turn On/Off ‘Unified Interface Only mode’

April 7, 2019 1 comment

Today, I subscribed to my new D365 30 days trail and noticed the ‘Sales’ web Application opening up in ‘Unified Interface’ mode rather than in Classic web mode by default.

FUI_2.PNG

When noticed, the URL of the Dynamics landing page (My Apps) has a parameter forceUCI=1

FUI_1

It seems that Unified Interface ONLY mode has been implied on my new instance.

What is Unified Interface Only mode?

  • As per the documentation, Microsoft product team wants us to adopt to UCI (Unified Client Interface), to provide superior performance and usability.
  • All the new Dynamics 365 for Customer Engagement environments (instances) and Common Data Service environments, will be provisioned in Unified Interface Only mode.

Enable/Disable Unified Interface Only mode:

  • To Enable/Disable Unified Interface Only mode, navigate to ‘Settings’ tab by clicking on ‘Advanced Settings’ from the ribbon Gear button.

FUI_3

  • Open Settings -> Administration -> System Settings

FUI_4

  • Select the option under ‘Use the new Unified Interface only (recommended)’ section.

Accessing the legacy web client app:

  • The legacy web client app, also known as Dynamics 365 – custom, is hidden from end users when a new environment is provisioned.
  • It is always visible to those with System Administrator and System Customizer roles, and to other custom roles with similar privileges.
  • To enable the Legacy App to non-admin users,
    • Go to Settings > Administration > System Settings > General tab. Under Show legacy Dynamics 365 – custom app, select Yes for Show this app to all users, not just administrators.
    • In the Power Platform Admin center, go to Environments and select an environment. Go to Settings > Behavior > Interface settings and then turn on Show legacy app to everyone, not just admins.

FUI_5

  • Note:
    • When ‘Unified Interface Only mode’ is enabled, Dynamics 365 – custom opens in Unified Interface and not in the legacy web client.
    • Legacy app opens only If users only have access to the Dynamics 365 – custom app and no other model-driven apps.

🙂