LogoLogo
IntegrationsInstallationAdministrationContact Support
XMPro Platform
XMPro Platform
  • What is XMPro?
  • Getting Started
    • Browser Requirements
    • End-To-End Use Case
  • Resources
    • What's New in 4.4
      • What's New in 4.3
      • What's New in 4.2
      • What's New in 4.1.13
      • What's New in 4.1
      • What's New in 4.0
    • Blueprints, Accelerators & Patterns
    • Integrations
    • Sizing Guideline
    • Platform Security
    • Icon Library
    • FAQs
      • Implementation FAQs
      • Configuration FAQs
      • Agent FAQs
      • General FAQs
      • External Content
        • Blogs
          • 2024
            • How to Build Multi-Agent Systems for Industry
            • Why Solving the Problem Doesn’t Solve the Problem: The Importance of Scalable Intelligent Operations
            • Content, Decision, and Hybrid: The Three Pillars of Multi-Agent Systems in Industry
            • Revolutionizing Manufacturing with AI and Generative AI: XMPro’s Intelligent Business Operations Sui
            • The Evolution of Skills: Lessons from Agriculture in the GenAI and MAGS Era
            • Part 1: From Railroads to AI: The Evolution of Game-Changing Utilities
            • Part2: The Future of Work: Harnessing Generative Agents in Manufacturing
            • Bridging Automation and Intelligence: XMPro’s Approach to Industrial Agent Management
            • XMPro APEX: Pioneering AgentOps for Industrial Multi Agent Generative Systems
            • Part 5 – Rules of Engagement: Establishing Governance for Multi-Agent Generative Systems
            • How to Achieve Scalable Predictive Maintenance for Industrial Operations
            • Understanding the Difference Between XMPro AI Assistant and AI Advisor
            • Part 3 – AI at the Core: LLMs and Data Pipelines for Industrial Multi-Agent Generative Systems
            • MAGS: The Killer App for Generative AI in Industrial Applications
            • The Importance of Pump Predictive Maintenance for Operational Efficiency
            • Progressing Through The Decision Intelligence Continuum With XMPro
            • The Value-First Approach to Industrial AI: Why MAGS Implementation Must Start with Business Outcomes
            • New Guide – The Ultimate Guide to Multi-Agent Generative Systems
            • The Ultimate Guide To Predictive Analytics
            • Part 4 – Pioneering Progress | Real-World Applications of Multi-Agent Generative Systems
            • Scaling Multi-Agent Systems with Data Pipelines: Solving Real-World Industrial Challenges
          • 2023
            • How to master Predictive Analytics using Composable Digital Twins
            • Accelerate Your AI Workflow: The 3 Key Business Advantages of XMPro Notebook
            • The Roadmap to Intelligent Digital Twins
            • What is edge computing, and how can digital twins utilize this technology?
            • THE TOP 5 USE CASES FOR COMPOSABLE DIGITAL TWINS IN RENEWABLES + HOW TO SUPERCHARGE RESULTS WITH AI
            • The Technology Behind Predictive Maintenance (PdM) : Hardware & Software
            • The Benefits of Using Digital Twins in Smart Manufacturing
            • XMPro I3C Intelligent Digital Twins Strategy Framework
            • The TOP 5 use cases for composable digital twins in mining – and how to use AI to supercharge result
            • The TOP 5 use cases for Composable Digital Twins in the Oil & Gas industry
            • Why Decision Intelligence with Digital Twins is “kinda like” DCS for Automation and Control
            • XMPro becomes an NVIDIA Cloud-Validated partner
            • From Reactive to Predictive : Introduction to Predictive Maintenance
            • Microsoft Azure Digital Twins : Everything You Need To Know
            • Unlocking Efficiency: The Right Time & Strategy to Launch Your Digital Twin for Enhanced Asset Manag
            • Revolutionize Your Supply Chain: How Digital Twins Can Boost Efficiency and Cut Costs
          • 2022
            • Create a Common Operating Picture of Your Operations with XMPro
            • 7 Trends for Industrial Digital Twins in 2022
            • How to Build a Digital Twin + 60 Use Cases By Industry
            • What are composable digital twins in the metaverse?
          • 2021
            • The Value of a Composable Digital Twin
          • 2020
            • Lean Digital Twin: Part 2
            • Digital Twin: Your Most Productive Remote Worker
            • From the Control Room to the Bedroom
            • Lean Digital Twin: Part 3
          • 2019
            • My Digital Twin: Digital Twin Applications for Real-time Operations (Like Me)
          • 2018
            • XMPro IoT Operational Capability Survey Results 2018
            • What is a Digital Business Platform and Why Should I Care?
            • [Robotic] Process Automation for IoT
            • 3 Patterns of Industrial IoT Use Cases
            • The CXO’s Guide to Digital Transformation – May The Five Forces Be With You
            • Is Security More Important Than Trustworthiness for Industrial IoT?
            • XMPro at bpmNEXT 2018: Watch The Presentation
          • 2017
            • The Top 5 Reasons to Invest in an IIoT Development Platform
            • IoT Business Solutions Start with Big Data & Create Business Outcomes
            • How AI Bots Bring Digital Twins to Life
          • 2016
            • How To Get Started With Industrial IoT
            • How To Overcome The Top 5 Challenges To Industrial IoT Adoption
            • What is an IoT Platform vs. an IoT Business Application Suite?
            • Industrial IoT: How To Get Started with Predictive Maintenance
            • 3 Ways The Internet of Things is Transforming Field Service
            • 7 Types of Industrial IoT Data Sources (And How To Use Them)
          • 2015
            • How Important Are Processes To The Internet Of Things?
            • Understanding the Value of Real Time KPI Management as Your Next Strategic Project
            • 6 Myths About Machine Learning
            • 10 Predictive Analytics Use Cases By Industry
            • What is a “Business Moment” in your business?
            • Does Operational Intelligence Make Business Intelligence Obsolete?
            • How To Reduce Operational Costs by 36% with Predictive Analytics
            • From Many, One – The Nature of Complex Event Processing
            • Herding Cats: What Enterprise Architects need to know about Business Process Management
          • 2014
            • Making Business Operations More Intelligent
          • 2013
            • Best Next Action Is The Next Big Thing For Intelligent Operations
            • The learns from two ‘Best in class’ organisations acquiring BPM technology
          • 2012
            • Why Intelligent Business Operations is Mobile, Social and Smart
            • Why Do You Want Intelligent Business Operations?
            • How big of a problem are ‘dark processes’?
            • Operational Risk: When You Stick Your Head In The Sand
            • The Difference Between Event-based And Workflow-based Processes
          • 2011
            • Is mobile BPM now essential to the business?
            • Stretch Socially Dynamic Processes To Fit Your Business
            • Social Listening – Get Control Of The Conversation
            • Operations Management – The Keys To KPIs
            • Benefits of BPM v 1.0
            • How to Prioritise Processes
          • 2010
            • The Business Drivers
            • Preserving Capability and Agility
            • Mobile BPM
        • Use Cases
          • Aging Pipe Predictive Maintenance in Water Utilities
          • Air Quality Monitoring For Agriculture
          • Alarm Management and Triage
          • Asset Condition Monitoring for Surface Processing Plants in the Mining Industry
          • Bogie Health Monitoring in the Rail Industry
          • Boiler Feed Water Pumps
          • CHPP Throughput Loss Monitoring
          • Casting Guidance
          • Conveyor Belt System Monitoring and Optimization in Automotive Manufacturing
          • Cooling Tower Fin Fan Monitoring
          • Cyclone/Slurry Pump Monitoring
          • Demand Planning to Reduce Stockholding in Stores
          • Demin Water Monitoring for Boiler Tube Corrosion
          • EV Battery Assembly Process Optimization for the Car Manufacturing Industry
          • Flood Prediction & Response in Water Utilities
          • Golden Batch For Culture Addition In The Dairy processing Industry.
          • Golden Batch Monitoring
          • Improve First Pass Yield (FPY)
          • Induced Draft (ID) Fan Monitoring
          • Long Conveyor Monitoring
          • Monitor Process Health to Reduce Cash-to-Cash Cycle
          • Monitor Storm Water Reservoirs For Flood Prevention
          • Monitor and Reduce Energy Consumption
          • Oil Well Maintenance Planning
          • Oil Well RTP Monitoring
          • Pipe Scaling Prediction for Roller Cooling
          • Precision Irrigation in Agriculture
          • Predict Heat Exchanger Fouling
          • Predictive Maintenance & Asset Health Monitoring For Haul Trucks In The Mining Industry
          • Predictive Maintenance For Mobile Assets Within The Mining Industry
          • Predictive Maintenance for Robotic Arms in the Automotive Industry
          • Predictive Maintenance for Wind Turbines
          • Pump Health Monitoring in Water Utilities
          • Pumping Station OEE
          • Real-time Balanced Business Scorecard (BBS)
          • Real-time Safety Monitoring
          • Short Term Inventory Planning
          • Strategic Performance & Safety Oversight for Global Mining Operations
          • Wheel and Track Wear Monitoring In The Rail Industry
          • Wind Turbine Performance Optimization
        • Youtube
          • 2024
            • Discover Gen AI Powered Operations With XMPro iBOS
            • Generative AI and Digital Twins in 2024 - XMPro Webinar
            • Go From Reactive To Predictive Operations In Water Utilities With XMPro iDTS
            • How to add Timestamps to Elements in XMPro App Designer
            • How to Build an AI Advisor for Industrial Operations Using XMPro
            • How XMPro Stream Hosts and Collections Enable Scalable, Real-Time Data Processing
            • Mind Blowing AI Agentic Operations For Industry With XMPro MAGS
            • The Ultimate Beginner's Guide To Predictive Analytics Podcast
            • XMPro's Flexible Deployment Options: Flexible Cloud & On-Premise Solutions For Industry
            • XMPro iBOS: The Only AI-Powered Suite for Scalable Intelligent Operations
          • 2023
            • 2023 XMPro Product Roadmap - Webinar
            • An Introduction To Intelligent Digital Twins - Webinar
            • Energy and Utilities Asset Optimisation through Digital Twin technology
            • Explore Model Governance using our MLflow Agent
            • Exploring XMPro Notebook and MLflow for Data Science and Model Governance
            • How Changing Properties For One Block Can Be Applied To All Blocks Within Same Style Group
            • How do I Use A Button To Update a Data Source In XMPro App Designer
            • How Does XMPro Compare To ESBs (Enterprise Service Buses)-
            • How to Configure and Integrity Check in Data Streams
            • How To Create A Widget Within XMPro App Designer
            • How to Create Intelligent Digital Twins Using XMPro AI
            • How to export grid data to Excel In XMPro App Designer
            • How to Revolutionize Your Supply Chain with Digital Twins
            • How To Rotate Text In App Designer
            • How To Update a Data Source Using A Button
            • How To Use & Clone XMPro Demos For Your Own Use
            • How To Use And Build 3rd Party Apps To Extend The Capabilities Of The XMPro App Designer.
            • How to use Avatars and why they are important
            • How to view stream host logs In XMPro Data Stream Designer
            • Logging Provider Support With XMPro
            • Mastering Health Check Endpoints: A Guide to Ensuring Service Uptime and Performance with XMPro
            • Mastering Root Cause Analysis with XMPro: Capture, Value, Impact
            • Microsoft Azure Digital Twins Everything You Need To Know
            • Model Based Predictive Maintenance (PdM) With XMPro
            • Monthly Webinar - Accelerate your digital twin use cases - XMPro Blueprints, Accelerators & Patterns
            • Optimizing Time Series Chart (TSC) Performance
            • Predictive Maintenance & Condition Monitoring - A Hot Seat Q&A Session
            • Predictive Maintenance with XMPro iDTS
            • Smart Facilities Management with Intelligent Digital Twins
            • The Benefits of using Digital Twins in Smart Manufacturing
            • The Four Industrial Revolutions Explained In Under 4 Minutes! #industry4 #smartmanufacturing
            • The Roadmap To Intelligent Digital Twins
            • The Technology Behind Predictive Maintenance (PdM) - The Hardware & Software that makes PdM Tick...
            • THE TOP USE CASES FOR COMPOSABLE DIGITAL TWINS IN RENEWABLES
            • Tips on how to use cache in agent configuration and get live updates
            • Webinar - XMPro 4.3 Release Showcase
            • What is a Digital Twin- Why Composable Digital Twins is the Future.
            • What Is Predictive Maintenance- (PdM)
            • What To Do When a Data Source Is Not Showing in Pass Page Parameter
            • XMPro - The World's Only AI - Powered Intelligent Digital Twin Suite
            • XMPro - The World's Only No Code Digital Twin Composition Platform
            • XMPro AI : How It Works
            • XMPro AI End To End Use Case
            • XMPro Auto Scale - Understanding Distributed Caching for Cloud-Native Applications
            • XMPro Promo Video - Dell Validated Design For Manufacturing Edge
          • 2022
            • Aggregate Transformation Agent Example - XMPRO Data Stream Designer
            • App Layout Best Practices for Desktop & Mobile - XMPro Lunch & Learn
            • Broadcast Transformation Agent Example - XMPRO Data Stream Designer
            • Calculated Field Transformation Agent Example - XMPRO Data Stream Designer
            • CRC16 Function Agent Example - XMPRO Data Stream Designer
            • Create a Common Operating Picture of Your Operations with XMPro
            • CSV Context Provider Agent Example - XMPro Data Stream Designer
            • CSV Simulator Agent Example - XMPRO Data Stream Designer
            • CSV Writer Agent Example - XMPRO Data Stream Designer
            • Data Conversion Transformation Agent Example - XMPro Data Stream Designer
            • Digital Twin Strategy To Execution Pyramid - XMPro Webinar
            • Event Printer Action Agent Example - XMPRO Data Stream Designer
            • File Listener Agent Example - XMPRO Data Stream Designer
            • Filter Transformation Agent Example - XMPRO Data Stream Designer
            • Group & Merge Transformation Agent Example - XMPRO Data Stream Designer
            • How To Bind Data To A Chart and Get It Working As Expected - XMPro Lunch & Learn
            • How To Send Data To My App (Including Caching Introduction) - XMPro Lunch & Learn
            • Join Transformation Agent Example - XMPRO Data Stream Designer
            • Min/Max Function Agent Example - XMPRO Data Stream Designer
            • PART 1- How To Manage Complex Operations in Real-time Using Composable Digital Twins
            • PART 3 - How To Manage Complex Operations in Real-time Using Composable Digital Twins
            • PART2 - How To Manage Complex Operations in Real-time Using Composable Digital Twins
            • Pass Through Agent Example - XMPRO Data Stream Designer
            • Pivot Table Transformation Agent Example - Count - XMPRO Data Stream Designer
            • Pivot Table Transformation Agent Example - Sum - XMPRO Data Stream Designer
            • Real-Time Is Real - How To Use Event Intelligence Tools to Manage Complex Operations in Real-time.
            • Row Count Agent Example - XMPRO Data Stream Designer
            • Sort Transformation Agent Example - XMPRO Data Stream Designer
            • Transpose Transformation Agent Example - Columns - XMPRO Data Stream Designer
            • Transpose Transformation Agent Example - Rows - XMPRO Data Stream Designer
            • Trim Name Transformation Agent Example - XMPRO Data Stream Designer
            • Twilio Action Agent Example - XMPRO Data Stream Designer
            • Union Transformation Agent Example - XMPRO Data Stream Designer
            • Variables & Expressions in App Designer - XMPro Lunch & Learn
            • Window Transformation Agent Example - XMPRO Data Stream Designer
            • XML File Reader Action Agent Example - XMPRO Data Stream Designer
          • 2021
            • The Value of a Composable Digital Twin - XMPro Webinar
          • 2020
            • 1. Understanding The Problem - UX Design - XMPRO
            • 1.1 Welcome - XMPRO UI Design Basics
            • 1.2 Introduction To UI Design - XMPRO UI Design Basics
            • 2. Creating User Stories - UX Design - XMPRO
            • 2.1 Responsive Design - XMPRO UI Design Basics
            • 2.2 Grids - XMPRO UI Design Basics
            • 2.3 Visual Hierarchy - XMPRO UI Design Basics
            • 2.4 Wireframes - XMPRO UI Design Basics
            • 3. Creating User Flow Diagrams - UX Design - XMPRO
            • 3.1 Color Palette - XMPRO UI Design Basics
            • 3.2 Typography - XMPRO UI Design Basics
            • 3.3 White Space - XMPRO UI Design Basics
            • 3.4 UI Elements - XMPRO UI Design Basics
            • 4. Plan Your App with Wireframes - UX Design - XMPRO
            • 4.1 Chart Types - XMPRO UI Design Basics
            • 4.2 Chart Styling - XMPRO UI Design Basics
            • 5. Designing for Dynamic Data - UX Design - XMPRO
            • Agents and Their Types - XMPRO Data Stream Designer
            • Data Wrangling: Row Transpose - XMPRO Data Stream Designer
            • Digital Twin: Your Most Productive Remote Worker - XMPRO Webinar
            • End-To-End Real-Time Condition Monitoring Demo - XMPRO Application Development Platform
            • Error Endpoints - XMPRO Data Stream Designer
            • Export and Import Recommendations - XMPRO App Designer
            • How To Add Buttons To Agents - XMPRO Data Stream Designer
            • How To Add EditLists to Agents - XMPRO Data Stream Designer
            • How To Change UI Language - XMPRO Subscription Manager
            • How To Configure a Stream Object - XMPRO Data Stream Designer
            • How To Configure The Aggregate Transformation - XMPRO Data Stream Designer
            • How To Configure The Anomaly Detection Agent - XMPRO Data Stream Designer
            • How To Configure The Azure SQL Action Agent - XMPRO Data Stream Designer
            • How To Configure The Azure SQL Context Provider - XMPRO Data Stream Designer
            • How To Configure The Azure SQL Listener - XMPRO Data Stream Designer
            • How To Configure The Calculated Field Transformation - XMPRO Data Stream Designer
            • How To Configure The CSV Context Provider - XMPRO Data Stream Designer
            • How To Configure The CSV Listener - XMPRO Data Stream Designer
            • How To Configure The Data Conversion Transformation - XMPRO Data Stream Designer
            • How To Configure The Edge Analysis Transformation - XMPRO Data Stream Designer
            • How To Configure The Email Action Agent - XMPRO Data Stream Designer
            • How To Configure The Email Listener - XMPRO Data Stream Designer
            • How To Configure The Event Printer Action Agent - XMPRO Data Stream Designer
            • How To Configure The Event Simulator Listener - XMPRO Data Stream Designer
            • How To Configure The FFT Function - XMPRO Data Stream Designer
            • How To Configure The File Listener - XMPRO Data Stream Designer
            • How To Configure The Filter Transformation - XMPRO Data Stream Designer
            • How To Configure The IBM Maximo Action Agent - XMPRO Data Stream Designer
            • How To Configure The IBM Maximo Context Provider - XMPRO Data Stream Designer
            • How To Configure The IBM Maximo Listener - XMPRO Data Stream Designer
            • How To Configure The Join Transformation - XMPRO Data Stream Designer
            • How To Configure The JSON File Reader Context Provider - XMPRO Data Stream Designer
            • How To Configure The MQTT Action Agent - XMPRO Data Stream Designer
            • How To Configure The MQTT Advanced Action Agent - XMPRO Data Stream Designer
            • How To Configure The MQTT Advanced Listener - XMPRO Data Stream Designer
            • How To Configure The MQTT Listener - XMPRO Data Stream Designer
            • How To Configure The Normalize Fields Function - XMPRO Data Stream Designer
            • How To Configure The OSIsoft PI Context Provider - XMPRO Data Stream Designer
            • How To Configure The OSIsoft PI Listener - XMPRO Data Stream Designer
            • How To Configure The Pass Through Transformation - XMPRO Data Stream Designer
            • How To Configure The PMML Agent - XMPRO Data Stream Designer
            • How To Configure The REST API Context Provider - XMPRO Data Stream Designer
            • How To Configure The RScript Agent - XMPRO Data Stream Designer
            • How To Configure The Run Recommendation Agent - XMPRO Data Stream Designer
            • How To Configure The Signal Filter - XMPRO Data Stream Designer
            • How To Configure The SQL Server Action Agent - XMPRO Data Stream Designer
            • How To Configure The SQL Server Context Provider - XMPRO Data Stream Designer
            • How To Configure The SQL Server Listener - XMPRO Data Stream Designer
            • How To Configure The SQL Server Writer Action Agent - XMPRO Data Stream Designer
            • How To Configure The Twilio Action Agent - XMPRO Data Stream Designer
            • How To Configure The Union Transformation - XMPRO Data Stream Designer
            • How To Configure The Unzip Function - XMPRO Data Stream Designer
            • How To Configure The Window Transformation - XMPRO Data Stream Designer
            • How To Create an App - XMPRO App Designer
            • How To Create and Manage Templates - XMPRO App Designer
            • How To Create and Publish a Use Case - XMPRO Data Stream Designer
            • How To Create and Use a Widget - XMPRO App Designer
            • How To Create App Data Connections - XMPRO App Designer
            • How To Create App Pages and Navigation - XMPRO App Designer
            • How To Create Recommendation Rules - XMPRO App Designer
            • How To Create Recurrent Data Streams - XMPRO Data Stream Designer
            • How To Do Integrity Checks - XMPRO Data Stream Designer
            • How To Edit Page Properties - XMPRO App Designer
            • How To Enable Audit Trails - XMPRO App Designer
            • How to Export, Import, and Clone a Data Stream - XMPRO Data Stream Designer
            • How To Export, Import and Clone an App - XMPRO App Designer
            • How to Export and Import an App - XMPRO App Designer
            • How To Find Help for an Agent - XMPRO Data Stream Designer
            • How To Install The XMPRO App Designer
            • How To Maintain and Capture Notes - XMPRO App Designer
            • How To Manage Agents - XMPRO Data Stream Designer
            • How To Manage and Use Server Variables - XMPRO Data Stream Designer
            • How To Manage Buffer Size - XMPRO Data Stream Designer
            • How to Manage Categories - XMPRO App Designer
            • How To Manage Categories - XMPRO Data Stream Designer
            • How To Pass Parameters Between Pages - XMPRO App Designer
            • How To Publish and Share an Application - XMPRO App Designer
            • How To Set Up and Use Charts in Live View - XMPRO Data Stream Designer
            • How To Set Up and Use Gauges in Live View - XMPRO Data Stream Designer
            • How To Share a Data Stream - XMPRO Data Stream Designer
            • How To Share a Use Case - XMPRO Data Stream Designer
            • How To Share an App For Design Collaboration - XMPRO App Designer
            • How To Troubleshoot a Use Case - XMPRO Data Stream Designer
            • How To Upgrade a Stream Object Version - XMPRO Data Stream Designer
            • How To Use App Files - XMPRO App Designer
            • How To Use Application Versions - XMPRO App Designer
            • How To Use Bar Gauge - XMPRO App Designer
            • How To Use Calendar - XMPRO App Designer
            • How To Use Chart Pan, Zoom and Aggregation - XMPRO App Designer
            • How To Use Chart Panes and Axes - XMPRO App Designer
            • How To Use Chart Print and Export- XMPRO App Designer
            • How To Use Charts - XMPRO App Designer Toolbox
            • How To Use Charts: Series - XMPRO App Designer
            • How To Use Collections - XMPRO Data Stream Designer
            • How To Use Content Card - XMPRO App Designer
            • How To Use D3 - XMPRO App Designer
            • How To Use Data Sources - XMPRO App Designer
            • How To Use Embedded Pages - XMPRO App Designer Toolbox
            • How To Use Fieldset and Field - XMPRO App Designer Toolbox
            • How To Use Flex Layout
            • How To Use Form Validation - XMPRO App Designer Toolbox
            • How To Use Input Mappings - XMPRO Data Stream Designer
            • How To Use Linear Gauges - XMPRO App Designer
            • How To Use Live View - XMPRO Data Stream Designer
            • How To Use Lookup - XMPRO App Designer
            • How To Use Maps - XMPRO App Designer
            • How To Use Page Layers - XMPRO App Designer
            • How To Use Pivot Grid - XMPRO App Designer
            • How To Use Polar Charts - XMPRO App Designer
            • How To Use Power BI - XMPRO App Designer
            • How To Use Radio Buttons - XMPRO App Designer Toolbox
            • How To Use Recommendations - XMPRO App Designer Toolbox
            • How To Use Select Box - XMPRO App Designer
            • How To Use Stacked Layouts - XMPRO App Designer Toolbox
            • How To Use Stream Host Local Variables - XMPRO Data Stream Designer
            • How To Use Tabs - XMPRO App Designer Toolbox
            • How To Use Tags - XMPRO App Designer Toolbox
            • How To Use Templated List - XMPRO App Designer
            • How To Use Templates - XMPRO App Designer
            • How To Use Text - XMPRO App Designer Toolbox
            • How To Use Text Area - XMPRO App Designer Toolbox
            • How To Use The Accordion - XMPRO App Designer Toolbox
            • How To Use The Block Styling Manager - XMPRO App Designer
            • How To Use The Box and Data Repeater Box - XMPRO App Designer Toolbox
            • How To Use The Button - XMPRO App Designer Toolbox
            • How To Use The Circular Gauge - XMPRO App Designer Toolbox
            • How To Use The Data Grid - XMPRO App Designer Toolbox
            • How To Use The HTML Editor - XMPRO App Designer Toolbox
            • How To Use The Hyperlink and Box Hyperlink - XMPro App Designer Toolbox
            • How To Use The Image - XMPRO App Designer Toolbox
            • How To Use The Indicator - XMPRO App Designer Toolbox
            • How To Use The Layout Grid - XMPRO App Designer Toolbox
            • How To Use The Number Selector - XMPRO App Designer Toolbox
            • How To Use The Pie Chart - XMPRO App Designer Toolbox
            • How To Use The Range Slider - XMPRO App Designer Toolbox
            • How To Use The Recommendation Chart - XMPRO App Designer Toolbox
            • How To Use The Scroll Box - XMPRO App Designer Toolbox
            • How To Use The Select Box - XMPRO App Designer Toolbox
            • How To Use The Sparkline - XMPRO App Designer Toolbox
            • How To Use The Textbox - XMPRO App Designer Toolbox
            • How To Use Tree Grid - XMPRO App Designer
            • How To Use Tree List - XMPRO App Designer
            • How To Use Unity - XMPRO App Designer Toolbox
            • How To Use Variables - XMPRO App Designer
            • How To Write and Maintain Notes and Business Case - XMPRO Data Stream Designer
            • Interactive 3D Models For Digital Twins - XMPRO Event Intelligence Platform
            • Manage Input Arrow Highlights - XMPRO Data Stream Designer
            • Manage Recommendation Access - XMPRO App Designer
            • Realize Value from End-To-End Condition Monitoring in 6 - 8 Weeks - XMPRO
            • Recommendation Versions - XMPRO App Designer
            • Solution Development Process For Event Intelligence Apps - XMPRO
            • Stream Hosts and How To Install Them - XMPRO Data Stream Designer
            • Use Case Versioning - XMPRO Data Stream Designer
            • XMPRO App Designer Overview - Event Intelligence Applications
            • XMPRO Data Stream Designer - Event Intelligence Applications
            • XMPRO Real-Time Event Intelligence Demo
            • XMPRO Recommendations - Event Intelligence Applications
          • 2019
            • Data Distribution Service: Using DDS in Your IoT Applications
            • My Digital Twin: Digital Twin Applications For Real-Time Operations (Like Me)
            • Setting up a Typical Industrial IoT Use Case with XMPro
            • XMPro Overview & Fin Fan Failure Demo
          • 2016
            • XMPro iBPMS Overview
          • 2013
            • XMPro Best Next Action - 3 Examples for XMPro blog
            • XMPro Case Management Example
            • XMPro Internet of Things Demo
          • 2012
            • Is Agile Business the New Normal
            • The Future of BPM Moving Towards Intelligent Business Operations
            • What industries does XMPro serve-
            • Who is XMPro for-
            • XMPro - The Social Listener - Why You Should Be Listening.wmv
            • XMPro Cool Vendor 2012
            • XMPro iBPMS For SharePoint
            • XMPro iBPMS v6 XMWeb for Intelligent Business Operations
            • XMPro News and Gartner BPM Sydney Summit Discount Offer.mp4
            • XMPro Version 6 - Introducing the Next Generation BPM for Intelligent Business Operations
    • Practice Notes
      • Unified Recommendation Alert Management
      • Performant Landing Pages in Real-Time Monitoring
  • Concepts
    • XMPro AI
      • XMPro Notebook
    • Data Stream
      • Stream Object Configuration
      • Verifying Stream Integrity
      • Running Data Streams
      • Timeline
    • Collection and Stream Host
    • Agent
      • Virtual vs Non-Virtual Agents
    • Application
      • Template
      • Page
      • Block
      • Canvas
      • Page Layers
      • Block Styling
      • Devices
      • Flex
      • Block Properties
      • Data Integration
      • Navigation and Parameters
      • Variables and Expressions
      • App Files
      • Metablocks
    • Recommendation
      • Rule
      • Execution Order
      • Auto Escalate
      • Form
      • Action Requests
      • Notification
      • Recommendation Alert
      • Deleted Items
      • Scoring
    • Connector
    • Landing Pages & Favorites
    • Version
    • Manage Access
    • Category
    • Variable
    • Insights
      • Data Delivery Insights
  • How-To Guides
    • Data Streams
      • Manage Data Streams
      • Manage Collections
      • Use Remote Receivers and Publishers
      • Manage Recurrent Data Streams
      • Use Business Case and Notes
      • Run an Integrity Check
      • Check Data Stream Logs
      • Use Live View
      • Use Stream Metrics
      • Troubleshoot a Data Stream
      • Upgrade a Stream Object Version
      • Setup Input Mappings
      • Use Error Endpoints
      • Use the Timeline
      • Context Menu
    • Application
      • Manage Apps
      • Manage Templates
      • Manage Pages
      • Import an App Page
      • Design Pages for Mobile
      • Navigate Between Pages
      • Pass Parameters Between Pages
      • Page Data
      • Manage Connections
      • Check Connector Logs
      • Manage Data Sources
      • Use Data Sources in the Page
      • Use Dynamic Properties
      • Use Expression Properties
      • Use Page Layers
      • Use Block Styling and Devices
      • Use Flex
      • Use Validation
      • Use Variables & Expressions
      • Create and Maintain Notes
      • Manage Widgets
      • Manage App Files
      • Manage Themes
    • Recommendations
      • Manage Categories
      • Manage Recommendations
      • Manage Rules
      • Manage Notifications
      • Manage Notification Templates
      • Subscribe to Notifications
      • Manage Forms
      • Manage Variables
      • Manage Alerts
      • Manage Alerts on Mobile
      • Manage Deleted Recommendation Items
    • Connectors
      • Manage Connectors
      • Building Connectors
      • Packaging Connectors
    • Stream Host
    • Agents
      • Manage Agents
      • Building Agents
      • Packaging Agents
      • Debugging an Agent
    • Manage Versions
    • Manage Access
    • Manage Categories
    • Manage Variables
    • Import, Export, and Clone
    • Publish
      • Admin Unpublish Override
    • Manage Site Settings
    • Manage Landing Pages & Favorites
  • Blocks
    • Common Properties
    • Layout
      • Accordion
      • Box & Data Repeater Box
      • Card & Content Card
      • Field & Fieldset
      • Layout Grid
      • Menu
      • Scroll Box
      • Stacked Layout Horizontal & Vertical
      • Tabs
      • Templated List
      • Toolbar
    • Basic
      • Calendar
      • Check Box
      • Color Selector
      • Data Grid
      • Date Selector
      • Dropdown Grid
      • Embedded Page
      • File Library
      • File Uploader
      • Html Editor
      • Image
      • Indicator
      • List
      • Lookup
      • Number Selector
      • Radio Buttons
      • Range Slider
      • Select Box
      • Switch
      • Tags
      • Text
      • Text Area
      • Textbox
      • Tree Grid
      • Tree List
    • Device Input
      • Location Capture
      • Visual Media Capture
    • AI
      • Azure Copilot
      • ChatGPT Copilot
    • Actions
      • Box Hyperlink
      • Button
      • Data Operations
      • Hyperlink
    • Recommendations
      • Alert Action
      • Alert Analytics
      • Alert Discussion
      • Alert Event Data
      • Alert Form
      • Alert List
      • Alert Timeline
      • Alert Triage
      • Alert Survey
      • Recommendation Chart
    • Visualizations
      • Autodesk Forge
      • Azure Digital Twin Hierarchy
      • Bar Gauge
      • Chart
      • Circular Gauge
      • D3 Visualization
      • Esri Map
      • Image Map
      • Linear Gauge
      • Live Feed
      • Map
      • Pie Chart
      • Pivot Grid
      • Polar Chart
      • Power BI
      • Sparkline
      • Time Series Analysis
      • Tree Map
      • Unity
      • Unity (Legacy)
    • Advanced
      • Metablock
    • Widgets
  • Administration
    • Administrative Accounts
    • Language
    • Companies
      • Register a Company
      • Manage a Company
      • Manage Company Subscriptions
      • Manage License
    • Subscriptions
      • Manage User Access
      • Setup Auto Approval/Default Subscriptions
      • Request and Apply a License
    • Users
      • Invite a User
      • Register an Account
      • Profile
      • Change Password
      • Reset Password
      • Delete a User
      • Change Business Role
  • Installation
    • Overview
    • 1. Preparation
    • 2. Install XMPro
      • Azure
      • AWS
      • On-Premise
    • 3. Complete Installation
      • Configure Auto Scale (Optional)
      • Configure Health Checks (Optional)
      • Configure Logging (Optional)
      • Configure SSO (Optional)
        • SSO - Azure AD
        • SSO - ADFS
      • Create Base Company
      • Install Stream Host
        • Windows x64
        • Azure Web Job
        • Ubuntu 20.04 x64
        • Docker
      • Install Agents & Connectors
  • Release Notes
    • v4.4.18
    • v4.4.17
    • v4.4.16
    • v4.4.15
    • v4.4.14
    • v4.4.13
    • v4.4.12
    • v4.4.11
    • v4.4.10
    • v4.4.9
    • v4.4.8
    • v4.4.7
    • v4.4.6
    • v4.4.5
    • v4.4.4
    • v4.4.3
    • v4.4.2
    • v4.4.1
    • v4.4.0
    • Archived
      • v4.3.12
      • v4.3.11
      • v4.3.10
      • v4.3.9
      • v4.3.8
      • v4.3.7
      • v4.3.6
      • v4.3.5
      • v4.3.4
      • v4.3.3
      • v4.3.2
      • v4.3.1
      • v4.3.0
        • v4.2.3
        • v4.2.2
        • v4.2.1
      • v4.2.0
      • v4.1.13
      • v4.1.0
      • v4.0.0
