Optimizing Vista Cloud Performance

When Speed is King!

Author: Eric Vasbinder 

Overview and Expectations

From time to time, after moving into the Vista cloud, customers may encounter areas of Vista that perform slower in the Vista VRL cloud than they do on-premise.  In a few cases, this is to be expected, as the performance of certain workflows, such as data entry are heavily dependent on latency and the physical distance of your Vista client to the Vista database.  By moving into the cloud, latency will increase, sometimes up to 10x what was seen on-premise.   For example, data entry into AP Header or PR Timecard Data Entry may experience a 1-2 second lag between the time a new row is requested in the grid and the time that the row is added.  This is all due to the increase in network latency.  Please note that our team continues to optimize Vista, as well as uplift various heavy workflows into a thin client, web based model.  As such, with the release of each Speed Demon initiative, performance in Vista continues to improve over time.

We understand that ensuring appropriate levels of responsiveness and speed for your Vista cloud installation is critical.   Thus, if you encounter significant performance impacts beyond what we might expect given the current state of Vista's architecture, there are certain things that can be done to increase performance.   This FAQ walks through the various items that can improve performance in cloud-hosted Vista.

Overall Performance Improvements (Both VRL and RDP)

Modernizing and Updating SQL Customizations

Many customizations created in SQL by our Vista customers are written with specific SQL nuances in mind.  These nuances can change from SQL version to version as Microsoft continues to optimize the SQL product.  As such in order to ensure ongoing high performance, it is necessary for customers and their consulting partners to continually update their custom SQL stored procedures, triggers, reports, and more.

If this is not done, we can see significant performance negative impacts in the cloud, especially as moving to the cloud can often result in a version upgrade of both Vista and SQL Server from what existed on premise.

Please partner with your in-house development team or third-party consultants to ensure that your custom stored procedures, reports, triggers, and more are fully compatible with modern SQL Server assumptions such as query plans and Legacy Cardinality Extensions being off.

tl;dr:  Most cloud SQL servers are at least SQL 2019 in our ERP clouds, so please verify your SQL server version with our support team and then ensure your customizations are optimized for that SQL level if possible.

Usage of Modern Database Settings - LCE Off

Many customers that may have been using Vista for some time may have written their custom reports, queries, and stored procedures to be most performance with the older way that Microsoft SQL handled cardinality.  This needs to be updated in all custom procedures, reports, and other queries such that they are compatible with the modern cardinality method of SQL servers.

However, to that end once these settings have been changed and updated to modernize these application customizations, we should also ensure that the database itself has been updated to ensure that older legacy cardinality extensions are turned off.  

As such, please work with your cloud support team to ensure that LCE (Legacy Cardinality Extensions) is turned off at the database level.

NOTE:  If LCE is required for specific, older stored procedures and queries, etc. you may use SQL hints to turn on LCE for those specific queries.   This should ONLY be used if absolutely necessary for older queries and procs that cannot be updated to fit modern standards.

Optimize Size of Master Audit Table (HQMA) in Vista

One of the key parameters with Vista performance in the cloud is to ensure that your Master Audit Table (HQMA) is of a reasonable size.  If HQMA is too large, you will encounter significant performance issues with user renames, edit operations on users, etc. 

If your HQMA table is larger than about 1-2 million rows max (the smaller the better), please investigate purging this table to get it down to an appropriately smaller size. 

If you require those records be accessible for auditing purposes, please choose one of the following two paths to improve performance and preserve access to your data:

Please reach out to our professional services for assistance with either option.

Optimize Size of IMWE (IM Work Edit) and IMWENotes Tables in Vista

During repeated import processes, import-related tables can often grow substantially, especially when import batches are not closed in the rush of an average work day.  If these tables grow too extensively, import processing in Vista will slow measurably.  Specifically, if the IMWE or IMWENotes tables grow to exceed 100,000 rows or higher (plus or minus a few 10k rows), import performance will suffer, sometimes slowing to only a few records every second or less.

To that end, we highly recommend purging the IMWE tables.  This can be done either using the built-in forms in Vista to purge those import jobs, or by running SQL commands to manually purge the tables.

For your convenience, we have included a sample purge script that can purge your IMWE table in the event that you need to manually purge this table; see the following collapsable section.

IMPORTANT - THIS SCRIPT IS PROVIDED FOR THE CONVENIENCE OF OUR CUSTOMERS AND PARTNERS AND NO WARRANTY OF ITS EFFECTIVENESS OR SAFETY IS MADE.

YOU ARE RESPONSIBLE FOR ANY ISSUES THAT MAY ARISE FROM THE USE OF THIS SCRIPT.

