The Portal Connector Release Notes -

Release Notes - Version 5.3

New Features

  • User Impersonation

    Requests to Dynamics CRM that submit data now have the option to be requested on behalf of a specific user. With user impersonation enabled the owner, modified by and created by fields will be set to the logged in user in the portal if that user has a CRM User ID associated to their profile.
    Impersonation
  • Async Form Loads

    As a major performance enhancement, all Portal Connector MVC editing forms will have data loaded asynchronously. By doing this it will streamline caching strategies and will result in a significant performance gain on page loads.
    Async

Feature Enhancements

  • TPC Date-Time Enhancements

    Addressed issues pertaining to inconsistent date-time behavior by changing dates to utilize ISO 8601 format across the application. User selected time-zones now leverage the Moment.js library.
  • TPC Validator message has Fetch XML data

    Provided the option to add data from the Fetch in the TPC Validator's Invalid Message textbox. It is now possible to display invalid form values in a customized message.
  • Upsert and Keys Support for TPC Forms

    The TPC Form Manager now provides upsert functionality in a single call that performs either an update or an insert, based on the primary and alternate keys defined in the TPC Form Configuration
  • TPC Designer Hidden Fields

    Hidden fields in the designer are now visible with half opacity to assist with development in the backend. They are still not visible on the frontend.
  • TPC File Upload Enhancements

    The file upload widget now uses a Kendo File Upload widget to render, with this we also enabled both Drag and Drop Upload support as well as Paste uploading for images. Extended validations and error messages are also available now that show exactly any errors with an upload.
  • TPC Picklist Horiztonal Bar View

    Added a horizontal bar display to the TPC Picklist widget.
  • TPC Notes Filtering Support

    Added prefix filtering to the TPC Notes widget akin to the WebForms version.
  • Null Value Support for TPC Boolean

    Added null value support to TPC Boolean widget. It is possible to select null as a default value.
  • TPC Text Field Mask Validation Requirments

    Added required state option to Mask Validation on the TPC Text Field widget. When set, incomplete masked text fields will prevent form submission.
  • TPC Static Value Owner Field Support

    Added support for setting the Owner field on the TPC Static Value widget.
  • TPC Lookup has new API: set_textValue

    Added new function to the frontend client-side API for the TPC Lookup: set_textValue takes in a text string and selects the first item in the lookup that matches the value.

Bug Fixes

  • Fixed issue with Fetch XML filters where the name was case sensitive
  • Fixed issue with TPC Scheduler where recurring events are not editable
  • Fixed tool tip issue for TPC TextField under certain circumstances.
  • Fixed issue where only certain attributes render on the TPC Scheduler. Now any attribute that is in the fetch can be on the template.
  • Fixed issue with the TPC Lookup where linked entity attributes cannot be used as display value
  • Fixed TPC Rules Manager issues when selecting and modifying picklist values.
  • Fixed issue where new operators present in newer versions of Dynamics CRM were not supported. New operators supported includes "contains-values", "above", "under", "olderthan-x-weeks" and more.
  • Fixed issue with TPC Picklist in Multi Select view preventing render on Internet Explorer.
  • Fixed issue preventing uploads using the TPC SharePoint widget when users uploaded files with special characters.
  • Fixed TPC Knowledge Base Search Widget so that it searches correctly without any filters applied.
  • Fixed issue with Multi Select picklists preventing submission of saved Form Submissions
  • Fixed TPC Notes issue where content with HTML fails to parse correctly.
  • Fixed issue with TPC Migrations preventing users with the same email from being imported on the target site.
  • Fixed issue where TPC Signature widget overlaps with neighboring widget.
  • Fixed TPC Picklist widget API get_displayInput not returning the right value in all cases.
  • Fixed issue with the TPC Page Export widget where special characters would not be included in the export.
  • Fixed issue where after client side filtering on the TPC Grid, an error could occur if the results totaled zero.
  • Fixed date field filtering on TPC Validator. Filtering date field no longer causes the filters to change dates into integers.
  • Fixed an issue with the TPC Activity Feed widget preventing the filters from displaying properly.