Powered by GitBook
On this page
  • Use Case
  • 1. Design Data Streams with Real-Time Data Sources
  • Read & Wrangle Live and Context Data
  • Create Analytics and Calculations
  • Output Formatting and Action Integrations
  • Troubleshooting the Data Stream
  • 2. Create Event Rules & Recommendations
  • Create Event Rule and Rule Logic
  • Create recommendations & Triage Instructions
  • Provide additional resources for decision support
  • Multiple Rules and Rule escalation
  • Layout Event Boards
  • App Layout
  • Data Source for Pump Data
  • Easy Access to Recommendations

Was this helpful?

Export as PDF
  1. Getting Started

End-To-End Use Case

PreviousBrowser RequirementsNextWhat's New in 4.4

Last updated 2 days ago

Was this helpful?

This Use Case assumes the XMPro platform is already installed and configured.

This step-by-step tutorial is meant to be an introduction to using the XMPro platform. Completing it will give you a solid foundation to understand the more advanced concepts and detailed how-to guides. This tutorial will explain how to create and design a Data Stream, configure Stream Objects to ingest, analyze, transform, and perform actions on data. You will also learn how to set up a Recommendation to generate alerts based on rule logic, create and design an App, create Data Sources and Connections, and configure a simple Data Grid and Chart.