Please review this script with your SQL server experts or consultants prior to use.

SCRIPT 1 - Truncate IMWE Table

USE [msdb]

GO


/****** Object:  Job [Truncate IMWE]    Script Date: 3/15/2024 3:08:55 PM ******/

BEGIN TRANSACTION

DECLARE @ReturnCode INT

SELECT @ReturnCode = 0

/****** Object:  JobCategory [DATABASE Maintenance]    Script Date: 3/15/2024 3:08:55 PM ******/

IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'DATABASE Maintenance' AND category_class=1)

BEGIN

EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'DATABASE Maintenance'

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback


END


DECLARE @jobId BINARY(16)

EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'Truncate IMWE', 

@enabled=1, 

@notify_level_eventlog=0, 

@notify_level_email=0, 

@notify_level_netsend=0, 

@notify_level_page=0, 

@delete_level=0, 

@description=N'No description available.', 

@category_name=N'DATABASE Maintenance', 

@owner_login_name=N'sa', @job_id = @jobId OUTPUT

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

/****** Object:  Step [Truncate IMWE]    Script Date: 3/15/2024 3:08:56 PM ******/

EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Truncate IMWE', 

@step_id=1, 

@cmdexec_success_code=0, 

@on_success_action=1, 

@on_success_step_id=0, 

@on_fail_action=2, 

@on_fail_step_id=0, 

@retry_attempts=0, 

@retry_interval=0, 

@os_run_priority=0, @subsystem=N'TSQL', 

@command=N'truncate table Viewpoint.dbo.bIMWE', 

@database_name=N'Viewpoint', 

@flags=0

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Every 2 days', 

@enabled=1, 

@freq_type=4, 

@freq_interval=2, 

@freq_subday_type=1, 

@freq_subday_interval=0, 

@freq_relative_interval=0, 

@freq_recurrence_factor=0, 

@active_start_date=20240315, 

@active_end_date=99991231, 

@active_start_time=10000, 

@active_end_time=235959, 

@schedule_uid=N'e9bd2350-93f9-4858-8fd2-e05d1d357602'

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

COMMIT TRANSACTION

GOTO EndSave

QuitWithRollback:

    IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION

EndSave:

GO

Optimized MAXDOP and TempDB

Another item that is critical for database performance of Vista is to ensure that the databases procedures and queries are not allowed to run amok, sucking up all CPU resources in an effort to blindly execute query plans.  To that end we need to ensure that the CPUs that are used by the database in parallel are limited to be to less than the total number of CPUs available to your cloud server.  Thus, if your cloud server is configured to have 16 CPUs you should be ensuring that the database can use no more than 14 CPU cores.

The setting to control this is known as Max Degrees Of Parallelism (MAXDOP).  The default setting for MAXDOP is zero, which allows for a SQL database to use as many cores as possible to really hammer the system to push to conclusion a particular query.  Instead, to allow the server to "breathe", and to allow for other Vista components to function properly on the same server, we should set that number to again be to less cores than the total number available on the server.  This goes for on premise installations of Vista as well.

In addition, we should ensure that the temp DB settings for that server are configured properly against the total number of cores allowed in MAXDOP.

In the event of database performance issues, please coordinate with your cloud support team members to ensure that these settings are properly configured.

Closing Scan Batches

As scans are added into Vista, they are often added in through the Vista batch scan process.  From time to time, users will keep their scan batches open for an extensive amount of time as additional files are added.  Unfortunately, this can interact in a suboptimal manner with Vista's performance as those batch scan tables will often grow in to the thousands or even millions of records.  For example, you may see Vista freezing when opening the scan batch form, etc.

As such, as a highly recommended best practice, we recommend that scan batches only be open during the time that a specific set of documents are being scanned into Vista, or at the very least during a small, proscribed period of time.  Effectively, this means that the size of scan batches that are active will be limited by the size of a specific batch, or by the number of scans brought into Vista during a time window.

Here are the two options we recommend, summarized below:

Two options:

Usage of Custom Triggers

For the most part, Trimble Viewpoint does not recommend the use of custom triggers in Vista as they can cause database performance issues.  Thus, though it is possible for a customer to set up custom triggers and we still allow this use case, it is not something we recommend.

If you notice slowness with batch job processing, please ensure that and custom triggers that you may have are not interfering with the batch job.  If they are part of that process, consider simplifying them or removing them entirely.

Usage of Custom Workflow Notifiers

