Enable SimpCon Pull Producer
Overview
This extension retrieves data from an external source system and publishes the data to a Data Streaming Service topic. The extension requires connection details for the source system, including the endpoint URL and authentication credentials. Optional filters, such as assignment groups and domain-separated company names, can be configured to limit the data processed by the extension.
The extension prevents unintended data reingestion after Kubernetes restarts by using a stored date and time offset. The extension compares the value of the DX_ENV_USER_START_DATETIME environment variable with the current UTC date and time.
- During a user-initiated start or restart, the stored value should be within one hour of the current UTC time.
- During an automatic Kubernetes restart, the environment variable typically contains a previously cached start time that is more than one hour old.
- The comparison helps prevent accidental reprocessing of data after an unexpected container restart.
The extension assumes that both the user start date and time and the current date and time use UTC. The one-hour threshold might not be appropriate for all deployment environments and should be evaluated based on operational requirements.
Chainguard Migration
Starting with version 3.0.0, extensions created from this template use the Simplified Connectors framework running on a Chainguard-based Tomcat image.
Platform Service Interactions
The extension transforms and forwards requests to the following Data Streaming Service topic:
Configure the Extension
The following environment variables must be provided to the container:
Variable | Default | Comments |
|---|---|---|
DX_ENV_ENVIRONMENT (string) | | The type of environment the extension |
is running in: LOCAL, DEV, or PROD | | |
DX_ENV_PV_MOUNT (string) | /var/lib/misc | The path where the extension |
state (state.properties) will be deployed on, always /var/lib/misc | | |
DX_ENV_OU_KEY (string) | | OU Tenant Key |
DX_ENV_OU_BAC_ID (string) | | BAC id of the client |
DX_ENV_OU_ES_INSTANCE (string) | | The Elasticearch instance the messages |
are supposed to go to on the Consumer side | | |
DX_EXT_CDI_TOOL_SOURCE (string) | | Client Tool Mapping value |
DX_EXT_CDI_CUSTOMERCODE (string) | | Client Tool Mapping value |
DX_EXT_SOURCE_QUERY_URL (string) | | SMT URL to query for ticket state |
DX_EXT_SOURCE_USER (string) | | SMT Username used for Basic Authentication |
DX_EXT_SOURCE_PW (string) | | SMT Password used for Basic Authentication |
Results from Execution
The extension retrieves data from ServiceNow and publishes the data to a Data Streaming Service Kafka topic. Because the extension processes data asynchronously, no application-level response code is returned.
The extension:
- Processes messages in batches at intervals defined by the configured environment variables.
- Runs continuously as a containerized application.
- Uses Kubernetes liveness and readiness probes to report runtime health status.
How the extension works
This application is a Simplified Connector Producer designed to run as an extension instance in the Integrated Artificial Intelligence for IT Operations platform. The application runs as a container in Kubernetes and follows a producer workflow that retrieves records from the source system and publishes them to a Data Streaming Service topic
Deploy the extension
The extension is intended for deployment and configuration through the Integrated Artificial Intelligence for IT Operations user interface for a specific Organizational Unit (OU) or Compute Zone.
Local execution is intended only for developers who are familiar with the extension codebase.
Run the extension locally
Build the container image
- Open a terminal session.
- Navigate to the extension directory.
Build the docker image
Start the container
Run the container and provide the required environment variables.
Monitor the container
View running containers
View container logs
Troubleshoot the container
- Identify the container ID.
- Open a shell session in the container.
Support
The Extensions Development Team owns and maintains this extension.