Please note that the XMPro platform requires third-party cookies to be enabled on your browser.

Use Case

Let's assume there is a power plant that uses a heat exchanger to keep the turbine cool and at the optimum temperature. The heat exchanger circulates water between the cooling tower and the heat exchanger to dissipate heat. To keep a proper circulation of liquid, there are three pumps [A, B, C] installed. Each Pump has a sensor that provides live data for Flow Rate (L/m) and Temperature (°C) using MQTT.

Unless the Pump is under maintenance the Flow Rate should be above 15000 L/m and Water temperature should be below 130°C .

Engineers should be alerted if the average flow rate falls below 250 L/s. If the average temperature starts to rise above 130°C then a critical level alert should be raised.

Engineers should be provided a view to check the history of pump telemetry, maintenance records, and reservoir level to enable them to take necessary action.

1. Design Data Streams with Real-Time Data Sources

The Use Case requires that we gather the Flow Rate and Temperature data from three pumps constantly, and pass it on to be analyzed and have actions performed on the data. We will achieve this with the use of Data Streams. A Data Stream is a visual representation of a flow of data. It is created through the Data Stream Designer.

To access the Data Stream Designer, log into your XMPro Account and press the button in the top-left corner of the screen and click on the Data Stream Designer item.

A Data Stream has four components:

  1. Ingesting data through Listener Agents

  2. Contextualizing sensor data/telemetry through Context Provider Agents

  3. Analyzing and transforming data through Transformation and AI Agents

  4. Performing actions or outputting data to other integrations through Recommendation and Action Agents

