In this release, we focused heavily on performance enhancements. We implemented new features to assist with caching and retrieving of data, along with updating our Cron process, and doing a thorough audit of our meeting registration code.
In release 2.10 we’ve implemented a new Cache Server that isolates the cache to a single application that lives in our API project. This will reduce the load on the Organization Service for customers, and allows updates to cached data to be made through pushes in near real time. The cache server essentially “tees up” the data for CRM and other apps to pull from. This can be enabled for our ISV, API, and Portal projects.
We’ve added three new adapters in Release 2.10 to retrieve data directly from SQL for certain types of queries. The types of queries the SQL Adapter will work for are:
- Queries for a non-activity entity that do not include any criteria or links to other entities. These types of queries are generally restricted to cached entities. So, in practice the sql adapter reduces the load on the organization service for caching as well as speeding up the performance of the caching.
- Calls to Retrieve a single entity by id. This only applies to non-activity entities as the activity entity includes non-standard columns like activity parties that can’t be read easily through sql.
In order to reduce the number of applications caching CRM data and to facilitate real time cache notifications in the cache server, we’ve moved the Cron functionality to the ISV web application. Instead of running the Cron process through the workflow, a field has been added to the Cron Job to specify the message name directly. This will reduce the number of system jobs in CRM.
We have changed the submission of meeting registration payments to be asynchronous so that the portal user only needs to wait for the registration to be submitted and the order created before getting their confirmation and receipt. We then create the payment, invoice, invoice payment, invoice distribution, GL account entry and batch item records asynchronously behind the scenes.
In addition to that, we updated the way we calculate the current meeting registrations and waitlist eliminating even more overhead in our code. Prior to 2.10, the code for handling waitlist calculations was bringing back every meeting registration associated with the meeting anytime a meeting registration was submitted. This caused the code to continue to get slower the more meeting registrations were submitted.
In our tests using a group registration for 5 attendees registering for 2 activities and 1 session the time from clicking the submit button to fully rendering the receipt page is less than 10 sec compared to more than 30 seconds on the 2.9 server. We consistently are seeing a better than 300% improvement here and it actually gets better the more complex the registration and the more existing attendees there are.
CRM 2016/Online Compatibility
To take advantage of all the great new features available in Microsoft Dynamics CRM 2016, we made changes and updates to our product.
- Updated our client event handler to use the 2016 supported method of setting lookup fields
- HTML editors (including the WYSIWYG HTML Editor) were updated to be compatible with CRM 2016
- Implemented a new adapter for CRM Online to ensure that a single application doesn’t attempt to execute more than 2 ExecuteMultiples at a time.
- Updated portal code to set paging cookies, fixing issues with our portal running against CRM online
- The Bulk Payment ISV wizard has been updated to remove SQL query expressions and make it CRM Online compatible.
In the past we’ve run in to issues with our ISV modal windows and cross browser restrictions. To resolve this issue, the ISV wizards are now using lightboxes. We also added a vertical scroll to the ISV Wizards for users with lower screen resolutions.
- Ability to create Conditional Form Questions for display on the portal
- Prerequisite membership application requirements
- Ability to prevent backorder of a product on the portal
- Mobile enhancements including updates to the navigation button spacing and the date picker
- Minified 7 components in css and js files within our Nevia theme to enhance performance on portal pages
- Widget Updates
- SSO Updates
- Order History Grid now hides orders that have Hide on Portal = Yes
- Updated portal validation to display a friendlier and more informative error message if a file to upload exceeds the maximum file size allowed
- Monthly deposit report has been updated to filter out Cancelled Payments
- Tax calculator is now generating proper GL account entries when the product is taxable