Wonderware Galaxy Alarm Query Syntax: Top-Level Area Setup

Karen Mitchell13 min read
HMI / SCADATechnical ReferenceWonderware
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

1. Overview: Galaxy Alarm Query Architecture

The Galaxy in AVEVA (formerly Wonderware) System Platform is the logical container that aggregates every Area, Platform, WinPlatform, and derived attribute instance deployed from the Galaxy Repository via the IDE (IDE — Integrated Development Environment, the System Platform configuration toolset) to one or more Alarm Providers on a GR node (Galaxy Repository node). Alarm consumers — the Standard Alarm Client, the Alarm Hot Backup Manager, OMI (Operations Management Interface) Alarm widgets, InTouch, and third-party OPC A&E (Alarm & Events) subscribers — issue queries to an alarm provider using a hierarchical path. The query path follows the deployed Model View hierarchy exactly as it appears in the IDE's Model tab (not the Deployment tab).

When the path resolves to a real, deployed Area, the provider returns every alarm whose source attribute is an instance under that Area (including all nested sub-Areas). When the path does not resolve — because the segment is not a deployed Area, the area is empty, or the area is collapsed/expanded incorrectly in Model view — the query returns an empty result set, not an error. This silent-empty behavior is the most common root cause of "the query works for one area but not the galaxy" reports.

Official syntax and behavior is documented in the AVEVA System Platform Alarm Queries reference:

2. Query Syntax Reference

The alarm query syntax accepted by the Alarm Provider service follows a path-resolution model. Each component is a deployed Model View element name, case-sensitive, with the provider's logical name as the root.

Syntax Pattern Scope of Alarm Returned Use Case
\Galaxy!AreaName All alarms in AreaName and all nested sub-areas Per-area dashboards, OMI Alarm widget filter
\Galaxy!ParentArea.ChildArea All alarms in ChildArea and its descendants Drill-down queries from a plant hierarchy
\Galaxy!AreaName.<AttributeName> All alarms associated with one specific attribute template Single-signal filter, pump vibration alarm only
\Galaxy!<me.Area>!<me.tagname>.* All alarms on a derived instance whose template uses me.Area and me.tagname wildcards Instance-resolved filter using attribute references
\Galaxy Not a valid path on its own Returns nothing — there is no top-level area named "Galaxy"
\<ProviderName>\Galaxy!Area Remote node query when the Alarm Provider is on a different GR node than the client Centralized alarm viewer, multi-node topology
\<ProviderName>\Galaxy!<WinPlatform_xxx.tagname> All alarms from the WinPlatform object hosting the AutomationObject with the given tagname WinPlatform-scoped dashboards, redundancy check

The provider name is the logical name assigned to the AlarmProvider object in the IDE, not the Windows computer name. When the client connects to the local node and a single AlarmProvider named Galaxy is configured, the ProviderName\ prefix is optional. When the client must reach an AlarmProvider on a remote GR node, the ProviderName\ prefix is mandatory.

3. Why \galaxy Alone Returns No Alarms

The string \galaxy is interpreted by the alarm client as a path with a single segment: the provider itself. The provider is not a queryable container — only Areas, Platforms, and derived-attribute instances are. To return alarms, the query must traverse at least one segment below the provider that corresponds to a deployed Model View element.

For galaxy-wide visibility the path must resolve to a real Area that contains every other Area in the deployment as descendants. That container is the Top-Level Area. Without it, there is no single path that returns the entire deployed alarm set.

Critical: ArchestrA best practice requires the Model View to be built as a strict hierarchy: Company > Site > Line > Unit > Equipment. Skipping levels (for example, deploying a Line directly under Company) does not break a query, but it does break intuitive area-based filter design. The Top-Level Area must be created explicitly in the Model tab — not generated automatically by deployment.

4. Prerequisites