We will follow those four steps below.

Read & Wrangle Live and Context Data

In this section, we will simulate reading data from pump sensors and a metadata store, and combine the data together into a single flow.

To begin, we will need to create a new Data Stream. To create a Data Stream, follow the steps below:

  1. Open the New Data Stream page from the left-hand menu.

  2. Give the Data Stream a name. For example, "Pump Condition Monitoring"

  3. Select the Type "Streaming". Data Streams of the Streaming type will run polling Agents at a set interval, for instance, every 10 seconds, whereas Recurrent Data Streams run on a customizable schedule, for instance, once a day at 12am. The recurring type only applies to polling-based Stream Objects, which we won't use in this example.

  4. Select the category under which the Data Stream is to be added.

  5. Select a collection that will be used to publish Data Stream.

  6. Enter a description to best describe the Data Stream.

  7. Click on "Save".

In a production environment, Data Streams would integrate with external data emitters through Agents like OSIsoft PI or MQTT Listeners. However, for the sake of keeping the example simple, we won't be using any Agents that require an environment to be set up. Instead, we will be simulating the data with the Event Simulator, Calculated Field, and CSV Context Provider Agents.

To simulate the telemetry from the pumps, follow the steps below:

Drag into the canvas one of each of the following Agents:

You can search for the Agent in the search bar, and click and drag the Agent into the canvas to add it. An instance of an Agent added to the canvas is referred to as a Stream Object.

