Advertisements

Archive

Posts Tagged ‘Dynamics Portal’

[Step By Step] Dynamics Portals – SharePoint Integration

November 13, 2018 1 comment

In this article I am going to walk you through the step by step process to integrate Dynamics Portal with SharePoint.

Why we need to integrate Portal with SharePoint?

  • To answer the question, lets take a scenario, A company has an Employee Health portal where employees upload their Medical Bills and diagnostic reports to reimburse the money incurred due to hospitalization. On the other side Companies admin team access the documents either from D365 application or SharePoint portal to validate and release the money.
  • If the documents get uploaded to SharePoint through the Portal, with the robust SharePoint document management features, the documents can be edited, versioned and accessed anywhere online just from a browser.

Now lets see the steps to integrate portals with SharePoint.

Pre-requisites:

  • Dynamics 365 subscription (Get 30 days trail)
  • SharePoint Site
  • Dynamics Portal

Configure SharePoint Site:

  • Once you have your Dynamics 365 subscription, login to your Office 365
  • Click on ‘SharePoint’ link to connect to SharePoint Portal

SP_14

  • Next step is to create a new ‘Site’

SP_15

  • Click on ‘Create Site’ and fill the details to complete Site creation.
  • Copy the URL which you would need in next steps.
    • I created a new site with name ‘D365’

SP_16

Configure SharePoint Site in D365 Application:

After creation of SharePoint Site in previous section, now we need to add this details in D365

  • Open your Dynamics Application
  • Go to Settings -> Document Management Settings
  • In the ‘Document Management Settings’ window, paste the SharePoint Site URL copied in previous section in ‘SharePoint Site:‘ text box.

SP_1

  • In the ‘Select entities’ grid, select the entities you would like to add Documents from your portal.
    • I selected ‘Case’ entity as I am using in this article
  • Click ‘Next’ and ‘Select folder structure’

SP_2

  • Click ‘Next’ to complete the set up.

SP_Error_2

SP_17

  • Click on ‘Set up SharePoint integration’ -> Enable SharePoint integration

SP_3

  • Provide credentials and complete the set up

SP_11

Configure ‘Case’ entity portal form and Entity Permissions:

To be able to upload documents from Portal, we need to add a sub-grid on Case form.

  • Connect to Dynamics 365 Application
  • Open Settings -> Customizations -> Customize the System
  • Select ‘Case’ Entity and make sure ‘Document Management’ is checked.

SP_4

  • Open ‘Case -> Forms -> Web-Edit Case‘ form
    • Note: As I am going to upload documents from existing Case in Portal, I chosen ‘Web-Edit Case’ form. Chose your from as per the requirement.

SP_5

  • Add a new sub-grid with below details.
    • Entity – Document Locations

SP_6

  • Save and Publish.

Lets grant ‘Entity Permissions’ to ‘Sharepointdocumentlocation’ entity whoever having access to ‘Case’ entity.

  • Navigate ‘Portals -> Entity Permissions’
  • As I am planning to upload documents from ‘Case’ entity, I am selecting ‘Customer Service – Cases where contact is customer‘ entity permission.

SP_7

  • Add a new ‘Child Entity Permission’ on ‘Sharepointdocumentlocation’ entity and grant below privileges.

SP_9

  • Save and Close.

How to upload the documents from Portal:

Once you made all the configurations, we are all set to upload the documents.

  • Connect to your portal
  • Create a new Case or open an existing Case

SP_12

  • Navigate to the ‘Document Location’ sub-grid and click ‘Add Files’

SP_13

  • Upload the document
  • You should see the uploaded document in the sub-grid.

🙂

 

 

 

 

Advertisements

Dynamics Portal Issue – Unable to submit Entity Form

February 17, 2018 Leave a comment

Recently we encountered a strange issue in our Dynamics Portal SaaS variant.

We got a requirement to allow Portal users to create ‘Custom Activity’ records from Portal.

To achieve this, we created an Entity form for the Custom Activity with mode set to ‘Insert’ and configured Web Template.

Portal - Entity Form

Issue:

  • After configuring Entity Form, Page Template and Web Template, we could not save the record from Portal.
  • Up on ‘Submit’ button click on Create form, there was no server post back.
  • On browser console, “Unable to set property ‘isvalid’ of undefined or null reference” exception has been logged.

Portal - Web Template Error

Reason and Fix:

  • Issue was due to the additional character in ‘Web Template’ Source HTML content (refer below highlighted) and correcting the HTML fixed the issue.

Portal - Web Template

🙂

Dynamics Portals – Execute FetchXML and Parse the results – Liquid script

January 22, 2018 Leave a comment

In one of our Portal requirements, we had to build custom screen (i.e., Web Template) and retrieve the results from Dynamics 365 and bind to grid.

In this article, I am going to detail the steps to Execute FetchXML based on conditions and read the results.

As we know that Dynamics portals use Liquid to add dynamic content to pages, lets prepare the Liquid.

High level design:

  • Liquid executes only on the page load, hence create a new Web Template (will be called only in background) and add the Liquid in it.
    • Imp Points:
      • In the web Template where you copy your Liquid to, specify the ‘MIME Type’ as ‘application/json’WT_Resolved Cases
        • You need to uncheck, below property in the ‘Page Template’ associated with the Liquid ‘Web Template’.

WT_1

  • From my Search screen web template, on change of Dropdown, I will call the above Web Template by passing selected the view as Query string.
  • Up on calling the background template, it executes the Liquid and return the results in Json collection
  • Capture the collection and render the results in table.

Liquid to fetch Cases:

In below liquid, I am reading the query string parameter ‘V‘.

  • If ‘V’=0, Prepare ‘Open Case’ filter
  • If ‘V’=1, Prepare ‘Resolved Case’ filter
{% fetchxml cases %}
<fetch>
<entity name=”incident”>
<attribute name=”incidentid”/> <attribute name=”title”/> <attribute name=”createdon”/> <attribute name=”casetypecode”/> <attribute name=”ticketnumber”/> <attribute name=”subjectid”/> <attribute name=”caseorigincode”/> <attribute name=”customerid”/> <attribute name=”statuscode”/> <attribute name=”statecode”/> <order descending=”true” attribute=”createdon”/>
<filter type=”and”>
{% if request.params[‘V‘] == 0 %}
<condition attribute=”statecode” value=”0″ operator=”eq”/>
{% endif %}
{% if request.params[‘V’] == 1 %}
<condition attribute=”statecode” value=”1″ operator=”eq”/>
{% endif %}
</filter>
</entity>
</fetch>
{% endfetchxml %}
{ “totalcount”: {{ cases.results.total_record_count }},
“morerecords”: {{ cases.results.more_records }},
“page”: {{ request.params[‘page’] | default: 0 }},
“results”:
[
{% for item in cases.results.entities %} {
“incidentid”: “{{ item.incidentid }}”,
“title”: “{{ item.title }}”,
“statuscode”:”{{ item.statuscode.label }}”,
“createdon”:”{{ item.createdon }}”,
“subjectid”:”{{ item.subjectid.name }}”,
“customerid”:”{{ item.customerid.name }}”
}{% unless forloop.last %},{% endunless %} {% endfor %}
] }

Liquid’s Field Parsing Syntax:

If you notice, I have used {% for item in cases.results.entities %} to loop through the FetchXML results.

  • To read a Look up field text, {{ item.customerid.name }}
  • To read a Option set Label, {{ item.statuscode.label }}

🙂