Before any galaxy-wide query can return results, the deployment must satisfy the following conditions:

  1. IDE installed on an engineering workstation with a Galaxy Repository connection (SQL Server-backed) and write privileges to the repository database.
  2. System Platform 2014 R2 or later is recommended; earlier versions (2012, 2012 R2) use the same query grammar but may require manual Hot Backup Manager registration. Verify your version under Help > About in the IDE.
  3. AlarmProvider service installed and running on every GR node. Confirm with sc query "ArchestrA Alarm Provider" on the GR node, or check the SMC (System Management Console) > ArchestrA Services.
  4. Model View populated in the IDE with at least one Area. Areas are created in the Model tab, not the Deployment tab.
  5. At least one deployed instance with an alarm-enabled attribute (a $Alarm derived attribute or a template attribute with the Generate Alarm option selected).
  6. Client connectivity: the Alarm Client (Standard Alarm Client, OMI Alarm widget, or InTouch AlarmView) must be configured with the same ProviderName and remote-node prefix rules.

5. Configuring the Top-Level Area in Model View

The Top-Level Area is a single Area object that contains every other Area in the galaxy as descendants. It is the only construct that makes a single, stable path capable of returning every alarm in the deployment.

  1. Open the IDE and connect to the Galaxy Repository.
  2. Select Model in the View dropdown (not Deployment — Deployment does not show Area hierarchy).
  3. Right-click the Areas node and choose New Area. Name it descriptively, for example Plant, Utility, or TopArea. The name becomes the first resolvable segment after \galaxy!.
  4. Drag and drop every existing top-level Area (e.g., Area001, Area002, Area003, TestArea, TestArea2) onto the new Top-Level Area. The IDE updates the Containment reference on each child.
  5. If the Areas are already deployed, redeploy them so the containment reference is propagated to the Alarm Provider. Right-click each Area > Deploy. Verify the deployment status indicator turns green.
  6. From the Alarm Client, issue the query: \Galaxy!TopArea. The provider resolves the path and returns every alarm whose source instance is contained (directly or transitively) under TopArea.
Model View Layout Query That Returns Full Set Status
Flat — Areas deployed with no Top-Level parent None — must enumerate each area Query returns empty for galaxy-wide path
Two-level — TopArea contains Area001, Area002 \Galaxy!TopArea Valid
Deep — Company > Site > Line > Unit > Equipment \Galaxy!Company Valid; recommended

6. Remote Node Alarm Provider Syntax

When the Alarm Client runs on a node that is not the Alarm Provider's host, the ProviderName\ prefix is mandatory. The provider name is the logical ComputerName or a DNS alias registered in the Galaxy > ComputerNames container — never the Windows NETBIOS name unless they are explicitly aliased.

Syntax:

\\ProviderName\Galaxy!AreaName

Where:

  • ProviderName — the logical name of the remote Alarm Provider as registered in the Galaxy.
  • Galaxy — the literal provider root. On remote nodes this is not optional, even if the local node has a single provider also called Galaxy.
  • !AreaName — the deployed Area, exactly as named in Model view.

For a galaxy named Utility hosted on a remote provider named AlarmNode01, the correct galaxy-wide query is:

\\AlarmNode01\Galaxy!Utility

Common remote-node failures and their causes:

Symptom Likely Root Cause
Query returns empty set Wrong provider name, DNS alias not registered, or Areas not contained under Utility in Model view
Client times out after 30 s Firewall blocking ArchestrA communication ports (default UDP 5425, TCP 5427); verify with netstat -an | findstr 5427 on the provider node
"Provider not found" error in client ProviderName not resolvable from the client node; verify with ping ProviderName and nslookup ProviderName
Alarms appear locally but not on remote client Remote client's User Account lacks ArchestrA Alarm Read privilege; check SMC > Security > User Accounts

7. Hot Backup and Primary/Backup Provider Behavior

When a galaxy is configured with Hot Backup via the Hot Backup Manager, the Alarm Client can subscribe to either the primary or the backup provider. The \galaxy! path, as documented in the AVEVA alarm reference, returns alarms from whichever provider is currently active — the AVEVA documentation states the query "Shows all alarms from primary or backup alarm provider as configured in the Hot Backup Manager."