Once you have all four Stream Objects in the Data Stream canvas, rename them as follows:

  • Event Simulator as "Simulate Pump Data"

  • Calculated Field as "Add Pump Identifier"

  • CSV as "Simulate Context Data for Assets"

  • Join as "Contextualize Data"

To change the name of a Stream Object, click the text and edit it.

Your stream should end up looking like this:

Once you have renamed all four Stream Objects, connect them with arrows as follows:

  1. "Simulate Pump Data" to "Add Pump Identifier"

  2. "Add Pump Identifier" to "Contextualize Data" (first input)

  3. "Simulate Context Data for Assets" to "Contextualize Data" (second input)

To connect two Stream Objects, click and drag the green rectangle (Output) at the bottom edge of the first Stream Object, move the cursor to the green rectangle on the left edge of the second Stream Object (Input).

Your connected Stream Objects should look like this:

Now we will configure the added Stream Objects. Save your Data Stream now and after every change to propagate the changes throughout the Data Stream.

Simulate Pump Data

We will need to simulate ingesting data about flow rate and temperature from sensors in the pumps. We can achieve this with the Event Simulator Agent. The "Simulate Pump Data" Event Simulator will constantly generate data defined by the Event Definitions at a rate defined by the Events per Second property.

To edit the configuration of a Stream Object, either double-click it or click it once to select it and click the "Configure" button on the canvas header.

Edit the "Simulate Pump Data" Stream Object and click the + button to the right of the Event Definition grid to add event definitions.

Add two event definitions as follows:

  • Name: WaterTemperature &#xNAN;Type: Range &#xNAN;Minimum Value: 100 &#xNAN;Maximum Value: 160 &#xNAN;Spike Value: 0

  • Name: FlowRate &#xNAN;Type: Range &#xNAN;Minimum Value: 14000 &#xNAN;Maximum Value: 16000

    Spike Value: 0

Ignore the Spike Value and Generate Spike options, as they are not relevant to the current scenario.

Change the Events per Second to 1. Click "Apply" on the Simulate Pump Data configuration page. Then click "Save" on the Data Stream page.

Add Pump Identifier

We need to add a way to simulate having three different pumps. At the moment the data is not identified, so we will need to add a range of identifiers to the data. This can be achieved with the Calculated Field Agent. The "Add Pump Identifier" Calculated Field will add a "PumpId" field to the data generated with values "A", "B", and "C" for each subsequent row.

To configure the Stream Object, double click on "Add Pump Identifier" to open its configuration. Or, you can also highlight the Stream Object and click on the "Configure" option at the top of the Data Stream.

Keep "Append to Current" as the "Results Returned As" value. This will add the value calculated by the expression to each row instead of creating a new row with the identifier.

Click the + button to the right of the Expressions grid to add the following expression:

  • Calculated Field: "PumpId" - The field won't exist yet in the dropdown, so you must enter it yourself. &#xNAN;Expression: ReadingNo % 2 == 0 ? "A" : ReadingNo % 3 == 0 ? "B" : "C" &#xNAN;Data Type: String

Press "Apply" on the PumpId expression and the Add Pump Identifier configuration pages, and press "Save" on the Data Stream page.

Simulate Context Data for Assets

There is often metadata associated with assets that is not part of the live data from the sensors. In this case, metadata includes whether the pump is currently under maintenance, the manufacturer, and the last service date. We must retrieve this data from elsewhere. In a production environment, this might be an SAP EAM system, but for this example, we can achieve this through the CSV Context Provider Agent.

Double-click on the "Simulate Context Data for Assets" Stream Object to open the configuration menu. You can also highlight the Stream Object and click on the "Configure" option at the top of the Data Stream.

Download the provided file. The contents of the file are below the download link.

PumpId,UnderMaintenance,Manufacturer,ServiceDate
A,FALSE,Bosch,2020-10-12
B,FALSE,Bosch,2020-08-06
C,FALSE,Bosch,2020-01-04

Then under Data check the Use Uploaded File? checkbox and upload the file into the CSV Context Provider. The CSV Definition will be automatically detected and filled.

Change UnderMaintenance from a String to a Boolean, using the options from the dropdown. Also change ServiceDate from a String to a DateTime, using the dropdown. Leave the Limit Rows, Filter Criteria, and Sort by properties as their default values.

When completed, press the "Apply" button at the top of the configuration, and then save the Data Stream.

Contextualize Data

The metadata about each pump needs to be appended to each row of sensor data received from the pumps. This can be achieved with the Join Agent.

The "Contextualize Data" Join will join together the data from the CSV Context Provider and the Calculated Field using the PumpId as the common field. Configure it as follows:

  • Behavior: Context - we want to join some context data to our row.

  • Context Endpoint: Right - we must tell the Stream Object which input has Context data. The Context Data is received by the Right endpoint, as shown in the image below.

  • Select List: all fields except R_PumpId (as the same data will be in L_PumpId).

  • Join Type: Inner Join.

  • On: L_PumpId = R_PumpId

You may need to maximize the page to see the grid properly. You can do this by pressing the "Maximize" button in the top-right corner of the page. Press the "Restore" button in the top-right corner to return it to the regular size.

Press "Apply" on the Contextualize Data configuration page, and press "Save" on the Data Stream page.

Create Analytics and Calculations

In this section, we will add some analytics and calculations that will find exceptions, transform the units of the data and find the average level across 5 seconds.

Ignore Pumps Under Maintenance

We want to only pass data onward in the Stream if the current pump is not under maintenance. This can be achieved with the Filter Agent. To do this, drag in a Filter Agent and connect the "Contextualize Data" Join endpoint to the Filter.

Rename the Filter to "Ignore Pumps Under Maintenance", and save. Double-click on the Stream Object to open the configuration menu. Click on the + symbol to add a new rule for the filter. Select "Add Condition", and configure the Filter to have the logic R_UnderMaintenance Equals false.

The configuration and Data Stream should look like this:

There are two green outputs to the Filter Stream Object, the left output is where the data is output to when the filter is true. The right output is where the data is output to when the filter is false. The left True Output should be the output that you connect to the next Stream Object.

Press "Apply" on the Ignore Pumps Under Maintenance Data configuration page, and press "Save" on the Data Stream page.

Change Unit to L/s

The data from the Pump Data has different units than what we want to use - it is measured in L/m and we want the units to be in L/s. This can be solved with the Calculated Field Agent. To transform the data, drag in a Calculated Field Agent, and rename it to "Change Unit to L/s".

Connect the "Ignore Pumps Under maintenance" Filter endpoint to the Calculated Field and Save. Make sure you connect the left True Output of the "Ignore Pumps Under maintenance" Stream Object to the Calculated Field's input.

Configure the Calculated Field as follows:

  • Calculated Field: L_FlowRate

  • Expression: L_FlowRate / 60

  • Data Type: Double

This will divide the flow rate by 60 to make the value in L/s instead of L/m.

Press "Apply" on the Change Unit to L/S configuration page, and press "Save" on the Data Stream page.

Average across 5 seconds

The Use Case requires that engineers should be alerted if the flow rate averaged over 5 seconds falls below 250 L/s, and if the temperature averaged over 5 seconds also starts to rise above 130°C then a critical level alert should be raised. This can be achieved with the Aggregate Agent.

To calculate the average temperature and flow rate over 5 seconds, drag in the Aggregate Agent and name it "Average across 5 seconds". Connect the "Change Unit to L/S" Calculated Field endpoint to the Aggregate Agent and save.

You may need to maximize the page to see the grid properly. You can do this by pressing the "Maximize" button in the top-right corner of the page. Press the "Restore" button in the top-right corner to return it to the regular size.

Configure the Aggregate Agent as follows:

  • Attributes to group on: L_PumpId

  • Aggregate:

    • Average (of) L_FlowRate (as) FlowRateAvg

    • Average (of) L_WaterTemperature (as) CoolantTemperatureAvg

  • Unit: Second

  • Size: 5

Press "Apply" on the Average across 5 seconds configuration page, and press "Save" on the Data Stream page.

Data Conversion

We want the data for the average flow rate to be in integer format to display it more easily. This can be achieved through the Data Conversion Agent. To do this, drag in a Data Conversion Agent and rename it to "Data Conversion". Connect the "Average across 5 seconds" endpoint to the Data Conversion Agent and press "Save" on the Data Stream page.

Configure the Data Conversion Agent with the following two rows (You may need to maximize the page again). Click on the + symbol to add each row:

First row:

  • Input Column: "FlowRateAvg"

  • Output Alias: "FlowRateAvg"

  • Data Type: "Int64"

Second row:

  • Input Column: "CoolantTemperatureAvg"

  • Output Alias: "CoolantTemperatureAvg"

  • Data Type: "Int64"

The input columns should already have FlowRateAvg and CoolantTemperatureAvg as options listed in the dropdown menu.

This will replace the FlowRateAvg and CoolantTemperatureAvg with values converted to Integer format.

Press "Apply" on the Data Conversion configuration page, and press "Save" on the Data Stream page.

Output Formatting and Action Integrations

In this section, we will integrate our Data Stream with the App Designer to trigger Recommendations and send data to Apps.

Run Recommendation

First, we want to trigger Recommendations with the data from the Data Stream. This can be achieved with the Run Recommendation Agent. To do this, drag in a Run Recommendation Agent and rename it to "Run Recommendation". Connect the "Data Conversion" endpoint to the Run Recommendation Agent and press "Save" on the Data Stream page