Some of the immense power of Vista can be see in its highly flexible notifier system.  This capability allows for various workflows to result in notifications, such as email messages, to be sent when certain activities are completed within Vista.  For example, payroll notifications with check stub / payslips, notifications on new jobs being entered, job status changes, AP approval requests, and more.  However, along with the power of this capability, we can also see performance impacts depending on the size, number, and complexity of the notifications configured in any particular Vista system.

If there are too many custom notifiers, or if they are running against too many simultaneous records, or if they are themselves too complex in their queries and actions, they can cause slowness in Vista batch processing, including payroll, check printing, etc.

Whether you have this issue or not, please methodically review your custom notifiers in service today to ensure that only those notifiers that are necessary for your business critical workflows are in use.  In addition, please consider reducing the complexity and / or scope of those critical notifiers to include only that which is needed for those notifiers to accomplish their tasks.

One final item to additionally consider is that if notifiers are using custom queries, those queries themselves may be written using older, inefficient SQL code (see above section on using modern SQL code designed for SQL 2019 or higher).  If so, they can dramatically slow down the system when multiple notifiers are being executed simultaneously.  Please update your critical notifiers to use modern SQL code where possible.

Update Custom Crystal Report Compatibility

Some custom Crystal Reports were originally written with queries that are optimized for SQL 2012 and older.  This creates a potential performance issue when moving those reports into our cloud environment, which uses much newer versions of SQL server.

As such, if, when running Crystal reports in the cloud, you notice either high CPU usage in our dashboards, extremely slow report performance, or slowdowns in the rest of Vista while a report is running, please reach out to Viewpoint support staff to verify if long-running or blocking queries from your Crystal report are causing the performance issue.

If confirmed, please consider rewriting that report to be more compatible with modern SQL server query execution plans.

Optimizing the size of PDF Attachments

Ensuring that document attachments stored in Vista are no larger than necessary is a significant best practice to assisting with the speed of uploading, printing, and downloading attachments.  The following URL shows some specific recommendations on how to accomplish this task:  Optimizing Attachment Size 

A good rule of thumb is that PDF attachments should not be more than 15-20kb per page.  If you find that your attachments are significantly larger than this, you may wish to change the settings used to save  your PDFs to optimize their size further.

VRL Performance Improvements

Validate your Network Performance

The Vista Remote Link (VRL) technology used in our Viewpoint Vista cloud is very latency sensitive.  As such, keeping your network latency as low as possible is a desired goal.

To that end, if you see performance issues with data entry or moving from page to page in reports, etc. you should validate that your latency is as small as possible.  Here is a link to a cloud FAQ article that walks you through testing your network's latency to determine if you have excessive latency or packet loss.

Network Standards for VRL Cloud Connections and Testing Them 

Switch to Hard Wired Networking Where Possible

In some cases, local office wireless networks are set up in a "mesh" or repeating deployment model.  This method, though effective at extending wireless range and capacity for standard email and web page browsing, increases network latency by a significant amount.  As such, it sometimes occurs that using cloud-based VRL Vista on a wireless network is slower than ideal.

To that end, where possible, such as an office location with discrete desks for end users, we recommend the use of hard wired networking, which can sometimes increase Vista VRL performance by 25% or more for particularly "chatty" workflows in the client.

Optimize Your Datacenter Hosting Region

Our advanced Trimble Viewpoint cloud for Vista has multiple regions where Vista may be hosted.  One key reason for this, beyond redundancy, is to be able to bring the Vista database as close to your 10-key experts as possible.  As data entry in Vista is extremely sensitive to latency, we recommend testing your latency to determine the fastest supported location for Vista and, if there is a datacenter region with latency that's at least 10ms smaller, moving your Vista environment to that region.  

Once you have identified the fastest region for your 10-key data entry experts, please submit a cloud support case to have your environment moved to the faster region.

Please remember to try this test with any cloud content security solution both turned on and turned off, making note of any difference caused by the use of those tools.  See next section below for more details.

Please see this FAQ for the supported regions and methods to test.

Network Standards for VRL Cloud Connections and Testing Them 

Rule out Cloud Content Security Solutions

Cloud-based content security solutions, such as NetSkope and zScaler can provide organizations with a robust way to limit the possibility of data exposure to third parties by blocking the sending of sensitive data to external sources.  These tools have become more commonly used as "zero trust" models for security implementations become more commonly used.

Unfortunately, the current technology of these cloud content security solutions (a.k.a. "cloud firewalls") can significantly increase latency for Vista traffic.  Remember, these tools route all HTTPS and HTTP traffic through the vendor's network in the cloud, decrypting your traffic to scan it for problematic data disclosures and embedded threats, then reencrypt the traffic for delivery to the final destination.    As mentioned above, higher latencies can cause significant negative performance impacts to the Vista end user experience.

