Operational/OT Data Integration Checklist (SCADA to BI)

An actionable, fillable checklist to assess sensor/tag selection, sampling and timestamp rules, data quality checks, aggregation and OEE inputs, safety and security controls, and the communication plan needed to integrate OT/SCADA data into BI and analytics systems.

{ "Title": "Operational/OT Data Integration Checklist (SCADA to BI)", "IntroductionHtml": "

Purpose

Use this checklist to review and record the readiness of OT/SCADA data for analytics and BI. Each item collects a quick yes/no assessment plus notes so teams can track fixes, ownership, and follow-up actions. Where numeric inputs are useful (for example OEE inputs), you can capture values for later analysis.

How to use: walk the checklist with OT, instrumentation, and analytics stakeholders. Record evidence, examples, or links to documentation in the notes fields. Use the overall risk and recommended actions to prioritize remediation work.

", "SubmitLabel": "Save Checklist", "SuccessMessage": "Checklist saved. Use the recommended actions to plan follow-up with OT and analytics teams.", "DataType": "OperationalOTIntegrationChecklist", "SchemaVersion": 1, "Fields": [ { "Key": "sensor_section_note", "Type": "textarea", "Label": "Sensor & Tag Selection - Summary / Known Issues", "HelpText": "Short summary of sensor/tag coverage, naming conventions, or gaps discovered during review.", "Required": false }, { "Key": "sensor_tags_mapped", "Type": "yesno", "Label": "Are data points mapped to stable tag identifiers (asset ID / signal tag)?", "HelpText": "Stable identifiers avoid ambiguity when tags are renamed in OT systems.", "Required": true }, { "Key": "sensor_units_consistent", "Type": "yesno", "Label": "Are engineering units, data types, and scaling defined and consistent in metadata?", "HelpText": "Check SCADA tag definitions, historian metadata, and sensor documentation.", "Required": true }, { "Key": "sensor_scaling_documented", "Type": "yesno", "Label": "Is any sensor scaling or calibration documented and available to downstream systems?", "Required": true }, { "Key": "sensor_sample_rate_adequate", "Type": "yesno", "Label": "Does the sampling rate support the intended analytics (control, anomaly detection, OEE)?", "HelpText": "For example: control loops often need sub-second, trending may need 1–15s, OEE may use 1–60s aggregated windows.", "Required": true }, { "Key": "sampling_section_note", "Type": "textarea", "Label": "Sampling & Timestamp - Notes", "HelpText": "Document timezone policy, common skew issues, or examples where samples are missing timestamps.", "Required": false }, { "Key": "timestamps_standardized", "Type": "yesno", "Label": "Are timestamps standardized (UTC or documented site timezone) and included with each record?", "Required": true }, { "Key": "timestamp_precision", "Type": "select", "Label": "Timestamp precision used", "Options": [ { "Value": "ms", "Label": "Millisecond" }, { "Value": "s", "Label": "Second" }, { "Value": "min", "Label": "Minute" }, { "Value": "other", "Label": "Other / Mixed" } ], "Required": true }, { "Key": "alignment_rules_defined", "Type": "yesno", "Label": "Are rules for aligning samples across streams (interpolation, windowing, floor/ceil) documented?", "Required": true }, { "Key": "allowed_max_skew_seconds", "Type": "number", "Label": "Allowed max skew between correlated streams (seconds)", "HelpText": "Enter numeric allowance for skew (e.g., 1, 5, 30). Leave blank if unknown.", "Required": false }, { "Key": "quality_section_note", "Type": "textarea", "Label": "Data Quality - Observations", "HelpText": "Examples: typical missing windows, known devices that produce noisy values, historian ingestion gaps.", "Required": false }, { "Key": "missing_values_checks", "Type": "yesno", "Label": "Are automated checks for missing data implemented and monitored?", "Required": true }, { "Key": "duplicate_records_checks", "Type": "yesno", "Label": "Are duplicate or out-of-order records detected and handled?", "Required": true }, { "Key": "outlier_handling_defined", "Type": "yesno", "Label": "Is outlier detection and handling policy (filtering, flags, review) defined?", "Required": true }, { "Key": "data_quality_baseline", "Type": "scale", "Label": "Data quality baseline (1 = poor, 5 = excellent)", "HelpText": "Quick team estimate of current data quality for analytics use.", "Required": true }, { "Key": "aggregation_section_note", "Type": "textarea", "Label": "Aggregation & OEE - Notes", "HelpText": "Record preferred aggregation windows, known calculation formulas, or exceptions for specific assets.", "Required": false }, { "Key": "aggregation_window_standard", "Type": "select", "Label": "Standard aggregation windows used in analytics", "Options": [ { "Value": "1s", "Label": "1 second" }, { "Value": "1m", "Label": "1 minute" }, { "Value": "5m", "Label": "5 minutes" }, { "Value": "15m", "Label": "15 minutes" }, { "Value": "hourly", "Label": "Hourly" }, { "Value": "shift", "Label": "Shift" }, { "Value": "daily", "Label": "Daily" }, { "Value": "custom", "Label": "Custom / mixed" } ], "Required": true }, { "Key": "oee_inputs_collected", "Type": "yesno", "Label": "Are the OEE input components (Availability, Performance, Quality) captured or derivable from the data?", "Required": true }, { "Key": "availability_pct", "Type": "number", "Label": "Availability (%) - most recent example", "HelpText": "Enter an example or measured value (0-100).", "Required": false }, { "Key": "performance_pct", "Type": "number", "Label": "Performance (%) - most recent example", "Required": false }, { "Key": "quality_pct", "Type": "number", "Label": "Quality (%) - most recent example", "Required": false }, { "Key": "oee_calc_documented", "Type": "yesno", "Label": "Is the exact OEE calculation (numerator/denominator, excluded downtime) documented and aligned with operations?", "Required": true }, { "Key": "oee_notes", "Type": "textarea", "Label": "OEE calculation notes / exceptions", "HelpText": "Document site-specific conventions (planned stops excluded, micro-stops treatment, speed loss handling).", "Required": false }, { "Key": "safety_section_note", "Type": "textarea", "Label": "Safety & Security - Observations", "HelpText": "Document any safety-critical signals excluded from analytics or special handling required.", "Required": false }, { "Key": "network_segmentation", "Type": "yesno", "Label": "Is network segmentation and boundary controls (IT/OT separation) in place for analytics integrations?", "Required": true }, { "Key": "access_control_principle", "Type": "yesno", "Label": "Is least-privilege access applied to data extraction and analytics accounts?", "Required": true }, { "Key": "safety_signal_handling", "Type": "yesno", "Label": "Are safety- or control-critical signals either excluded from analytics or subject to formal safety review before use?", "Required": true }, { "Key": "security_contact", "Type": "text", "Label": "Security / OT contact (name and role)", "Required": false }, { "Key": "comm_section_note", "Type": "textarea", "Label": "Communication & Governance - Notes", "HelpText": "Record upstream/downstream stakeholders and any known change-control constraints.", "Required": false }, { "Key": "ot_contacts_listed", "Type": "textarea", "Label": "List OT owners, data stewards, and analytics contacts", "Required": true }, { "Key": "escalation_path_defined", "Type": "textarea", "Label": "Escalation path for data incidents", "HelpText": "Where do OT and analytics teams escalate missing data, high-severity errors, or security incidents?", "Required": false }, { "Key": "change_control_process", "Type": "yesno", "Label": "Is there a documented change-control process for tag naming, historian schema, and extraction logic?", "Required": true }, { "Key": "overall_risk", "Type": "select", "Label": "Overall integration risk", "Options": [ { "Value": "low", "Label": "Low" }, { "Value": "medium", "Label": "Medium" }, { "Value": "high", "Label": "High" } ], "Required": true }, { "Key": "recommended_actions", "Type": "textarea", "Label": "Recommended remediation actions (who, what, by when)", "HelpText": "Capture prioritized next steps such as metadata cleanup, time-sync fixes, or security reviews.", "Required": false } ] }

Discussion

Comments and conversation will live here.