Configure the Run Recommendation Stream Object as follows:

  • Url: the URL of the App Designer site

  • Key: the App Designer Key.

  • Output on first occurrence Only?: true

  • Entity Identifier: L_PumpId - this is for the Recommendation to create separate Alerts for each Entity

  • Columns To Return: Leave empty (Return all columns)

Otherwise, the App Designer URL and Key can be found by following these steps:

  1. Open the App Designer in a new tab by clicking the "Waffle" button (a.ka. "App Launcher") in the top left corner of the page and clicking "App Designer".

  2. Copy the App Designer URL from the browser's address bar and paste it into the Url field in the Run Recommendation configuration.

  3. Click the "Settings" button in the top bar and click the "Copy" button to the right of the Integration Key and paste it in the Key field in the Run Recommendation configuration. You will only be able to see this if you have Admin access. If you do not have Admin access, you can ask an Admin to share the key with you.

If you are configuring the URL and Integration Key without using variables, make sure you uncheck the "Use Connection Variables" checkbox option first.

This is how your Data Stream and configuration should look:

Press "Apply" on the Run Recommendation configuration page, and press "Save" on the Data Stream page.

XMPro App

We want to send data to an App to be displayed as a decision support dashboard for the engineers. This can be achieved through the XMPro App Agent.

Drag two XMPro App Agents onto the Data Stream and name them "Post Pump Overview" and "Post Pump Specifics". One will send an overview of the data for all pumps, and the other will send a large cached amount of data for each pump.

Now we run into a problem; we want to connect multiple agents to the same data. To solve this, drag a Broadcast Agent into the Stream, and rename it to "Broadcast". Disconnect the "Ignore Pumps Under Maintenance" input arrow and connect it to the new Broadcast Stream Object. You can disconnect the arrow by highlighting the arrow itself and clicking on the "Delete" button at the top of the Data Stream.

Alternatively, you can click on the green rectangle (input) on the "Ignore Pumps Under Maintenance" Stream Object, and drag the arrow to the green rectangle (input) of the "Broadcast" Stream Object. Connect the Broadcast endpoints to the two XMPro App Stream Objects and the "Ignore Pumps Under maintenance" Filter, as shown in the video below:

Press the "Save" button at the top of the Data Stream. Your Data Stream should now look like this:

Configure the "Post Pump Overview" Stream Object to store in cache and output only one row per pump as follows: (Follow the steps given for the Run Recommendation Agent above to get the Url and Key.)

  • Url: the URL of the App Designer site

  • Key: the App Designer Key.

  • Cache Size: 1

  • Replace Cache: false

  • Cache Per Entity: true

  • Entity Identifier: L_PumpId

  • Primary Key: L_PumpId

If you are configuring the URL and Integration Key without using variables, make sure you uncheck the "Use Connection Variables" checkbox option first.

Press "Apply" on the Post Pump Overview configuration page and press "Save" on the Data Stream page.

Configure the "Post Pump Specifics" Stream Object to cache and output 20 rows per pump as follows:

  • Url: the URL of the App Designer site

  • Cache Size: 20

  • Replace Cache: false

  • Cache Per Entity: true

  • Entity Identifier: L_PumpId

  • Primary Key: L_PumpId and L_ReadingNo

If you are configuring the URL and Integration Key without using variables, make sure you uncheck the "Use Connection Variables" checkbox option first.

Press "Apply" on the Post Pump Specifics configuration page and press "Save" on the Data Stream page.

Your Data Stream is now complete. To start the stream, click on the "Publish" button. To see the data flow at each Stream Object, press the "Live View" button and select all the Stream Objects. Alternatively, you can also select specific Stream Objects. For example, if you just want to see the data flowing through to the XMPro App, select the XMPro App Stream Object.

Troubleshooting the Data Stream

To see if data is flowing properly within the Data Stream, you will need to Publish the Data Stream. Before publishing, you want to make sure there are no errors in the configurations of the Stream Objects. Click on the "Integrity Check" option at the top of the Data Stream. If any errors are present, the Stream Object with the errors will turn red. Hovering over the Stream Object will show you the list of errors. Once these errors are fixed, you will need to run the Integrity Check again.

Once all Stream Objects have passed the Integrity Check, you can click on "Publish", then "Live View", on the top of the Data Stream. The Live Data will open on the side, and you can then click on "Select Views" to click on the Stream Objects you want to troubleshoot.

If data is displaying for the Stream Object, that means the Stream Object should be working correctly. If not, you can recheck your configuration values for the Stream Object. You can also check if you have a Stream Host running. There are also other ways that you can troubleshoot Data Streams.

2. Create Event Rules & Recommendations

The Use Case requires that engineers should be alerted if the flow rate averaged over 5 seconds falls below 250 L/s, furthermore, if the temperature averaged over 5 seconds also starts to rise above 130°C then a critical level alert should be raised. To achieve this we will use Recommendations.

Recommendations can be found in the App Designer. Open the App Designer in a new tab by clicking the button in the top left corner of the page and clicking "App Designer".

To access the Recommendation management section of the App Designer, click on the "Recommendations" button in the left menu and press the "Manage Recommendations" button on the page.

Create Event Rule and Rule Logic

To trigger the required Alerts, we will be creating a Recommendation with two Rules. First, create a Recommendation called "Pump Flow Threshold". The Data Stream should be the same "Pump Condition Monitoring" stream we created previously.

To create a new Recommendation, follow the steps below after navigating to the Recommendation management page:

  1. Click "New".

  2. Specify a name and category for your new Recommendation.

  3. Choose a Data Stream to receive data from.

  4. Click "Save".

Make sure to click the "Manage Access" command and give at least yourself Run Access, otherwise, you won't be able to see any Recommendation Alerts that will be generated by this Recommendation.

This Rule will notify Engineers when the Flow Rate is lower than 250 L/s and give them instructions and resources to help resolve the issue.

Select the Enable Execution Order checkbox, since we want the more critical rule to override the medium rule. Create a Rule by pressing the + button to the right of the Rules list.

Give the Rule the following properties:

The tags for the Alert Heading and Alert Description fields will not work if they are copied and pasted into the field. You will need to select the tags yourself by adding an @ symbol and selecting from the tags in the list.

Name
Value
Description

Rule Name

Medium - Flow rate falling

The Rule Name is for identification only and will not be shown to the user in the Recommendation Alerts grid or detailed view.

Alert Headline

Warning @L_PumpId: Flow rate is falling

This refers to the headline that the Recommendation Alert will be created with. Any tag (starting with @) will be replaced with the value output from the Data Stream. Add tags by typing @ and selecting the item.

Alert Description

Flow rate is reported to be falling, danger of plant overheating and shutdown. Flow Rate: @FlowRateAvg Coolant Temperature: @CoolantTemperatureAvg

This refers to the description that the Recommendation Alert will be created with. Any tag (starting with @) will be replaced with the value output from the Data Stream.

Alert Ranking

Medium

The priority level that the Recommendation Alert will be created with. Priority level determines the order in which the Alerts will be displayed.

Icon

The icon that will be displayed on the Recommendation Alert in the grid and in detailed view.

Impact Metric

Prefix: $

Value: 15

Unit of Measurement: K

The impact that the Recommendation Alert will have. For example, if the value for this was $15K, that means that the cost of the condition causing the Alert would be $15K (or $15000). This will be shown on Alerts in the Recommendation Block in App Pages.

Rule Logic

FlowRateAvg Is less than or equal to 250

Data sent from the selected Data Stream is passed through the Rule Logic and if the conditions created are met by the data (and if Recurrence is set to All Occurrences or First Occurrence and no Pending Alert exists), a new Recommendation Alert will be created.

You can add new conditions or groups by clicking the + button. Groups can be nested within each other to create advanced logic. In an "And" group, all the conditions must be true, and in an "Or" group, only one of the conditions must be true to trigger an alert.

The Rule Logic determines whether a Recommendation Alert will be created on receiving data from the Data Stream.

Create recommendations & Triage Instructions

There should be some instructions for the engineers to follow to help resolve the issue when it occurs. This can be provided through the Triage Instructions.

Continue creating the Rule with the following properties:

Name
Value
Description

Enable Form

false

Additional Recommendation Management Column

-

An additional column in the Recommendation Alerts grid.

Resolution

Manual

Resolution determines whether new data from the Data Stream will automatically resolve the Recommendation Alert if the Rule Logic is no longer true.

Manual Resolution: A user must manually resolve each recommendation.

Automatic Resolution: Recommendation auto resolves when trigger conditions are no longer true. This may impact performance.

Recurrence

First Occurrence

Recurrence determines whether new data from the Data Stream will create new Recommendation Alerts if there already exists a Pending Recommendation Alert and the Rule Logic is true. Recurrence will create an Alert for each unique Entity selected by the Data Stream. For example, since there are three pumps (A, B, and C), each pump will generate its own Alert when something goes wrong, and it will need to be resolved before new Alerts for that pump are created.

First Occurrence: The current recommendation must be resolved before others can be triggered for the same rule.

All Occurrences: A new recommendation will be triggered every time the rule conditions are true.

Recurrence will be disabled and be considered to be First Occurrence if the Recommendation has Execution Order enabled.

Log Data On

First Occurrence

Determines whether new events from the Data Stream that satisfy the Rule Logic, after a recommendation has been triggered, will be logged or not.

First Occurrence: Current recommendation will only log the initial event which triggered the recommendation.

All Occurrences: Event data will be stored for every instance that satisfies the rule logic.

Enable Triage Instructions

true

A flag that determines whether the Recommendation Alert will be created with Triage Instructions.

Triage Instructions

Instructions to help whoever is resolving the Recommendation Alert.

Find the Triage Instructions below to copy for this use case.

Possible problems causing a discharge pressure drop:

Blocked Suction Pipe