This behavior is intentional: a successful query that returns an empty set when the primary is healthy almost always means a Model View containment issue, not a Hot Backup issue. A successful query that returns an empty set only during failover indicates that the backup provider's deployed Areas differ from the primary's — verify by running aaDeployCheck on both nodes.

Note: If the Hot Backup Manager is in Force Backup state for an extended period, the \galaxy! query will target the backup, which may have a smaller deployed footprint if backup nodes are staged with reduced Areas. Always confirm the active provider before interpreting empty results.

8. Standard Alarm Client Configuration for Galaxy-Wide Display

To bind the Standard Alarm Client (or OMI Alarm widget) to a galaxy-wide query so the banner shows every alarm in the deployment:

  1. Open the Alarm Client configuration (SMC > Alarm Client or the OMI Alarm widget's Properties panel).
  2. Locate the Filter / Query String field.
  3. Enter the Top-Level Area path, for example \Galaxy!TopArea. For a remote provider, use \\AlarmNode01\Galaxy!TopArea.
  4. Set the filter mode to Server Filter (preferred for large alarm sets) rather than Client Filter. Server-side filtering reduces the OPC A&E event stream and improves client responsiveness.
  5. Set Priority to include the full range 1–999 to avoid silent exclusion.
  6. Enable Hold and Shelved filter inclusion if the operational requirement is total visibility, or disable for unacknowledged-active only.
  7. Click Apply and verify the alarm count equals the total expected from the Alarm Summary report.

9. Common Query Failures and Root Causes

Query Attempted Symptom Root Cause Fix
\galaxy Empty result set Provider is not a queryable container Add a Top-Level Area and use \galaxy!TopArea
\galaxy!<myPlatform.tagname> Empty result set Tagname refers to a Platform template name, not a Model View Area Use the deployed Area name from Model view, not a template name
\galaxy!<WinPlatform_001.tagname> Empty result set WinPlatform is the host, not the queried area Target a child Area of the WinPlatform instead
\galaxy!Utility Empty result set on local node Instances are not contained under Utility in Model view Re-parent Areas under Utility in Model tab and redeploy
\\AlarmNode01\Galaxy!Utility Empty result set ProviderName prefix is correct but the area Utility was not deployed to AlarmNode01 Verify deployment target on the Area's Deployment tab and redeploy
Any query Intermittent dropouts Alarm Provider service stopped or restart pending Check SMC > ArchestrA Services, restart if needed
Any query "Access Denied" Client user lacks Read on alarm events Grant ArchestrA Alarm Read via SMC > Security

10. Step-by-Step: Building a Queryable Galaxy

This procedure converts a flat Model View (no Top-Level Area) into a hierarchical view that supports galaxy-wide queries.

  1. Audit the existing Model View. In the IDE, open the Model tab and list every Area currently present. Record each Area's Name, Description, and current parent.
  2. Design the hierarchy. Decide on a single naming convention. A common pattern: Company > Site > Area > SubArea. The top of the pattern is the Top-Level Area.
  3. Create the Top-Level Area. In the Model tab, right-click Areas > New Area. Name it to match the chosen convention's root (for example, Plant). Set the Description field for documentation.
  4. Re-parent the existing Areas. Drag each existing top-level Area onto the new Top-Level Area. The containment reference updates in the IDE; deployment is still required.
  5. Resolve redeployment conflicts. If any Area is already deployed, mark it For Delete in the Deployment tab, redeploy to remove it, then redeploy under the new parent. Skipping this step leaves the Alarm Provider with two disjoint containments and queries against the new parent return nothing.
  6. Deploy the Top-Level Area. Right-click Plant > Deploy. Verify the deployment indicator turns green and the Alarm Provider log records the new area.
  7. Deploy child Areas. Redeploy each child Area to propagate the new containment. Bulk-select and deploy to reduce time.
  8. Test with the Standard Alarm Client. Issue \Galaxy!Plant against the local provider. Confirm the returned alarm count matches the sum of all child Areas.
  9. Test with the OMI Alarm widget. Bind a banner widget to \Galaxy!Plant with server-side filter mode. Confirm a low-priority test alarm appears within 2 s of trigger.
  10. Document the Top-Level Area in the project README so future engineers do not flatten the hierarchy.

11. Verification Checklist

Use this checklist to confirm the galaxy-wide query is operating correctly:

  • Model view shows a single Top-Level Area containing every other Area.
  • Deployment status of Top-Level Area is Deployed (green indicator) on every GR node.
  • Deployment status of every child Area is Deployed and shows the correct parent in the Containment field.
  • Alarm Provider service is Running on every node that hosts deployed Areas.
  • \Galaxy!TopArea from the local Alarm Client returns the expected alarm count.
  • \\<ProviderName>\Galaxy!TopArea from a remote Alarm Client returns the expected count.
  • Hot Backup Manager reports both primary and backup providers in In Sync state.
  • User account used by the client has ArchestrA Alarm Read privilege.
  • No firewall rules are blocking UDP 5425 or TCP 5427 between client and provider.

12. Best Practices for Galaxy Model View Design

  • One Top-Level Area per galaxy. Multiple competing top-level areas fragment the alarm namespace and produce ambiguous queries.
  • Use containment, not naming, to express hierarchy. Embedding SiteA_Line1_Unit2 in a flat name is not a substitute for proper containment. Containment is what the Alarm Provider indexes.
  • Match the Model hierarchy to the operational hierarchy. Operators think in plant > line > unit terms; the query paths should mirror that mental model.
  • Plan for one Area per alarm query. The AVEVA best-practice rule is that every distinct alarm query the application issues should map to a distinct Area path. Designing Areas around queries — not around physical layout alone — simplifies both client configuration and access control.
  • Document area-to-query mapping in the project repository (typically the Docs/AlarmMap.md file) so support engineers can resolve "empty query" tickets without re-deriving the hierarchy.
  • Redeploy after any Model view change. Containment references are not live; the Alarm Provider only learns about them during deployment.

Frequently Asked Questions

Why does \galaxy return no alarms when the documentation seems to suggest it should return everything?

The provider name galaxy is the query root, not a queryable container. The alarm client interprets \galaxy as a path with no segments below the provider, and the provider returns an empty set. You must append a deployed Area name, for example \galaxy!TopArea, where TopArea is an Area that contains every other Area as a descendant in the Model view.

Do I need a Top-Level Area, or can I just enumerate every area in the client filter?

Enumeration works for small deployments but does not scale: a 50-area plant requires a 50-segment filter, and any new area requires a client reconfiguration. A Top-Level Area produces a single stable path (\galaxy!TopArea) that automatically includes every area re-parented under it. This is the recommended ArchestrA best practice.

What is the correct syntax for querying alarms on a remote Alarm Provider node?

Use \<ProviderName>\Galaxy!AreaName where ProviderName is the logical name registered in the Galaxy, not the Windows computer name. For example, \AlarmNode01\Galaxy!Utility. The provider name prefix is mandatory for remote nodes and optional for the local node.

Does the query change behavior when Hot Backup is enabled?

No, the path grammar is identical. The Hot Backup Manager decides which provider (primary or backup) actually serves the query at runtime. If the active provider's Model view does not include the queried Area — for example, after a partial deployment to a backup node — the query returns an empty set even when the path is correct.

Why does the same query return alarms in the IDE's Test Query dialog but not in the Standard Alarm Client?

The two consumers apply different filters. The Test Query dialog in the IDE shows the raw result of the provider query, while the Standard Alarm Client applies additional Priority, State, Hold, and Shelved filters. Set the Alarm Client to All States and the full priority range (1–999) to verify the path is the cause, not a client-side filter.

Back to blog