> ## Documentation Index
> Fetch the complete documentation index at: https://docs.germainux.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 08/30/22 Release Notes

> Highlights of the GermainUX release of August 30, 2022, including monitoring and analytics updates and maintenance fixes.

> **[Salesforce (enh)](#monitoring-%26-analytics-salesforce-enh)**
>
> Monitoring & Analytics

> **[Smart Insights Daily Summary](#monitoring-%26-analytics-smart-insights-daily-summary)**
>
> Monitoring & Analytics

> **[Document Audit (enh)](#maintenance-document-audit-enh)**
>
> Maintenance

## Monitoring & Analytics - Salesforce (enh)

### Description

Six pre-configured enhancements in Germain to further improve real-time insights while monitoring Salesforce.com.

#### 1. Enhancement: Additional real-time analysis of SFDC Log

* New KPIs being preconfigured in/monitored by Germain (and [other KPIs](/main/salesforce-monitoring-kpis.md) already available)
  * PlatformEventUsage
    * Custom Log Objects
    * LogEvent\_\_c (This is new one will be available after 05/13/2022)
    * System\_Error\_\_c
  * Metadata/Settings
    * CustomLabel
    * Custom Metadata Objects
    * Custom Setting Objects
  * Other objects like
    * AsyncApexJob
    * FlowInterview
* Dashboards/portlets

![Salesforce logging](https://mintcdn.com/germain-ux/pVzDI00ZTP9hWmsT/images/main/08-30-22-release-notes/image-20220901-141642.png?fit=max\&auto=format\&n=pVzDI00ZTP9hWmsT\&q=85\&s=13881d6f6cb09302ce4d47b4f2c6c460)

Salesforce logging - GermainUX

![a42e5ea7-8291-48d8-aee9-051bb523adda#media-blob-url=true\&id=e0d6f932-6b99-400f-b866-8c0abb71e8dd\&contextId=12378\&collection=](https://mintcdn.com/germain-ux/pVzDI00ZTP9hWmsT/images/main/08-30-22-release-notes/a42e5ea7-8291-48d8-aee9-051bb523adda-media-blob-url-true-id-e0d6f932-6b99-400f-b866-8c0abb71e8dd-contextId-12378-collection.png?fit=max\&auto=format\&n=pVzDI00ZTP9hWmsT\&q=85\&s=8d6b97374212f9f8509af78e2f40bf54)

Salesforce Log Apex - GermainUX

![9685eaa1-a170-4b8f-b6f6-3c131a7cdad4#media-blob-url=true\&id=780b4f4f-708f-4cd8-bdf0-c05012fb9cb3\&contextId=12378\&collection=](https://mintcdn.com/germain-ux/pVzDI00ZTP9hWmsT/images/main/08-30-22-release-notes/9685eaa1-a170-4b8f-b6f6-3c131a7cdad4-media-blob-url-true-id-780b4f4f-708f-4cd8-bdf0-c05012fb9cb3-contextId-12378-collection.png?fit=max\&auto=format\&n=pVzDI00ZTP9hWmsT\&q=85\&s=cf7a198673907e238dcbadfc482d067e)

Salesforce system error - GermainUX

#### 2. Enhancement: Click Duration Breakdown

Time breakdown of a User Click, from the browser to the backend application and database of Salesforce.com.

![Salesforce click analysis](https://mintcdn.com/germain-ux/pVzDI00ZTP9hWmsT/images/main/08-30-22-release-notes/image-20220829-194536.png?fit=max\&auto=format\&n=pVzDI00ZTP9hWmsT\&q=85\&s=1a03a59b2253fca8f5b9627bf963d587)

Salesforce click analysis - GermainUX

#### 3. Enhancement: Alerts when a Salesforce Case (in this example, Cases are Credit Card or Membership Orders) stays in “submitted” status longer than 30 minutes

This client required alerts whenever a Case in Salesforce (related to Credit Card or Membership Orders) remained in a 'submitted' status for over 30 minutes.

Problem: The client previously relied on a VB script to execute the following SOQL query and monitor the status of the Cases, but this approach proved ineffective due to various reasons.

Solution: Germain now runs the following two SOQL queries against the Salesforce database every minute and stores the results in Germain datamart. Subsequently, Germain generates an event whenever it detects a change to the Credit Card or Membership Order status based on the execution of a predefined rule.

This enhancement is not specific to Salesforce, thus the same mechanism and approach can be applied to data stored in other data sources of any other application.

Credit Card Cases in Submitted Status for more than 30 minutes:

| ID | Timestamp | Case No# | Status |
| - | - | - | - |
| sergd561234432gfsd | 2022-08-31 09:54:05 | 234t5w453 | Submitted |
| bgdfyhbdserfas5vs6 | 2022-08-31 09:54:06 | 1342214jk6 | Submitted |

* SOQL Statement to check on Credit Card staying in Submitted status for more than 30 minutes

SELECT Id, CaseNumber, Siebel\_Id\_\_c, Status, Partner\_\_c, System\_Category\_\_c, Type\_\_c, Sub\_Type\_\_c, Payment\_Frequency\_\_c, CreatedDate \
&#x20;from Case \
&#x20;where Status = 'Submitted' \
&#x20;and Type\_\_c = 'Billing/Payment Maintenance' \
&#x20;and Sub\_Type\_\_c like 'Credit Card%' \
&#x20;and SR\_Number\_\_c = null \
&#x20;and CreatedDate >= 2022-01-06T00:00:00Z \
&#x20;ORDER BY Type\_\_c, Sub\_Type\_\_c, CreatedDate DESC

* SOQL Statement to check on Membership Orders staying in Submitted status for more than 30 min

SELECT Id, CaseNumber, Siebel\_Id\_\_c, Status, Partner\_\_c, RecordType.name, System\_Category\_\_c, Type\_\_c, Sub\_Type\_\_c, Payment\_Frequency\_\_c, CreatedDate \
&#x20;from Case \
&#x20;where Status = 'Submitted' \
&#x20;and Type\_\_c = 'Program Maintenance' \
&#x20;and Sub\_Type\_\_c in ('Membership Enrollment','Membership Renewal','Renewal with Update') \
&#x20;and SR\_Number\_\_c = null \
&#x20;and CreatedDate >= 2022-01-01T00:00:00Z \
&#x20;ORDER BY Type\_\_c, Sub\_Type\_\_c, CreatedDate DESC

* Rule

> **sfdc-document-change-status.drl**
>
> ```java sfdc-document-change-status.drl theme={null}
> package com.germainsoftware.apm.analytics.audit;
>
> dialect "mvel"
>
> import com.germainsoftware.apm.data.*;
> import com.germainsoftware.apm.data.model.*;
> import com.germainsoftware.apm.storage.documentAudit.DocumentChange;
> import java.time.*;
>
> global org.slf4j.Logger logger;
> global com.germainsoftware.apm.storage.documentAudit.DocumentAuditContext context;
>
> /*rule "Document received"
> when
>   $update : DocumentChange( documentType == "Test-Document", path == "status" )
> then
>   logger.info("Value changed from '{}' to '{}' for {}", $update.oldValue, $update.value, $update.documentId);
> end*/
>
> rule "Status Change to Submitted"
> when
>   $update : DocumentChange( documentType == "Test-Document", path == "status", value == "Submitted" )
> then
>   logger.info("Value changed to submitted: {}", $update.documentId);
>
>   var tx = new GenericTransaction();
>   tx.name = $update.documentType;
>   tx.type = "Test:Status Change";
>   tx.timestamp = $update.timeCreated;
>   tx.status = GenericTransaction.Status.IN_PROGRESS;
>   tx.sequence = $update.documentId;
>   context.storage.insertFact(tx);
>
>   retract($update);
> end
>
> rule "Status Change from Submitted"
> when
>   $update : DocumentChange( documentType == "Test-Document", path == "status", oldValue == "Submitted" )
> then
>   logger.info("Value changed from submitted: {}", $update.documentId);
>
>   var filter = String.format("type == 'Test:Status Change' && sequence == '%s'", $update.documentId);
>   var res = context.highLevelQuery.find("GenericTransaction", filter);
>   if (res.isEmpty()) {
>     logger.warn("No previous status change found for: {}", $update.documentId);
>     return;
>   }
>
>   var tx = (GenericTransaction)res.get(0);
>   tx.status = GenericTransaction.Status.COMPLETED;
>   tx.duration = DateTimeUtils.computeDuration(tx.timestamp, $update.timeCreated);
>   tx.update = true;
>   context.storage.updateFact(tx);
>
>   retract($update);
> end
> ```

#### 4. Enhancement: Aura Error “Sorry to interrupt”

Germain captures (records, enables client replay of the recorded session, provides business impact analysis, etc.) whenever a Salesforce user encounters this error message:

![Salesforce “Sorry to Interrupt”](https://mintcdn.com/germain-ux/pVzDI00ZTP9hWmsT/images/main/08-30-22-release-notes/image-20220829-201347.png?fit=max\&auto=format\&n=pVzDI00ZTP9hWmsT\&q=85\&s=2278395c5ccff427cf0cf8e49b8c8e3a)

Salesforce “Sorry to Interrupt” - GermainUX

and makes it available on Germain’s RCA screen:

![08/30/22 Release Notes: 4. Enhancement: Aura Error “Sorry to interrupt”](https://mintcdn.com/germain-ux/pVzDI00ZTP9hWmsT/images/main/08-30-22-release-notes/image-20220829-201433.png?fit=max\&auto=format\&n=pVzDI00ZTP9hWmsT\&q=85\&s=26d0567599c1e598a3697bb8d25600ae)

#### 5. Enhancement: Capture External Domain

Now, when a mouse click occurs on a button, link, or image that directs to an external domain, Germain assigns that external domain as the 'target,' allowing for analytics derivation and search functionalities.

Example of a click routing the Salesforce user to an external domain:

![fca104ab-87df-446b-a08b-a8375bbe81db#media-blob-url=true\&id=d0a1ff0c-488f-43bd-af2a-cd97f1928387\&contextId=12508\&collection=](https://mintcdn.com/germain-ux/pVzDI00ZTP9hWmsT/images/main/08-30-22-release-notes/fca104ab-87df-446b-a08b-a8375bbe81db-media-blob-url-true-id-d0a1ff0c-488f-43bd-af2a-cd97f1928387-contextId-12508-collection.png?fit=max\&auto=format\&n=pVzDI00ZTP9hWmsT\&q=85\&s=acbd9f00e3ed3848cb5f9320ab14874f)

#### 6. Enhancement: “Click Name”

This feature generates a 'name' for each click performed by a user on Salesforce. The naming convention is configurable.

![08/30/22 Release Notes: 6. Enhancement: “Click Name”](https://mintcdn.com/germain-ux/pVzDI00ZTP9hWmsT/images/main/08-30-22-release-notes/image-20220829-194051.png?fit=max\&auto=format\&n=pVzDI00ZTP9hWmsT\&q=85\&s=0b57f8b56bed7721c978a9a23d405884)

## Monitoring & Analytics - Smart Insights Daily Summary

### Description

In addition to receiving individual email alert whenever a kpi is exceeding SLA, you can receive a summary email once per day that summarizes all the kpi that have exceeded SLA that day.

Example: @ Germain, we receive daily summary email that looks like this helping us identify the biggest variations that occurred that day, variations relative to what happened last week, last month, last quarter, last year. currently \~1100 kpi/sla are being analyzed for any given cloud instances that we maintain. This Daily Summary email comes in addition to any real-time alert and automation that get automatically triggered and processed by Germain.

Last but not least, these 1100 KPIs are of various natures: Technology, Process, User or Business. By default, we just enable our Smart Insight engine for all active KPIs.

![08/30/22 Release Notes: Monitoring & Analytics - Smart Insights Daily Summary](https://mintcdn.com/germain-ux/pVzDI00ZTP9hWmsT/images/main/08-30-22-release-notes/image-20220902-164538.png?fit=max\&auto=format\&n=pVzDI00ZTP9hWmsT\&q=85\&s=c1777d2aa1a3198e806d22c3d20afd04)

### Configure / example

* Automation > Alerts > analytical-sla-alert

![08/30/22 Release Notes: Configure / example](https://mintcdn.com/germain-ux/npHkPTFCfiH3hzwe/images/main/configure-sla/image-20220902-161900.png?fit=max\&auto=format\&n=npHkPTFCfiH3hzwe\&q=85\&s=d3438e208b72d917be57a21e55805211)

* Analytics > SLA > Smart Insights SLA - Day

![08/30/22 Release Notes: Configure / example, image 2](https://mintcdn.com/germain-ux/npHkPTFCfiH3hzwe/images/main/configure-sla/image-20220902-161534.png?fit=max\&auto=format\&n=npHkPTFCfiH3hzwe\&q=85\&s=27276e4d0f37b693f32c25c2be770872)

## Maintenance - Document Audit (enh)

### Description

Here are four use cases illustrating how clients benefit from the Document Audit mechanism in Germain:

### Use Case 1: Data Audit Trail

Track changes / auditing any Structured Data (records) in any external system (e.g. via REST, SQL, SOAP, etc)

### Use Case 2: Business Data Status

Track how long a record stays in a specific state.

Examples

* Time to respond to a ticket
* Time to resolve a service request
* Alerts when a Case (in this example, Cases are Credit Card or Membership Orders) stays in “submitted” status longer than 30 minutes.
  * Germain runs every minute, these 2 SOQL (below) against the application database. Stores the result into Germain datamart. Then Germain generates an event whenever it detects a change to the Credit Card or Membership Order via the execution of a Rule (below)
  * SOQL Statement to check on Credit Card staying in Submitted status for more than 30 minutes \
    &#x20;SELECT Id, CaseNumber, Id\_\_c, Status, Partner\_\_c, System\_Category\_\_c, Type\_\_c, Sub\_Type\_\_c, Payment\_Frequency\_\_c, CreatedDate \
    &#x20;from Case \
    &#x20;where Status = 'Submitted' \
    &#x20;and Type\_\_c = 'Billing/Payment Maintenance' \
    &#x20;and Sub\_Type\_\_c like 'Credit Card%' \
    &#x20;and SR\_Number\_\_c = null \
    &#x20;and CreatedDate >= 2022-01-06T00:00:00Z \
    &#x20;ORDER BY Type\_\_c, Sub\_Type\_\_c, CreatedDate DESC
  * SOQL Statement to check on Membership Orders staying in Submitted status for more than 30 min \
    &#x20;SELECT Id, CaseNumber, Siebel\_Id\_\_c, Status, Partner\_\_c, RecordType.name, System\_Category\_\_c, Type\_\_c, Sub\_Type\_\_c, Payment\_Frequency\_\_c, CreatedDate \
    &#x20;from Case \
    &#x20;where Status = 'Submitted' \
    &#x20;and Type\_\_c = 'Program Maintenance' \
    &#x20;and Sub\_Type\_\_c in ('Membership Enrollment','Membership Renewal','Renewal with Update') \
    &#x20;and SR\_Number\_\_c = null \
    &#x20;and CreatedDate >= 2022-01-01T00:00:00Z \
    &#x20;ORDER BY Type\_\_c, Sub\_Type\_\_c, CreatedDate DESC
  * Rule

The rule file `sfdc-document-change-status.drl` is shown in full earlier on this page.

### Use Case 3: User Behavior Analytics

Collect statistics on User behavior

Examples:

* Times a User edits a record
* Most prolific editors
* etc.

### Use Case 4: Alert on Content

Alert based on content of document fields;

Example:

* Look for keywords that trigger alerts / events in a system.

And here are [more details](/main/document-audit.md) about Document Audit feature.

## Get Help

> **[Contact GermainUX Support](/main/support.md)**
>
> The Germain Team can help you set this up.

> **Can't find what you need?**
>
> Search all GermainUX docs with **Ctrl + K**, or use the feedback buttons at the bottom of this page to tell us what is missing.

The content of this document is proprietary to GERMAIN SOFTWARE.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.