SafetyTest Connector
This connector exchanges OMD data with a SafetyTest portal. Customer data including information about the planned resource is transmitted for all upcoming visits.
All data transfer between OMD and the SafetyTest portal is done over HTTPS (TLS), so data is encrypted in transit.
Two methods are provided, time-controlled and event-controlled.
Time-Controlled
Once a day (12:00 a.m.) all data for appointments from -48 h to +48 h for all resources is sent to SafetyTest.
Event-Driven
In the following case, an additional transfer is automatically triggered:
- One or more tasks for a resource are scheduled for today. This also includes the case that one or more orders are moved from one resource to another resource.
Changes to existing orders, planning, new unavailabilities or changes to the daily work pattern are not transmitted.
Requirements
- A SafetyTest portal with a role allowing the insert and update of customer data and resource access permissions.
- The portal endpoint must be configured with an
https://URL.
Available API
Important: call these endpoints over HTTPS in production so request parameters, credentials, and payload data are encrypted during transport.
Base hostnames:
- Production:
https://www.optimizemyday.com - Sandbox:
https://sandbox.optimizemyday.com
The application exposes two API groups:
- Connector operations under
/rest/v1/*(authenticated,adminrole). - Service info under
/info/*(unauthenticated).
Connector operations
Base path:
/omd-calendar-testandsmile/rest/v1
| Endpoint | Method | Query parameters | Description |
|---|---|---|---|
/push |
GET |
configId (required, integer) |
Processes pending messages in CalendarUpdate for the given configuration and pushes them to Test & Smile and SafetyTest. |
/upload |
GET |
configId (required, integer) |
Uploads all planned visits in the configured time window (hoursBack/hoursForward) for Test & Smile and SafetyTest. |
Responses:
200 OKwith a JSON log payload when processing completes.500 Server Errorwith a JSON log payload whenconfigIdis missing, invalid, or processing fails.
Examples:
GET /omd-calendar-testandsmile/rest/v1/upload?configId=123GET /omd-calendar-testandsmile/rest/v1/push?configId=123
Service info
Base path:
/omd-calendar-testandsmile/info
| Endpoint | Method | Description |
|---|---|---|
/version |
GET |
Returns plain text release version. |
/ (or any other /info/* path) |
GET |
Returns JSON with version, for example: { "version": "<release>" }. |
Configuring the generic calendar service
| Preference Name | Default | Description |
|---|---|---|
| calendar.generic.synchronize | false | Used to turn synchronization with the calendar on or off. |
| calendar.generic.checkResourceEmail | false | If true, only synchronize if the |
| calendar.generic.synchronize | false | Used to turn synchronization with the calendar on or off. |
| calendar.generic.checkResourceEmail | false | If true, only synchronize if the resource has an email address. |
Configuring the Test & Smile service
| Preference Name | Default | Description |
|---|---|---|
| calendar.testandsmile.on | true | Boolean value to indicate if the Test & Smile calendar connector is to be executed or not. |
| calendar.testandsmile.clear | true | Boolean value to indicate if the Test & Smile calendar connector will clear the CalendarUpdate entries when done. |
| calendar.testandsmile.serviceRootUri | The service URI of the Test & Smile portal. | |
| calendar.testandsmile.user | The account name with which the connection is established. | |
| calendar.testandsmile.password | The password with which the connection is established. | |
| calendar.testandsmile.hoursBack | 48 | The number of hours in the past up to which visits are considered for upload. Any visits older that that will not be processed. |
| calendar.testandsmile.hoursForward | 48 | The number of hours in the future up to which visits are considered for upload. Any visits later that that will not be processed. |
| calendar.testandsmile.logLevel | INFO | The log level used during upload and push. |
Configuring the SafetyTest service
| Preference Name | Default | Description |
|---|---|---|
| calendar.safetytest.on | false | Boolean value to indicate if the SafetyTest calendar connector is to be executed or not. |
| calendar.safetytest.clear | false | Boolean value to indicate if the SafetyTest calendar connector will clear the CalendarUpdate entries when done. |
| calendar.safetytest.serviceRootUri | The service URI of the SafetyTest portal. | |
| calendar.safetytest.user | The account name with which the connection to the SafetyTest portal is established. | |
| calendar.safetytest.password | The password with which the connection to the SafetyTest portal is established. | |
| calendar.safetytest.publicKey | The public key used during the validation of the user credentials. | |
| calendar.safetytest.hoursBack | 48 | The number of hours in the past up to which visits are considered for upload. Any visits older that that will not be processed. |
| calendar.safetytest.hoursForward | 48 | The number of hours in the future up to which visits are considered for upload. Any visits later that that will not be processed. |
| calendar.safetytest.logLevel | INFO | The log level used during upload and push. |
| omd.calendar.safetytest.accounts.excluded | Comma-separated list of account numbers to exclude from upload and push. |
Operational Semantics
Selection and processing rules
- Full upload processes planned tasks in the configured window (
hoursBacktohoursForward). - Incremental push processes today's pending
CalendarUpdateentries with actionINSERTorUPDATE. - Only open and assigned tasks are included.
- Resources marked inactive for this connector are excluded.
- Optional account exclusion is supported via
omd.calendar.safetytest.accounts.excluded.
Entity lifecycle behavior
- Synchronization runs in this order: customer -> location header -> node groups -> location node -> access permissions.
- For each mapped visit, up to three node-group types are maintained: device, installation, and object.
- Existing entities are reused when found; missing entities are created.
- Existing customer names are corrected when needed.
Resource access behavior
- Resource matching uses OMD scheduled resource external ID against SafetyTest username.
- If a matching user is found, read-only permissions are granted on customer and node-group entities.
- Permission validity extends to
now + (hoursForward + 24 hours).
One-Way Communication
Note that the connector works only in one direction, from OMD to SafetyTest. Data collected with SafetyTest is not communicated back to OMD.
Data Mapping
See the public mapping overview here: SafetyTest Mapping.
Ignore Resource during Communication
To avoid a resource's visits to be considered for communication to Test & Smile, set the resource's process flow preference calendar.testandsmile.active or calendar.safetytest.active to false.