In more detail, since Vista VRL traffic has to not only be delivered to the Vista VRL proxy server in our cloud, it also has to return to your client, the impact could be significant.  Imagine a standard 15-20ms latency increase by using NetSkope or zScaler, which is what we might expect.  Since we need to both send and recieve data, now with a 20ms or so delay, we see an overall increase in latency of 30-40ms for each call made by the client.  Since heavily validated Vista client forms require 20-30 back and forth calls to move forward, this can add up to nearly 1.2 seconds or more of lag.

To rule in or out these solutions, please try temporarily turning off your cloud content security solution and performing appropriate testing of Vista workflows. 

To that end, we recommend putting in exceptions for data destined for the Trimble Viewpoint cloud to exclude it from being routed over the content security provider's cloud.  

Instructions on how to do so may be found by reaching out to the vendor of your cloud content security product.

Implementing Paging Everywhere Possible

Paging is a powerful technology in the Vista rich client that allows the client to load only the minimum number of records into the grid as needed.   This can significantly improve form load times, especially on forms with thousands of records.  It will significantly reduce the amount of time it takes to load those forms, while still preserving the behavior of the grid filter bar and form search functions, still allowing you to search through the totality of the data set. 

The following Cloud FAQ article provides instructions on how to enable paging.  Please ensure paging is turned on wherever possible - it was one of the three "pillars", set up as a means to ensure the success of VRL for our customers.

Enabling Vista Paging 

Uplifting Workflows

Many workflows in the Vista rich client are also available in our Vista Web portal and native mobile apps.  These tools, formerly known as HFFS or Keystyle, perform validations and other operations in a completely different way as compared to the rich client.  This allows for rapid, near-zero lag data entry among other improvements.  We have continued, and will continue, to uplift functionality, where appropriate to the Vista Web solution, allowing our customers to experience a more performant cloud world.

To that end, where possible, we recommend democratizing and modernizing your processes to leverage Vista Web's capabilities as much as possible.  For example, where possible:

Using Imports

Certain data entry operations in Vista, such as Material Sales Ticket Entry are not replicated in Vista Web and can sometimes encounter lag during heavy data entry, especially if your network is distant from the Vista database.

In these scenarios, we recommend the use of CSV file imports via the autoimport process into Vista.  Your external systems (i.e. Third party integrations), as well as human end users, can enter data into CSV files that can be manually imported via the IM Import form or by placing the files in the Viewpoint Repository's pickup folder (AUTOMATED SERVER TO SERVER IMPORTS ONLY).

This will avoid any data entry lag, as data is either entered by an end user on their own local workstation or automatically from a third party integration.

Using Split Tunneling With a Corporate VPN

Corporate client-side VPNs can often slow down VRL access by adding unnecessary, additional hops onto the network path, similar to a GPS routing a car through a dense, residential neighborhood, rather than directly on to the expressway on ramp.  

As such, when using any client-side VPN on your workstation, we highly recommend turning on Split Tunneling to ensure Vista related traffic proceeds as rapidly as possible to the datacenter.

Here is a link to an FAQ article with much more detail on split tunneling and its potential performance improvements:  Cloud Vista using VRL with Client (SSL) VPNs - Split Tunneling Recommended 

Quality of Service (QoS) Settings

Oftentimes in the cloud, especially with VRL (Vista Remote Link) connections, performance can be improved by ensuring that traffic intended for the Vista in the cloud is allowed to proceed through the corporate network as fast as possible.  A recommended way to highly prioritize Vista traffic is through the use of Quality of Service (QoS) settings in your network firewall / internet gateway device(s).  

Though we cannot walk customers through specific steps to enable QoS settings for your specific network device, as those steps differ depending on the router / firewall in question, the following items should be reviewed within your device's settings:

changelog

Tuesday, 02 July 2024 at 01:08PM:  

Tuesday, 09 April 2024 at 10:15AM:  

Monday, 29 January 2024 at 10:38AM:  

Wednesday, 01 November 2023 at 08:14AM:  

Wednesday, 25 October 2023 at 10:27AM:  

Wednesday, 04 October 2023 at 02:36PM:  

Wednesday, 04 October 2023 at 02:34PM:  

Thursday, 17 August 2023 at 03:00PM:  

Wednesday, 07 June 2023 at 08:14PM:  

Thursday, 11 May 2023 at 03:18PM:  

Updated:  Thursday, 12 August 2021 at 05:51PM