​Breaking Changes

  • TPC Picklist - get_value()

    In some picklist configurations, get_value() was returning inconsistent results.

    Actions Required:
    If you have one of the following configurations, see corresponding changes.

    Single Select Picklist with appearance set to Radio Buttons or;
    Single or Multi-Select Picklist set to Read Only:
    • With no values selected, using get_value() would return undefined.
    • This now returns an empty string (""), consistent with all other configurations.

    Multi-Select Picklist set to Read Only:
    • With only one value selected, using get_value() would return the value as type Number.
    • This now returns the value as type String, consistent with all other configurations.
  • Custom Widget Tempalates

    When upgrading to The Portal Connector 5.3 custom templates functionality breaks or throw an exception to the UI.

    Actions Required:
    Any widgets that are using custom templates, need to be re-created using the new template view and added back to the widget. This will ensure your site receives the new async functionality. In addition, clear the cache once you make the changes to the widgets.
  • Notes & Activity Feed Widget Template Changes

    When upgrading to The Portal Connector 5.3 the fade/side down functionality of each item do not work.

    Actions Required:
    Change the old HTML code to new HTML Code.

    Notes Widget

    Current Code: 
    <div class="item-content">
         <div class="minimized-activity" style="min-height: 30px;">
              @(Model.EscapeCrmData ?"#: escapedText#" : "#= escapedText#")
         </div>
         @if (Model.AllowDownloadingAttachments){
    <div class="content-meta-data">
       #if(attachmentExists) {#
       <a title="attachment" href="/PortalConnectorMvc/Services/Data/Notes/Download/${controlDataId}/${id}?filename=#= encodeURIComponent(attachmentFileName) #">
    <span class="fa fa-paperclip" aria-hidden="true"></span> ${attachmentFileName}</a>
    #}#
    </div>
    }
    </div> 

    New Code: 

    <div class="item-content">
         <div class="minimized-activity">
              <div class="activity-preview tpc-text-ellipsis">
                  @(Model.EscapeCrmData ? "#: escapedText#" : "#= escapedText#")
              </div>
              <div class="activity-description hide">
                   @(Model.EscapeCrmData ? "#: escapedText#" : "#= escapedText#")
              </div>
          </div>
          @if (Model.AllowDownloadingAttachments)
          {
          <div class="content-meta-data">
               #if(attachmentExists) {#
                   <a title="attachment" href="/PortalConnectorMvc/Services/Data/Notes/Download/${controlDataId}/${id}?filename=#= encodeURIComponent(attachmentFileName) #">
    <span class="fa fa-paperclip" aria-hidden="true"></span> ${attachmentFileName}</a>
                #}#
       </div>
      }
    </div> 

    Activity Feed Widget

    Change 1: 

    Old Code:

    <div class="item form-row">

    New Code: 

    <div class="item row">
     

    Change 2: 

    Old Code:

    <div class="content-container">
         <p>#= subject#</p>
         <div class="item-content">
              <div class="minimized-activity"  style="min-height: 30px;">
                     #if(descriptionIsHtml){#
                     #= description#
                     #}else{#
                     #= escapedDescription#
                     #}#

               </div>
               <div class="content-meta-data">
                    Modified by <b>#= modifiedBy#</b> on <i>#= modifiedOn#</i>
               </div>
          </div>
    </div>

    New Code:

    <div class="content-container">
        <p><strong>#= subject#</strong></p>
        <div class="item-content">
            <div class="minimized-activity">
                <div class="activity-preview tpc-text-ellipsis">
                    #= description#
                </div>
                <div class="activity-description">
                    #if(descriptionIsHtml){#
                    #= description#
                    #}else{#
                    #= escapedDescription#
                    #}#
                </div>

            </div>
            <div class="content-meta-data">
                Modified by <b>#= modifiedBy#</b> on <i>#= modifiedOn#</i>
            </div>
        </div>
    </div>
  • Form Data Loaded Async

    With the new TPC 5.3 Asynchronous changes, pages are loaded without data. Data for records is then loaded after the page has fully loaded.

    Actions Required:
    If your code is expecting data on page load, you must modify your code execute using our Java Script events.
    • "tpc:ready" fires when all forms on the page are loaded
    • "tpc:form-load" fires once per form loaded on the page

    You can use these events to wait for data being loaded on the page before running your custom scripts.

  • tpc:ready Late Execution

    The "tpc:ready" API now fires when all forms on the page are loaded, causing it to fire later in the chain of events due to the asynchronous nature of the new changes in TPC 5.3

    Actions Required:

    If you are experiencing issues with popin or scripts firing too late after upgrading, use the new event:

    • "tpc:api-ready" - This event is a drop-in replacement for the older "tpc:ready" event and fires at the exact same time the older one did.
  • Updated Microsoft CRM Dependency

    The Dynamics CRM SDK version has been updated to support new operators and functionality with the latest versions of CRM.

    Actions Required:

    Custom code or references may be broken as a result of this. Fortunately the public Microsoft APIs are backwards compatible and custom code would likely only need a reference update, to resolve the issue:

    • Open the references of your Visual Studio project and point any Microsoft SDK references to the new versions provided by The Portal Connector
  • TPC Date-Time Format (ISO 8601) Changes

    Addressed issues pertaining to inconsistent date-time behavior by changing dates to utilize ISO 8601 format across the application.

    Actions Required:

    All Widgets

    • Dates are now set and stored in the application using ISO 8601 format, this includes all existing API methods.

    TPC DateTime
    • set_value no longer accepts a UTC boolean parameter.
    • User selected timezone now uses Moment.js time zones.

    TPC Static Value
    • All TPC Static Value widgets that are for DateTime attributes must be re-added to the page and the Designer View cache must be cleared in order for new DateTime behaviour to take effect.
    • TPC Static Value widgets that are set to use Current Date and Time can no longer be used to filter FetchXML expressions using Field Value filters. This issue can be resolved by using the static keyword @now@ instead of using the field value of the TPC Static value. More information on static FetchXML filters can be found here
    • TPC Static Value widgets that are set to use Current Date and Time no longer return the current DateTime as a JavaScript object when using the get_value() API. This issue can be resolved by using new Date() or new Date().toISOString() in any places where the get_value() method was being used before.

    TPC Lookup

    • TPC Lookup service now returns dates in ISO string format.

    TPC Query String
    • Requires an ISO value (UTC for local DateTime behaviour, otherwise unspecified)


    http://localhost:60876/timezone?date=2019-07-05T04:00:00.000 (Non-Local)

    http://localhost:60876/timezone?date=2019-07-05T04:00:00.000Z (Local)


    Grid Service

    • The Grid service now returns dates in ISO String format rather than Microsoft Date format.

    Saved Queries
    • Saved Queries now return dates in ISO String format rather than Microsoft Date format.

    Rules Manager
    • Rules Manager now uses a UTC string for equal/not-equal Date comparisons (Z UTC date for local, unspecified for others).