A partial obstruction can be caused by a piece of foreign material being drawn across the bottom of the suction pipe during the operation of the pump. Such an obstruction may not be sufficient to stop operation completely, but will result in a reduced output from the pump. It will also cause a drop in discharge pressure and amps, and will increase the vacuum reading on the pump suction. Rough running and vibration of the pump may also occur due to cavitation within the pump.

Blocked Impeller

Impellers are capable of passing a certain size particle. If a particle larger in size enters the suction pipe, it may become lodged in the eye of the impeller, restricting the output of the pump. Such an obstruction will usually result in a drop of amperes and a drop in both discharge pressure and suction vacuum readings. The out-of-balance effects resulting from this condition may cause pump vibration.

SHUTTING DOWN PROCEDURE

Before you shut down the pump, it should be allowed to operate for a short period on only clean water to clear the system.

Then proceed as follows:

  1. Depress the ‘STOP PUMP’ push-button on the control panel.

  2. Gland seal water (if any) must be left on during all subsequent operations, namely: start-up, running, shutdown, runback and system drain. Gland water may only then be turned off.

Provide additional resources for decision support

You can provide the Engineers with helpful links to videos, PDFs, or websites to help resolve the issue with the Resources.

Continue creating the Rule by checking Enable Resources and adding the following Resources:

Resource
Url

Test Procedure

http://xmdocsdownload.s3.amazonaws.com/Technical/WarmanETP.pdf

You can see this rule in action by clicking the "Publish" command in the Recommendation and in the Pump Condition Monitoring Data Stream. If the average flow rate coming from the Data Stream is lower than 250 L/s the Rule will generate an Alert for each Pump that can be viewed in the Recommendation Alerts grid.

Click on the "Recommendations" button to go back to the Recommendation Alerts grid.

To see more details about the alert, click on a row in the "Recommendation Alerts" grid. The Recommendation Alert page provides details of the alert and allows you to monitor, discuss, and take action.

Multiple Rules and Rule escalation

We want to trigger new Alerts that override the Medium level alert raised before if the temperature averaged over 5 seconds also starts to rise above 130°C.

To do this we will create the second Rule and configure the escalation settings. This second Rule will notify Engineers when the Coolant Temperature is higher than 130°C and Flow Rate is lower than 250 L/s and give them instructions and resources to help resolve the issue.

To create another Rule, click on the Recommendations page from the left-hand menu, and click on "Manage Recommendations". Select the "Pump Flow Threshold" Recommendation that was created previously.

To make amendments to the Recommendation, you will first need to unpublish the Recommendation, by clicking on the "Unpublish" button at the top of the Recommendation. Finally, click on the "plus" symbol under "Rules" to add the new Rule.

Create the new Rule with the following properties:

Name
Value

Rule Name

Critical - Plant is overheating

Alert Headline

Alert @L_PumpId: Plant has started to overheat due to low flow.

Alert Description

Plant is overheating due to low flow rate, immediate action is required to avoid damage. Temperature: @CoolantTemperatureAvg Flow Rate: @FlowRateAvg

Alert Ranking

High

Icon

Impact Metric

Prefix: $

Value: 25

Unit of Measurement: K

Rule Logic

FlowRateAvg Is less than or equal to 250

CoolantTemperatureAvg Is greater than 130

Enable Form

false

Additional Recommendation Management Column

-

Resolution

Manual

Recurrence

First Occurrence

Log Data On

First Occurrence

Enable Triage Instructions

false

Enable Resources

false

We also want the Critical Rule to override the Medium Rule. To do this, ensure that the Enable Execution Order and Auto-Escalate checkboxes are ticked in the Recommendation, and reorder the Rules to put the Critical Rule at the top.

You can see the full Recommendation in action by clicking the "Publish" command in the Recommendation. Ensure that your Data Stream is also published and running. If the average coolant temperature is higher than 130°C and the average flow rate coming from the Data Stream is lower than 250 L/s the Rule will generate an Alert for each Pump that can be viewed in the Recommendation Alerts grid. Any pending Alerts from the Medium rule will be resolved and escalated to the new Alert.

3. Create Event Boards & Apps

The Use Case requires that the Engineers should be provided a view to check the history of Pump telemetry, maintenance records, and Reservoir Level in order to enable them to take necessary action. This requirement can be met through the use of an App with a couple of Pages.

Layout Event Boards

First, create an Application (or App) by pressing the "New Application" button in the left menu and clicking the "Blank App" template.

Give the App the following properties:

  • Name: "Power Plant THG Event Board"

  • Description: "An App to monitor assets at a power plant."

  • Category: any

  • Default Theme: Dark

  • Landing Page Layout: the first item

Click on the "Save" button. This will take you to a page where you can view the list of pages in the App or edit the App itself. Click on the Landing Page to edit it.

App Layout

We will want two sections on the landing page, so follow the steps to duplicate the Vertical Stacked Layout as shown in the screenshot below.

  1. Click "Page Layers".

  2. Click on the carets to expand the layers until you reach the second Vertical Stacked Layout.

  3. Click on the Vertical Stacked Layout.

  4. A blue toolbar will appear at the top-right corner of the block. Press the third button with a "Clone" symbol to duplicate the Vertical Stacked Layout and everything it contains.

The result should look as below:

You can rename both Vertical Stacked Layouts to identify them. In the Page Layers tab, double click the Left Vertical Stacked Layout to change the text to 'Left Vertical Stacked Layout'. Double click on the text of the other Right Vertical Stacked Layout and rename that to 'Right Vertical Stacked Layout'.

The left side of the page should be twice as wide as the right side, so follow the steps to change the Left Vertical Stacked Layout's Flex Grow property in the Block Styling to 2 as shown in the screenshot below.

  1. Make sure the Left Vertical Stacked Layout is still selected in the Page Layers.

  2. Click the "Block Styling" button to open the style manager.

  3. Click the "Flex Layout" accordion item to expand it.

  4. Change the Grow field to 2.

  5. Press the "Save" button at the top of the Application designer.

The result should look like this:

We want to display the properties of the pumps in regularly spaced and sized cards on an App page. To do this, create one card with a Data Source, which will repeat the card for each pump.

Change the Left Vertical Stacked Layout's Display property in the Block Styling to block, so that the cards will overflow to however many pumps are present.

Press the "Save" button at the top of the Application designer.

Follow the steps below to select the left Card and delete it. We will replace the default Card with a useful layout.

  1. Open the Page Layers.

  2. Expand to the Left Vertical Stacked Layout's Card.

  3. Click the Card item to select the Card element.

  4. Click the last button on the blue toolbar to delete the Card.

Replace the deleted Card by dragging in a Card from the Blocks, which will include some extra items.

We want the card to take up half the width of the left section, and overflow to the next line when there are more than 2 cards.

  1. Select the new Card using the Page Layers tab.

  2. Click on the "Block Styling" tab.

  3. At the top, in the "Style Group" field, click on the checkbox on the left of the "card-gutter" tag to unselect the card-gutter style group. This is because we only want to apply styles to this specific element.

  4. Under the "General" subsection, change "Display" to "inline-block".

  5. Under the "Dimensions" subsection, change the Width to 50.

  6. Under the "Dimensions" subsection, change the unit to %.

Rename the Metric text items to "Status", "Flow Rate", and "Coolant Temperature". You can double-click the text items and change the text. The Status should show an Indicator (a colored circle) to display the status of the pump. Delete the top Value.

Right-align the remaining two Values by expanding the Typography section and changing the Text Align property to Right.

Drag two Indicator Blocks from the Blocks tab into the deleted Value text item's box. Click the Box and change the Flex Justify to End. This will align the Indicators to the right side of the box.

The "Status" indicator should be red or green, depending on whether the pump is under maintenance or not. Change the left Indicator's Color in the Block Properties to "#ad6363" (red), and the right to "#398a33" (green).

Data Source for Pump Data

Add the Data Source that will be used to display our pump data.

  1. Click on the "Page Data" button.

  2. Click the + button next to Data Sources.

  3. Add a Data Source with Name as Pump Data, Connection as Data Streams Connector, and Entity as Post Pump Overview.

  4. Check Live Data Updates as well to keep the data constantly updated.

  5. Click on the "Save" button.

Click the Card and set the Data Source in the Block properties tab to Pump Data. Set Show Default Row to Never, as we don't want an empty card at the end. You can also open the Page Layers tab and look at the highlighted Block to confirm that the correct Block is selected.

When the data comes in for each pump, we want the cards to display the values for each pump. To do this, we will give the values, indicators, and heading dynamic or expression values.

To change a property to Expression mode, follow the steps below:

  1. Select the block (in this case the Heading of the card) through the canvas or Page Layers.

  2. Click the "Block Properties" button.

  3. When adding an expression for the "PumpId", press the button on the left of the Text property field to toggle between Static, Dynamic and Expression value modes. Change the mode to Expression so you can enter an expression to display the Pump Id that is selected.

  4. Give the Heading's Text property an expression value of "Pump " + {L_PumpId} by clicking the button on the left side of the field twice.

Select the Value Block next to 'Flow Rate'. Click on the "Block Properties" tab and give the Text an expression value of ToStr(Round({L_FlowRate})) + " L/m". Give the Coolant Temperature Value Text Block an expression value of ToStr(Round({L_WaterTemperature})) + "°C".

The circle Indicators' Visible property should be changed to an expression value of {R_UnderMaintenance} and !{R_UnderMaintenance} respectively.

Change the text of the Title to "Pumps at Power Plant THG".

To launch the App to see how it looks, press the "Save" button at the top of the Page and then press the "Launch" button.

Each unique pump entity will have its own card, and data will be updated constantly for the Flow Rate and Coolant Temperature.

To get back to editing the App, press the "Edit" button at the top-right of the App. This button will only be shown for users who have been granted access to the App.

Drilldown Page

The Engineers want to be able to see a detailed chart and history of each pump when they click on a pump's card on the landing page. To make a new drilldown Page, close the Landing Page, and add a new Page with the + button. Name the Page "Pump Details".

