> ## 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.

# 12/31/22 Release Notes

> Highlights of the GermainUX release of December 31, 2022, including automation features, maintenance fixes and monitoring and analytics updates.

> **[2022 Annual Report](#2022-annual-report)**
>
> Renewals and client highlights

> **[File Auto-download](#automation-file-auto-download)**
>
> Automation

> **[Selenium - Catch a failure](#automation-selenium-catch-a-failure)**
>
> Automation

> **[Connection Services](#maintenance-connection-services)**
>
> Maintenance

> **[Okta OAuth](#maintenance-okta-oauth)**
>
> Maintenance

> **[Real User Replay - Recording Length](#maintenance-real-user-replay-recording-length)**
>
> Maintenance

> **[Soc2 - Penetration Testing](#maintenance-soc2-penetration-testing)**
>
> Maintenance

> **[Team](#maintenance-team)**
>
> Maintenance

> **[Salesforce - Implicit Hints](#monitoring-%26-analytics-salesforce-implicit-hints)**
>
> Monitoring & Analytics

> **[Siebel 2021 & 2022 - End-2-end RCA](#monitoring-%26-analytics-siebel-2021-%26-2022-end-2-end-rca)**
>
> Monitoring & Analytics

> **[User Search](#monitoring-%26-analytics-user-search)**
>
> Monitoring & Analytics

> **[Vulnerabilities (fixed in December 2022)](#vulnerabilities-fixed-in-december-2022)**
>
> Security patches for December

## 2022 Annual Report

Happy New Year! We're thrilled to share that 91% of our clients renewed with us for 2 or 3 years, upfront and no questions asked. This is a great testament to the value and satisfaction they've experienced with our platform and support.

Some facts about us in 2022:

* **91%** of our Clients have renewed for **2 or 3 years, upfront**. Customers include **leading organizations in the airline, banking, eCommerce, manufacturing, automotive, stock trading and healthcare industries.**
* **41% User growth** (IT Dev and Ops, User Support, Customer Loyalty, Sales and Marketing Ops)
* **\~6 billions/day** of analytics and automation processed by Germain.
* Our moto: **a customer benefit-centric approach at a fraction of the cost.**
* 100% bootstrapped. No Sales, No Marketing. 2x growth of our Product Team (Engineering, QA, Support).

![12/31/22 Release Notes: 2022 Annual Report](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20230105-175501.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=6fbde12ba7e20b246f41b790b669feed)

* Bio

![12/31/22 Release Notes: 2022 Annual Report, image 2](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20230103-203949.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=9927f34571d1f4c5a94bc87c034a3bd4)

## Automation - File Auto-download

**Benefit**

How many times do you feel you need to look into a file on a server and it is either hard to find or already purged? Germain automates that process so you dont need to spend anytime looking for that file.

You can schedule the download of any file (e.g. Siebel, Java, etc) and Germain will hand it over to you via an email and Germain Workspace.

### Example

On Germain RCA screen, Click on "Cloud" icon next to filename to initiate file upload.

![12/31/22 Release Notes: Automation - File Auto-download](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20221230-044037.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=3f077e43cc449c8284daa66137cafa5f)

![12/31/22 Release Notes: Automation - File Auto-download, image 2](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20221230-044103.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=41d3a20dbc8781b9a02c573dcad036c1)

Germain alerts you when it has retrieved the log file from the application server and you can download the log file by clicking on the "Download" link:

![12/31/22 Release Notes: Automation - File Auto-download, image 3](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20221230-044123.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=f3be43b3798dab3dbd3084945c6e5226)

or Download the log file from the RCA screen

![12/31/22 Release Notes: Automation - File Auto-download, image 4](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20221230-044143.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=2e892b32a1a813a8d7b30d4392434e39)

## Automation - Selenium - Catch a failure

### Use Case

**Issue** \
&#x20;Trying to capture an Exception/failure in a Synthetic scenario using Mvel won’t work (it is not supported):

```text theme={null}
try {
  wait.until(ExpectedConditions.elementToBeClickable(By.partialLinkText("Find Customer")));

  wait.until(ExpectedConditions.not(ExpectedConditions.presenceOfAllElementsLocatedBy(By.className("siebui-busy"))));
  log.info("**************************************************try****************");
} (Exception ex){
    log.info("**************************************************catch****************");
}
```

**Solution** \
&#x20;In more recent version of Germain, you can create these selenium scripts in Javascript (instead of Mvel):

![12/31/22 Release Notes: Use Case](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20230102-214735.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=f55b8931ec4b57adf00fb179e57b9a78)

Full script

> **synthetic\_scenario\_script.txt**
>
> ```java synthetic_scenario_script.txt theme={null}
> OffsetDateTime startTime = OffsetDateTime.now();
>
> String v_server_protocol = "https://";
> String v_server_path = "/fantasy-classic/team";
> String v_fact_category = "FIFA:Synthetic Actions";
> String v_fact_name = "Login Action";
> List<String> v_action_xpaths = 
> [
>     ["get_page", "","Get page...", true, 0],
>     ["click", "//*[@id=\"onetrust-accept-btn-handler\"]","Accept Cookies...", true, 30],
>     ["click", "//*[@id=\"root\"]/div/div/div/button","Close welcome message...", true, 30],
>     ["click", "//*[@id=\"root\"]/header/div[3]/div[2]/div/button/img","Open login prompt...", true, 30],
>     ["click", "(//button[contains(text(), 'SIGN IN')])[last()]","Navigate to login page...", true, 30],
>     ["fill", "//*[@id=\"email\"]","Filling username...", true, 30, credentials.username],
>     ["fill", "//*[@id=\"password\"]","Filling password...", true, 30, credentials.password.value],
>     ["click", "//*[@id=\"loginFormSubmitBtn\"]","Click login...", true, 30],
>     ["contains", "Leaderboard","Confirming login...", true, 30]
> ];
>
> def synthetic_action (v_params) {
>     //Instantiate webdriverwait
>     WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(v_params[4]));
>
>       //Get page
>     if (v_params[0] == "get_page") {
>         String base = String.format("%s%s%s", v_server_protocol, server.hostname, v_server_path);
>         driver.get(base);
>         return true;
>     } //Get page with authentication credentials
>     else if (v_params[0] == "get_page_with_auth") {
>         String base = String.format("%s%s:%s@%s%s", v_server_protocol, v_params[5], v_params[6], server.hostname, v_server_path);
>         driver.get(base);
>         return true;
>     } //Accept alert
>     else if (v_params[0] == "accept_alert") {
>         wait.until(ExpectedConditions.alertIsPresent());
>         driver.switchTo().alert().accept();
>         return true;
>     }  //Dismiss alert
>     else if (v_params[0] == "dismiss_alert") {
>         wait.until(ExpectedConditions.alertIsPresent());
>         driver.switchTo().alert().dismiss();
>         return true;
>     } //Construct xpath of contains search
>     else if (v_params[0] == "contains") {
>         v_params[1] = String.format("//*[contains(.,\"%s\")]", v_action_xpaths[i][1]);
>     }
>
>     List<WebElement> v_elements = [];
>     int v_status = 0;
>
>     for (int j = 0; j < v_params[4] * 2; j++) {
>         //Grab all elements matching specified xpath
>         v_elements = driver.findElements(By.xpath(v_params[1]));
>
>         //Chect to ensure interactivity of element(s) except for text search (contains)
>         if (v_params[0] == "contains") {
>             v_status = v_elements.size();
>         } else {
>             foreach (l : v_elements) {
>                 if (l.isEnabled() && l.isDisplayed()) {
>                     v_status = v_status + 1;
>                 }
>             } 
>         }
>
>         //Process action on found element(s) when ready
>         if (v_elements.size() > 0 && v_elements.size() == v_status) {
>             if (v_params[0] == "click") {
>                 foreach (k : v_elements) {
>                     driver.executeScript("arguments[0].click();", k);
>                 }
>             } else if (v_params[0] == "fill") {
>                 driver.findElement(By.xpath(v_params[1])).clear();
>                 driver.findElement(By.xpath(v_params[1])).sendKeys(v_params[5]);
>             }
>             return true;
>         }
>         Thread.sleep(500);
>     }
>     return false;
> }
>
> // Create transaction
> GenericTransaction tx = new GenericTransaction();
> tx.type = v_fact_category;
> tx.name = v_fact_name;
> tx.timestamp = startTime;
> tx.user.name = credentials.username;
>
> // Perform validation checks and actions
> for (int i=0; i < v_action_xpaths.size(); i++) {
>     // Print description of each step
>     log.info(v_action_xpaths[i][2]);
>
>     //Record status of latest action
>     tx.success = synthetic_action(v_action_xpaths[i]);
>
>     //Halt execution and exit if flag is set to true on failure of current action
>     if (tx.success == false && v_action_xpaths[i][3] == true) {
>         i = v_action_xpaths.size();
>     }
> }
> log.info("{} Status: {}", v_fact_name, tx.success);
> // Compute time taken and log transaction to DB
> tx.duration = DateTimeUtils.computeDuration(startTime, OffsetDateTime.now());
> datamart.insert(tx, context);
> ```

Explanation

> **synthetic\_scenario\_script\_guide.txt**
>
> ```text synthetic_scenario_script_guide.txt theme={null}
> ------ACTIONS AND COMPULSORY INPUT PARAMETERS
> click: To perform a click action on element(s) selected by the specified xpath
> Parameters: *action, *path, *description, *exit on failure, *default
>
> fill: Clears the input in the element specified by the xpath and fills it with passed string
> Parameters: *action, *path, *description, *exit on failure, *timeout, *input_data
>
> contains: Performs a text search on the HTML document using the specified string
> Parameters: *action, *search_text, *description, *exit on failure, *timeout
>
> get_page: This gets the scenario URL and is expected to be the first step
> Parameters: *action, *blank, *description, *exit on failure, *timeout
>
> get_page_with_auth: This gets the scenario URL and passes the login credentials specified. This is expected to be the first step
> Parameters: *action, *blank, *description, *exit on failure, *timeout, *username, *password
>
> accept_alert: This waits for and accepts a confirmation prompt
> Parameters: *action, *blank, *description, *blank, *timeout
>
> dismiss_alert: This waits for and rejects a confirmation prompt
> Parameters: *action, *blank, *description, *blank, *timeout
>
>
> -----SAMPLE SYNTHETIC STEPS
> ["get_page", "","Get page...", true, 0],
> ["get_page_with_auth", "","Login in via popup alert...", true, 0, credentials.username, credentials.password.value],
> ["click", "//*[@id=\"onetrust-accept-btn-handler\"]","Accept Cookies...", true, 30],
> ["click", "(//button[contains(text(), 'SIGN IN')])[last()]","Navigate to login page...", true, 30],
> ["fill", "//*[@id=\"email\"]","Filling username...", true, 30, credentials.username],
> ["fill", "//*[@id=\"email\"]","Filling username...", true, 30, credentials.password],
> ["contains", "Leaderboard","Confirming login...", true, 30],
> ["accept_alert", "OK","Clicking alert prompt...", true, 30],
> ["dis_alert", "OK","Clicking alert prompt...", true, 30]
>
> --------Parameters:
> Action: The predefined keyword of the action to be taken
>
> Path: The xpath of the element(s) relating to the action
>
> Description: The description that will be written to the logs for review/debugging/troubleshooting
>
> Exit on failure: If the defined action fails (i.e. returns false) and this value is set to true, the script scenario will exit immediately and write failure to DB otherwise if set to false, the scenario will gracefully fail forward and ignore the failure.
>
> Timeout: The maximum time the action will run for before being gracefully terminated and logged to the DB as failed
> ```

## Maintenance - Connection Services

### Description

Connection Services is there to help connect the dot between Germain Configuration Objects, so it is easier for administrators to understand what is configured and how config objects relate to one another.

### Examples

![12/31/22 Release Notes: Maintenance - Connection Services](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20221230-040638.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=e8d1bc64e53e072245779d85c988163e)

![12/31/22 Release Notes: Maintenance - Connection Services, image 2](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20221230-040718.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=ce8200182959899f8666883a0e6de10d)

![12/31/22 Release Notes: Maintenance - Connection Services, image 3](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20221230-040756.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=677c4be1d0a75081c31126606ec4378d)

![12/31/22 Release Notes: Maintenance - Connection Services, image 4](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20221230-040745.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=28f2bbbe1ba8a70d8366bc47bdfdc9dd)

## Maintenance - Okta OAuth

### Description

Okta helps manage and secure user authentication into applications, and for developers to build identity controls into applications, website web services and devices and is now available as an integration in Germain

More details about Okta: [https://www.okta.com/](https://www.okta.com/)

Configure:

[Okta User Management](/main/okta-oauth-integration-with-germain.md)

## Maintenance - Real User Replay - Recording Length

### Description

You can now configure Germain so the Real User Replay gets only recorded for a fix length e.g. 1 hour

### Configuration

Germain RUM Ext/JS’s InitScript parameter to configure:

```text theme={null}
settings.constants.staleSessionTimeoutMillis = 1 * HOURS;
```

```text theme={null}
settings.constants.idleSessionTimeoutMillis = 8 * HOURS;
```

```text theme={null}
settings.constants.maxSessionDuration = 24 * HOURS;
```

Note: if these 3 parameters are not available, you can add them on starting with Germain 2022.5

### More details

[User Session Monitoring, Replay & 6 Heatmaps](/main/user-monitoring-and-replay.md)

## Maintenance - Soc2 - Penetration Testing

In addition to having third party auditor do penetration testing of Germain, we now have it part of our release process (in addition to the weekly Vulnerability check of our Code and Docker images)

Example

The full penetration testing report is available on request from [GermainUX Support](/main/support.md).

## Maintenance - Team

### Description

Team is a new object and concept in Germain, enabling better management of access to Dashboards, Data, and Alerts for a specified set of User(s).

* Technical/Business flags are now set at the Team level (previously set at the user level).
* Users have access to all Dashboards assigned to the Team they belong to.
* When a user is removed from a Team, they lose access to any Dashboards associated with that Team.t Team.

More details about [Teams](/main/teams.md) and Distribution List.

### Configure

Left Menu > System > Auth Settings > Team

![12/31/22 Release Notes: Configure](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20221212-220710.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=ccc1852c2ef912afcd0d6296e8440801)

## Monitoring & Analytics - Salesforce - Implicit Hints

### Description

Implicit hints implemented in Germain for all below Germain’s SFDC KPIs and UI objects.

* Salesforce Outbound HTTP Request
* Salesforce Instance Status
* Salesforce Flow Interview([https://developer.salesforce.com/docs/atlas.en-us.202.0.api\_meta.meta/api\_meta/meta\_listview.htm](https://developer.salesforce.com/docs/atlas.en-us.202.0.api_meta.meta/api_meta/meta_listview.htm) )
* Salesforce List View
* Salesforce Platform Event Usage Metric
* Salesforce Resource Usage
* Done for the following Germain’s KPIs: \
  &#x20;Salesforce Outbound HTTP Request \
  &#x20;Salesforce User Click \
  &#x20;Salesforce Lightning User \
  &#x20;Salesforce Apex Class \
  &#x20;Salesforce Apex Trigger \
  &#x20;Salesforce Health Check \
  &#x20;Salesforce Setup Audit \
  &#x20;Salesforce Process Approval \
  &#x20;Salesforce Flow Custom Action \
  &#x20;Salesforce apex Custom Action \
  &#x20;Salesforce External Service Custom Action \
  &#x20;Salesforce Process Rule \
  &#x20;Salesforce Flow Coverage \
  &#x20;Salesforce Apex Code Coverage \
  &#x20;Salesforce Flow Interview \
  &#x20;Salesforce List View \
  &#x20;Salesforce Instance Status \
  &#x20;Salesforce Resource Usage \
  &#x20;Salesforce Platform Event Usage Metric \
  &#x20;Salesforce Records Count \
  &#x20;Salesforce UI Switch \
  &#x20;Salesforce Page Performance Count \
  &#x20;Salesforce Browser Performance Count \
  &#x20;Salesforce Cron Job \
  &#x20;Salesforce Code Exception \
  &#x20;salesforce Code Debug Event \
  &#x20;salesforce Code Execution \
  &#x20;Salesforce Record Change Event \
  &#x20;Salesforce Report Anomaly Event \
  &#x20;Salesforce Api Event \
  &#x20;Salesforce Bulk Api Result Event \
  &#x20;Salesforce Classic Record Event \
  &#x20;Salesforce Concurrent Long-running Apex Error Event \
  &#x20;Salesforce Credential Stuffing Event \
  &#x20;Salesforce Lightning List View Event \
  &#x20;Salesforce Lightning Record Event \
  &#x20;Salesforce Log Generic Event \
  &#x20;Salesforce Login As Event \
  &#x20;Salesforce Login Event \
  &#x20;Salesforce Logout Event \
  &#x20;Salesforce Report Execution Event \
  &#x20;Salesforce Session Hijacking Event

More details about [Insights for Salesforce Cloud](/main/salesforce-monitoring.md).

![12/31/22 Release Notes: Monitoring & Analytics - Salesforce - Implicit Hints](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20230108-040756.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=496492c10525902b31935b4a8a0b284a)

![12/31/22 Release Notes: Monitoring & Analytics - Salesforce - Implicit Hints, image 2](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20230108-040804.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=443bedb5e9dd8ffa4829ef49d2942f48)

![12/31/22 Release Notes: Monitoring & Analytics - Salesforce - Implicit Hints, image 3](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20230108-040831.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=386cadca81b2a954ca274296c0a14689)

![12/31/22 Release Notes: Monitoring & Analytics - Salesforce - Implicit Hints, image 4](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20230108-040836.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=59814ebf51a5ebe62e400c6f19be6f97)

## Monitoring & Analytics - Siebel 2021 & 2022 - End-2-end RCA

### Description

Germain provides support for end-to-end root-cause analysis of Siebel Transactions, involving tracing and correlating transactions executed across different layers of the Siebel Application.

For instance, when a user interacts with the Siebel UI, Germain can analyze and correlate various components such as Browser's Javascript/eScript, HTTP request(s), Object Manager Transaction, Workflow, EAI, Database SQL, and other relevant calls.

Note: Germain has consistently offered this capability since our 2014 launch. However, the level of tracing and correlation may vary depending on the version of Siebel or other technologies involved.

More details about .

## Monitoring & Analytics - User Search

### Description

Do you want to understand what searches your users perform while using your app?

Or do you want to identify when users are unable to find something and possibly automatically enrich an AI Chatbot with more content?

In Germain, there are various methods to identify user searches and determine which searches were successful and which ones yielded no results. Here are two different examples:

### Identify 'no result' searches on Salesforce Cloud.

![Count of searches leading to no result on Salesforce Cloud](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20240223-175305.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=70249df4aa10ce0d238b5fef4adee648)

Count of searches leading to no result on Salesforce Cloud - GermainUX

![User not finding what she/he is looking for on Salesforce Cloud](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20240223-174828.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=cf0615e04effcaac1626a86c0d86d0bc)

User not finding what she/he is looking for on Salesforce Cloud - GermainUX

### Identify Searches on Oracle Siebel CRM

* Add Analysis portlet
  * KPI: “**User change**”
  * Measure: “**Count**”
  * Pivot: “**Page Title**” “**Field Value**”
  * Filters: "**Set by user**" = true & **Name** = "Change on input text"

![User Searches on Oracle Siebel CRM](https://mintcdn.com/germain-ux/_Gfc7adJi1KOPA8d/images/main/12-31-22-release-notes/image-20230103-010932.png?fit=max\&auto=format\&n=_Gfc7adJi1KOPA8d\&q=85\&s=e1054d5873d30a35e459f97d56545717)

User Searches on Oracle Siebel CRM - GermainUX

## Vulnerabilities (fixed in December 2022)

### Description

As part of our SOC2 compliance program, here are the security breaches that have been found in December, and patches to address those. We remain available to help you with these issues. If you have not already, you can create a ticket here: [https://germainux.atlassian.net/servicedesk/customer/portal/1](https://germainux.atlassian.net/servicedesk/customer/portal/1) or email us at [info@germainux.com](mailto:info@germainux.com)

| Vulnerability | Severity | Scope | Detected | Reviewed | Resolved | Affected versions | Fix implemented in | Link |
| - | - | - | - | - | - | - | - | - |
| \[[CVE-2022-40151](https://github.com/advisories/GHSA-f8cc-g7j8-xxpm)] | HIGH | xstream \[1.4.19] => \[1.4.20] | 10/29/2022 | 1/3/2023 | 1/3/2023 | \<= 2022.4 | 2022.3-55, 2022.4-40 | [https://nvd.nist.gov/vuln/detail/CVE-2022-40151](https://nvd.nist.gov/vuln/detail/CVE-2022-40151) |
| \[[CVE-2022-31690](https://github.com/advisories/GHSA-32vj-v39g-jh23)], \[[CVE-2022-31692](https://github.com/advisories/GHSA-mmmh-wcxm-2wr4)] | CRITICAL | spring-security-oauth2-jose \[5.6.5] => \[5.6.10] | 1/1/2023 | 1/3/2023 | 1/3/2023 | \<= 2022.4 | 2022.3-55, 2022.4-40 | [https://nvd.nist.gov/vuln/detail/CVE-2022-31690](https://nvd.nist.gov/vuln/detail/CVE-2022-31690) [https://nvd.nist.gov/vuln/detail/CVE-2022-31692](https://nvd.nist.gov/vuln/detail/CVE-2022-31692) |
| \[[CVE-2022-41881](https://github.com/advisories/GHSA-fx2c-96vj-985v)], \[[CVE-2022-41915](https://github.com/advisories/GHSA-hh82-3pmq-7frp)] | HIGH | netty-transport \[4.1.77] => \[4.1.86.Final] | 1/1/2023 | 1/3/2023 | 1/3/2023 | \<= 2022.4 | 2022.3-55, 2022.4-40 | [https://nvd.nist.gov/vuln/detail/CVE-2022-41881](https://nvd.nist.gov/vuln/detail/CVE-2022-41881) [https://nvd.nist.gov/vuln/detail/CVE-2022-41915](https://nvd.nist.gov/vuln/detail/CVE-2022-41915) |
| \[[CVE-2022-2048](https://github.com/advisories/GHSA-wgmr-mf83-7x4j)] | HIGH | jetty-io \[9.4.46] => \[9.4.50.v20221201] | 1/1/2023 | 1/3/2023 | 1/3/2023 | \<= 2022.4 | 2022.3-55, 2022.4-40 | [https://nvd.nist.gov/vuln/detail/CVE-2022-2048](https://nvd.nist.gov/vuln/detail/CVE-2022-2048) |
| [https://nvd.nist.gov/vuln/detail/CVE-2022-45046](https://nvd.nist.gov/vuln/detail/CVE-2022-45046) | CRITICAL | alpine \[3.16.2] => \[3.17.0] | 1/1/2023 | 1/4/2023 | 1/4/2023 | \<= 2022.4 | 2022.3-55, 2022.4-40 | [https://security.snyk.io/vuln/SNYK-ALPINE316-LIBTASN1-3173578](https://security.snyk.io/vuln/SNYK-ALPINE316-LIBTASN1-3173578) |
| \[[CVE-2022-23496](https://github.com/advisories/GHSA-c4pm-63cg-9j7h)] | HIGH | yauaa \[7.6.0] => \[7.9.0] | 12/11/2022 |   | 12/12/2022 | \<= 2022.4 | 2022.3.53, 2022.4.33 | [https://nvd.nist.gov/vuln/detail/CVE-2022-23496](https://nvd.nist.gov/vuln/detail/CVE-2022-23496) |
| \[[CVE-2022-40152](https://github.com/advisories/GHSA-3f7h-mf4q-vrm4)] | HIGH | woodstox-core \[6.2.7] => \[6.4.0] | 12/11/2022 |   | 12/12/2022 | \<= 2022.4 | 2022.3.53, 2022.4.33 | [https://nvd.nist.gov/vuln/detail/CVE-2022-40152](https://nvd.nist.gov/vuln/detail/CVE-2022-40152) |

### Germain 2022.3-55

#### Download:

`GermainAPMEngine-2022.3-55-binary.tar.gz` (no longer available) \
&#x20;`GermainAPMEngine-2022.3-55-binary.zip` (no longer available) \
&#x20;`GermainAPMServer-2022.3-55-binary.tar.gz` (no longer available) \
&#x20;`GermainAPMServer-2022.3-55-binary.zip` (no longer available) \
&#x20;`GermainAPMService-2022.3-55-binary.tar.gz` (no longer available) \
&#x20;`GermainAPMService-2022.3-55-binary.zip` (no longer available)

Docker:

public.ecr.aws/h0m9e4y5/germainapm-engines:2022.3-55 \
&#x20;public.ecr.aws/h0m9e4y5/germainapm-server:2022.3-55 \
&#x20;public.ecr.aws/h0m9e4y5/germainapm-services:2022.3-55

### Germain 2022.4-40

#### Download:

`GermainAPMEngine-2022.4-40-binary.tar.gz` (no longer available) \
&#x20;`GermainAPMEngine-2022.4-40-binary.zip` (no longer available) \
&#x20;`GermainAPMServer-2022.4-40-binary.tar.gz` (no longer available) \
&#x20;`GermainAPMServer-2022.4-40-binary.zip` (no longer available) \
&#x20;`GermainAPMService-2022.4-40-binary.tar.gz` (no longer available) \
&#x20;`GermainAPMService-2022.4-40-binary.zip` (no longer available)

#### Docker

public.ecr.aws/h0m9e4y5/germainapm-engines:2022.4-40 \
&#x20;public.ecr.aws/h0m9e4y5/germainapm-server:2022.4-40 \
&#x20;public.ecr.aws/h0m9e4y5/germainapm-services:2022.4-40

## 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.