Lime CRM Desktop Client 11.1.2090

Lime CRM Desktop Client
Date published
Manual installation.
This was the initial release for 11.1, please use current version for new installations.

Desktop can now gracefully handle scenarios where the trashcan contains literally hundreds of thousands of deleted records.

The Desktop Client will build the update locally and save changes to database without locking the user interface. Updates will indicate progress and may be explicitly aborted.

Any batch containing more than a server specified default value of records will automatically split into sub-batches that are executed sequentially. This will avoid problems with timeouts and clients effectively blocking the backend during lengthy operations.

Any datablock returned by server may be truncated at around 64Mb of UTF-8 encoded XML. The Desktop Client will now detect and gracefully handle this also for legacy backend versions. Recovered data will be loaded immediately and remaining data will be block-loaded to avoid further truncation.

This is not really a new feature, but numerous issues effectively disabled updates in many scenarios… One exciting feature is that the parent record will also refresh unless modified locally. Refined handling of active inspector, explorer and controls. Desktop will now automatically guard legacy code in VBA and LBS against misuse of ActiveInspector, ActiveExplorer and ActiveControls. For the most part there should simply be less situations where the code ends up with Nothing/null or unexpected content.

Desktop now includes a very general polyfill that essentially should enable policy exceptions for mixed content via any legacy JavaScript API, ie. $.ajax and XmlHttpRequest.

The ActionPad will now reload automatically only after operations that update visual content of the controls or modified state.

Desktop now includes a client-side cache for descriptive information. This will reduce number of server requests where only an single field of a single object is loaded, effectively reducing number of request when creating a new record by 50%.

Desktop will now evaluate client-side defaults without implicit dependencies for backend generation of permanent ID. Permanent backend ID will be generated when needed. Essentially this will resolve multiple issues where solutions depended on bugs in client-side handling of dates to force backend evaluation which implicitly resulted in permanent ID.

Error messages for updates now includes details on how to resolve common configuration errors, especially related to “SQL on update” and “Update on relation change”.

The query builder will now build filters that run faster in the SQL-server, mostly by avoiding extensive usage of nested queries.

Desktop now includes an elaborate workaround for situations where VBA has been uninstalled. Essentially desktop will detect that VBA is missing even before login and silently reinstall VBA in the background before the user even notice. This silent repair runs via our system-level service for automatic upgrades and is faster and more robust than previous repaired based on our full installer.

Desktop is based on three major configuration sources: LISA, VBA and ActionPads. Most details are hidden in the backend and only accessible via custom tooling, until now. Desktop will now automatically export details to a local folder structure in Windows-user’s profile. This initially targets these major scenarios:

  • Human readable and text searchable access
  • Text level comparison between versions and solutions, ie using WinMerge or similar.
  • Suitable for source code management, ie check into GitHub
  • Easily exportable without any data, ie ZIP the folders and share with developer or support.
  • Added external API support for async updates.
  • General support for WebView2 specific content using “_wv2”-suffix for files.
  • Extended tracking capabilities to follow requests through the entire stack to enable effective diagnostics to find problems and identify performance issues:
    • Trace id embedded in XML to LDC
    • Data structure timestamp included in queries
    • Filter metadata (ie name, description, etc) included in backend request.
  • Dynamic switching between WebView2 and IE/WebBrowser. The UI-description still says that restart is required, but generally switching is now instant, which should make testing both easier.
  • Added icon to explorer column headers for related content. If nothing else this indicator should reduce risk of confusing ID columns for the class and relations, which has been the root for some very strange errors.
  • Improved developer experience for VBA
    • Automatic file export of VBA during save, see separate note in “Human readable access to configuration”.
    • Internal VBA storage format is now automatically consolidated on save, which effectively resolves some issues with stale references and ever-growing VBA-blobs.
    • Uploading VBA is now done async in background, ie after saving you can continue working in desktop immediately.
    • Refined error handling for saving and updating VBA in backend.
    • Automatic call to VBA ThisApplication.Setup method after save to reenable integrations.
  • Refined automatic handling of date filters applied to timestamp columns, including related. This has been partially supported since 11.0.
    • “Date ⇐ timestamp” will be converted to “Date < nextDay(timestamp)”
    • “Date = timestamp” will be converted to “Date > timestamp AND Date < nextDay(timestamp)”
  • Refined handling of record field values
    • Adding items via list will now set owner field also when not visible in list.
    • Updated field values for records will be saved also then not included in fields-collections, including defaults for new records.
    • Related field values are now read-only.
    • Related field values will not be included in backend updates.
  • Status bar indication of VBA execution. This will help us track VBA bottlenecks since any VBA method causing the desktop to hang will be clearly exposed in screenshots.
  • All callbacks are suppressed while debugging VBA to avoid unexpected behavior.
  • Improved robustness for COM marshalling. Previous versions were heavily dependent on fully correct COM registrations for itself, MS Office and other integrated systems. Well-known interfaces are now included in our manifests for registration free COM.
  • Improved robustness for integration with MS PowerPoint Fixed stability problems related to closing and uploading updated documents.
  • Improved robustness for embedded addins All embedded addins now include robustness fixes to reduce risk for causing desktop to crash due to minor errors.
  • Improved robustness for failed backed feature detection.
  • Timezone handling will use reasonable default
  • Retry for FileAPI detection
  • Application.DisplayAlerts will now return false if the user has been inactive for more than 10 minutes.
  • Dialogs are no longer explicitly suppressed for timers to enhance compatibility with legacy VBA/LBS-solutions
  • General support for multithreaded usage of LDE.
  • Refined internal handling of option-fields.
  • Refined internal handling of pools
    • Full support for union operations.
    • Unified API support for records
  • Refactored internal handling of API timers, ie Application.SetTimer and Application_Timer.
    • Only handlers in the same Win32 module will receive callbacks, reducing risk/problems related to event handlers failing to filter incoming calls by ID.
    • IDs are now only required to be unique per Win32 module, reducing risk/problems related to conflicting IDs.
    • Timers are automatically destroyed when all related handlers have been disconnected, reducing problems with ever-growing number of orphaned timers due to omitted calls to stop timers.
    • Timers added during a modal call will now trigger for the duration of that call, effectively to support usage of timers in modal VBA forms. Remaining timers will still be suppressed to avoid stability problems.
  • Improved performance for evaluation of VBScript based formulas.
  • Improved performance when opening inspector from explorer record where all fields are includes.
  • Updated branding for integration with Dun & Bradstreet OneByOne
  • Improved support for Actionpad content using UTF-16
  • Improved error details for many areas:
    • File operations
    • Filter errors
    • Shell operations
  • Improved stability
    • Worked around stability problem caused by internal conflicts between custom message filters installed separately by VBA, MFC and .Net.
    • Resolved lifetime issues due to lingering COM references.
    • Fixed stability issue after aborting Inspector_BeforeShow, mostly seen for solutions with OpenedBy.
  • Refined suppression of dialogs when user inactive.
  • Compatibility workarounds to allow updates to link-fields that due to backend bugs are marked as inaccessible for the current user.
  • Fixed issues when copying records and cached descriptives acting up.
  • Fixed issue where the VBA silently ignored COM events when a modal was showing.
  • Fixed a compatibility issue for Record.Refresh/RefreshField in situations when values had changed without the timestamp being updated.
  • Last modified: 4 months ago
  • by Pontus Netler