To link to the newly created Pump Details Page when clicking a card, close the page and open the Landing Page again. You can click and drag the grey header of the page to the right to see the list of pages.

Click on the "Page Layers" tab. Expand the carets until you get to "Box Hyperlink", and select it.

  1. Click on the "Block Properties" tab.

  2. Change the Navigate to property to "Page", the Page property to "Pump Details", and click the "Edit" button to the right of Pass Page Parameters.

  3. Press the + button on the Pass Page Parameters page to add a new Parameter to the Pump Details Page.

  4. Name the Parameter "PumpId" and give it the Type "String".

  5. Click on "Add".

  6. As mentioned previously, clicking on the icon on the left of the textbox field can toggle between Static, Dynamic, and Expression modes. Click on the button in the Value column once to change it to 'Dynamic' mode, which is indicated by the Database symbol.

  7. Select the value "L_PumpId" as this is the value we want to pass to the drill-down page.

  8. Click "Apply" to apply your changes to the Pump Details page's Parameters and the Box Hyperlink.

To see the navigation in action, launch the Landing Page and click on one of the cards. You will be navigated to the Pump Details page.

Press the "Edit" button at the top right of the Pump Details page to edit it.

We want two cards inside the Left Vertical Stacked Layout, so select the left Card and duplicate it.

We want the top left card to be twice as tall as the bottom left card, so change the top left Card's Flex Grow property to 2 in the Block Styling. Remember to uncheck the card-gutter style group to make the style only apply to the selected element.

We want the title of the page to be the Pump's name, so change the Title's Text property to an expression value "Pump " + {Parameter.PumpId}.

We also want the Headings of the page to explain what is being shown, so change the top-left heading's text to "Details" and the bottom-left heading's text to "Maintenance History".

We need to get the data from the Data Stream. Go back to the Page Data tab, and next to 'Data Sources', click on the "plus" symbol to add another Data Source. Name the new Data Source "Pump Live Data", with the Connection "Data Streams Connector", Entity as "Post Pump Specifics", and Live Data Updates checked.

Drag a Chart into the Details card. Highlight the Chart, and in the Block Properties tab, set the Data Source of the Chart to "Pump Live Data".

Add a Filter to the Data Source of L_PumpId Equals {Parameter.PumpId}. Click on the "plus" button to start adding the filter.

When selecting the "PumpId", press the button on the left of the field to toggle between Static and Dynamic value modes. Change the mode to Dynamic so you can select a dynamic value from the dropdown. Here you can select the "PumpId" Parameter. This will make sure the chart is only showing data from the pump that we are looking at.

We want the chart to look great and display a line series in a separate panel for flow rate and temperature. To do this, edit the Block Properties of the Chart as follows:

In the Appearance accordion item set the Legend Alignment to "Align Bottom Center".

In the Axes accordion item, change Type to "Date Time", Enable Pan and Zoom to "False" and Display Grid Lines to "False".

In the Data accordion item, add two series with the + button to the right of the Series list as follows (leave the default value if it is not specified):

Property
Flow Rate Series
Temperature Series

Name

Flow Rate

Temperature

Color

#7ee2b5

#c46565

Type

Line

Line

Pane

Default

Temperature

X Axis Data

L_Timestamp

L_Timestamp

Y Axis Data

L_FlowRate

L_WaterTemperature

When making the 'Temperature' series, you will need to add a new Pane called 'Temperature.'

To add a new Pane for the chart, click the 'Edit' button next to 'Pane' in the series property page.

You can see how this looks by launching the page with the PumpId parameter "A", "B", or "C"

On this page we want to also show the Engineers the pump maintenance history. This can be achieved through the use of a grid and a SQL Data Source. Below is a script that can be used to create the table used:

CREATE TABLE [dbo].[PumpMaintenance](
	[Id] [bigint] IDENTITY(1,1) NOT NULL,
	[PumpId] [nvarchar](10) NOT NULL,
	[Timestamp] [date] NOT NULL,
	[Comments] [nvarchar](max) NOT NULL,
 CONSTRAINT [PK_PumpMaintenance] PRIMARY KEY CLUSTERED 
(
	[Id] ASC
))

INSERT INTO [dbo].[PumpMaintenance] ([PumpId], [Timestamp], [Comments]) VALUES (N'A', CAST(N'2021-05-26' AS Date), N'Routine Inspection, No issues reported.')
INSERT INTO [dbo].[PumpMaintenance] ([PumpId], [Timestamp], [Comments]) VALUES (N'B', CAST(N'2021-05-25' AS Date), N'Routine Inspection, No issues reported.')
INSERT INTO [dbo].[PumpMaintenance] ([PumpId], [Timestamp], [Comments]) VALUES (N'C', CAST(N'2021-05-24' AS Date), N'Routine Inspection, No issues reported.')
INSERT INTO [dbo].[PumpMaintenance] ([PumpId], [Timestamp], [Comments]) VALUES (N'A', CAST(N'2021-03-15' AS Date), N'High Vibration detected, main shaft replaced.')
INSERT INTO [dbo].[PumpMaintenance] ([PumpId], [Timestamp], [Comments]) VALUES (N'B', CAST(N'2021-03-14' AS Date), N'Routine Inspection, bearing replaced.')
INSERT INTO [dbo].[PumpMaintenance] ([PumpId], [Timestamp], [Comments]) VALUES (N'C', CAST(N'2021-03-13' AS Date), N'Routine Inspection, bearing replaced.')
INSERT INTO [dbo].[PumpMaintenance] ([PumpId], [Timestamp], [Comments]) VALUES (N'A', CAST(N'2021-01-04' AS Date), N'Routine Inspection, No issues reported.')
INSERT INTO [dbo].[PumpMaintenance] ([PumpId], [Timestamp], [Comments]) VALUES (N'A', CAST(N'2020-07-25' AS Date), N'Routine Inspection, bearing replaced.')

Drag a Data Grid into the Maintenance History card and edit its Block Properties. Press the + button next to the Data Source select box to add a new Data Source, and name it "Pump Maintenance."

We want to add a SQL Data Source, but we don't have a SQL Connection yet. Press the + button next to the Connection select box and click on "SQL Connector."

Give the new SQL Connector a Name, enter your own connection string, User Name, and Password, and choose a Database.

Save the Connection and select it in the New Data Source. Select the "PumpMaintenance" table and give the Data Source the name "Pump Maintenance".

Save the new Data Source and select it in the Data Grid's Block Properties.

This grid will show all the Pump Maintenance rows, but we want to show just the rows that this page is looking at. To do that, edit the Filter and add the filter logic: PumpId Equals {Parameter.PumpId}

We want to change the Data Grid's columns around to make them look good. Open the Columns accordion item, and reorder the columns by dragging the dotted handles to the left of the list. Order them Id, Comments, Timestamp, PumpId.

We don't want to show the PumpId, as it will always be the same. To hide it, click the "PumpId" row in the list and change the Visible property to "False". Apply the changes to the column.

The Timestamp column should be in Date format, not Date Time. Edit the Timestamp column and change Type to "Date".

Launch the page with the PumpId parameter "A", "B", or "C" to see this in action. It should look like this:

Easy Access to Recommendations

We want engineers to be able to see and respond to Recommendation Alerts from this App, so we should drag a Recommendations Block into the right card of both Pages. Also, rename the heading to "Recommendations".

To filter the Recommendation Alerts to the relevant ones only, select the "Pump Flow Threshold" in the Block Properties of the Recommendations Block on both pages.

On the Pump Details Page, we only want to show the Recommendation Alerts for the specific pump we're looking at. To do this, Change the Entity ID property to Equals Parameter.PumpId.

We have now completed the requirements of the Use Case. To see the App running live, click on the "Launch" button. You can also publish the App by dragging the canvas to the left to open the page list, and clicking on "Publish". Here is how the final drill-down page looks:

See the for more information on Data Streams.

Feel free to load a suitable icon. If you do not, the default icon will be used. Sample icons can be found in the .

Refer to if you are not able to find the Agents in the toolbox or the correct versions.

See the article on for more information.

It is highly recommended that you use any that you already have that store the URL or key.

It is highly recommended that you use any that you already have that store the URL or key.

Key: the App Designer Key. .

It is highly recommended that you use any that you already have that store the URL or key.

To read more about Integrity Checks, read the article.

For more ways on how you can troubleshoot a Data Stream, read the article.

An icon of your choice (hover your mouse over the default icon to upload a different one - sample icons can be found in the )

.

A flag that determines whether the Recommendation Alert will be created with a .

Feel free to load a suitable icon or use the default. Sample icons can be found in the .

Icon: Feel free to load a suitable icon. If you do not, the default icon will be used. Sample icons can be found in the .

See the article on for more information.

See the articles on and for more information.

See the article on for more information.

See the for more information.

See the article for more information.

If you are unable to see the parameters in the drop-down list, double-check that the Data Source has been applied to the correct Card block, as shown .

We want a similar layout for this page, so follow the steps from the Landing Page to duplicate the Vertical Stacked Layout, and make the left side twice as wide as the right side. .

See the article for more information.

Data Stream Concept article
Icon Library
how to configure Stream Objects
variables
variables
variables
Verifying Stream Integrity
Troubleshoot a Data Stream
Icon Library
Page Layers
How to use the Style Manager
How to use Flex
Blocks
How to Manage Access
Chart
above
See the instructions that previously showed how to do this
Icon Library
Form
Icon Library
How to Upload an Agent to Data Stream Designer
CSV (Context Provider)
Calculated Field (Transformation)
Event Simulator (Listener)
For more detail on how to find the key in the Site Settings, see this article
Join (Transformation)
For more details on Rule Logic, see this article
Dynamic and Expression Properties section of the Block Properties article
128B
AssetsContext.csv
AssetsContext.csv