Examples
Pairing related data streams
Define the Cost Function
Scoring data point similarity
Define the Pair Function
Decide what happens on match
Configuration Considerations
Tips for reliable matching
Configure Stream Correlation
Stream Correlation links related data points from two sources when a unique correlation ID cannot be generated, propagated, or retrieved.Examples
For example, it can associate:
Instead of requiring an exact identifier, GermainUX uses a customizable cost function to evaluate potential matches. The function can compare timestamps, durations, URLs, users, servers, transaction names, or other shared attributes.
The lower the calculated cost, the more likely the two data points represent the same transaction. A cost of
0 indicates an exact match according to the configured criteria.
Use with ID-Based Correlation
Stream Correlation can complement ID-Based Correlation by filling gaps where correlation headers or IDs cannot pass through part of the transaction path. For example, GermainUX may use ID-Based Correlation across most application services while using Stream Correlation to connect a browser request with a backend transaction when the web server does not expose or preserve the correlation header. Cost and pairing functions are fully customizable for each use case.Configuration Example
The following example correlates two streams from a generic web application:Create a Stream Correlation Scenario

Stream Correlation Example for Siebel CRM Log - GermainUX
1 Open Correlation Configuration
Go to: Germain Workspace -> Left Menu -> Settings → Analytics -> Correlation Under Stream Correlation Scenarios, select the Add icon.2 Name the Scenario
Enter a unique name for the Stream Correlation scenario, then select Next.3 Configure the Left Stream
The left stream represents the first source of data to correlate. Configure:
Select Next when the stream is configured.
4 Configure the Right Stream
Repeat the same configuration for the second data source. For this example, select the KPI containing the web-server access-log transactions. Use a compatible partition key and ordering field so records from both streams can be evaluated together.Define the Cost Function
The cost function receives one data point from each stream and returns a numeric value representing their similarity:- A lower cost represents a stronger match.
- A cost of
0represents an exact match. - A fixed skip cost lets the algorithm leave a record unmatched when no suitable pair exists.
- Request name or URL
- HTTP method
- User or session
- Application or server
- Response status
- Transaction type
- Payload or business attributes
Define the Pair Function
The pair function determines what GermainUX should do after matching two data points. In this example, GermainUX copies the backend access-log transaction sequence onto the UX request. This creates a persistent link that can be displayed in the Analysis view.- Copy identifiers or attributes between records.
- Update one or both matched data points.
- Create a new correlated event.
- Store additional context for dashboards or investigations.
- Link frontend and backend transactions for tracing.
Activate the Scenario
Save the completed Stream Correlation scenario. The GermainUX Analytics service will begin processing incoming data from the selected streams using the configured partitioning, ordering, cost, and pair functions.Configuration Considerations
For reliable results:- Choose partition keys that reduce the number of unrelated candidate matches.
- Order both streams consistently, usually by timestamp.
- Normalize units before comparing values such as duration.
- Set the skip cost low enough to prevent weak or incorrect matches.
- Include enough matching criteria to distinguish concurrent transactions.
- Test the scenario with known transactions before relying on it in production.
Get Help
Contact GermainUX Support
The GermainUX team helps you get up and running faster, empower your team, turn data into actionable insights, and optimize performance to deliver measurable business outcomes.
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.

