Legacy XML

Achieve compatibility with X4

The Legacy XML contains conversion information that is necessary to run an AOP device adapter module under WinGuard X4.

On the one hand, it is necessary to map the Object types coded as strings in X5 to the data types coded as integers in X4 and also the Operations coded as strings in X5 to the commands coded as integers in X4. On the other hand, the X4 command parameters must also be converted to X5 Operation Properties and the X4 event text macros to X5 Event Properties.

The format for the definition is essentially based on the Module XML and contains a comparable <Object> definition structure in the root element <LegacyDef>. Here, however, the Objects, Operations and Events are listed only with ID, in order to define the mapping with special attributes such as datatype, link etc. A Legacy XML is therefore always to be understood only in connection with the corresponding Module XML.

The default name of the file is derived from the name of the module. “MyMod”, for example, uses the Legacy XML file MyMod.legacy.xml, etc. This can be customized using the <LegacyDef> definition in the Manifest XML.

With regard to the mapping of the link, two fundamentally different modes are supported:

URL

The URL (the part starting from the ‘:’ after ‘ext[]’) is entered in the legacy Datapoint in address2. The other fields (node, address) are not used.

💡 This mode is usually used by the Extensions that were developed for X5.

ADR

The address fields in the legacy Datapoint are used as usual. Via the same Node entry, for example, system and contained Objects are assigned, etc.

In this mode, the individual address properties must be listed explicitly in the legacy XML and the storage location in the legacy Datapoint must be defined.

💡 This mode is used by all Extensions that were developed for X4 and are now to run in X5.

<LegacyDef>

Root Node of the XML file with the following possible sections:

Description
<Objects> Container for <Object> definitions of the Objects including mapping information.
<Activities> Container for <Activity> definitions of the Activities including mapping information.
<Incident> Mapping information for properties of an Incident.

<Objects>

Container with a list of <Object> definitions.

The Objects can be defined flatly by specifying their full type, but a hierarchical definition based on the Module XML with the use of automatic type generation is recommended. (→ <Object>).

<Object>

Defines the legacy mapping for an object type. The type is either specified explicitly or derived from the ID (see below).

Description
id Symbol. Determines the URL entry for this Object.
Indirectly determines the type together with the parent Object IDs, separated by a dot (.) (automatic type generation).
The empty ID is intended for the “Internal” data type, which is addressable via the URL “ext[n]:”.
type (optional) Symbol Path. Specifies the type directly, the ID and the IDs of the parent Objects will then not be used for type generation.
if type="" is specified, this Object cannot be instantiated by WinGuard.
ref Symbol Path. Defines the type directly, the definition is done elsewhere and is only referenced here, no deviating definitions can be made for the Object.
extends Symbol Path. The definitions of the specified Object are completely taken as basis for the definition of this Object and can be extended based on that.
sensor Is treated as a sensor/detector in X4 or member in X5.
datatype Data type number of the legacy Object. Data type number for a sensor must match the number of the related Datapoint.
<Property>… Mapping of properties if required. For the properties used for addressing it can be defined here where this information is stored in the legacy Datapoint.
<Event>… Mapping of Event properties if required.
<Operation>… Mapping of operation ID to command ID as well as the parameters.
<Object>… Any sub-object definitions (like object itself).

<Property>

Defines a Property mapping for the Object.

Description
id Symbol. Uniquely identifies the Property within the parent element.
link Defines for address Properties where the value is stored in the legacy Datapoint.

Possible values:

- address
- address_hiword
- address_hiword_hibyte
- address_hiword_lobyte
- address_loword
- address_loword_hibyte
- address_loword_lobyte
- node
- address2

💡If an Extension uses the URL mode (see above), no specification is required and the property does not need to be listed at all. Otherwise, the storage location has to be specified for each address property.

<Event>

Defines Event property mappings for the Object.

Description
id Symbol. Uniquely identifies the Event within the parent element.
extends Symbol. The definitions of the given Event are taken completely as the basis of the definition of this Event and can be extended based on that.
<Property>… Optional properties of the Event

<Property>

Defines a property mapping for an Event.

Description
id Symbol. Identifies the property uniquely within the Event.
textmacro Number of the text macro in which the property is stored in the legacy Event. Needs to be higher than 5.
format Specifies how the property is formatted when displayed in WinGuard. Possible values:

- “timeshort” - uses the short time format specified in the WinGuard settings
- “timelong” - uses the long time format specified in the WinGuard settings
- “dateshort” - uses the short date format specified in the WinGuard settings
- “datelong” - uses the long date format specified in the WinGuard settings
- “dateverbose” - uses the verbose date format specified in the WinGuard settings
- “dateshorttimeshort” - uses the short date format and the short time format specified in the WinGuard settings
- “dateshorttimelong” - uses the short date format and the long time format specified in the WinGuard settings
- “datelongtimeshort” - uses the long date format and the short time format specified in the WinGuard settings
- “datelongtimelong” - uses the long date format and the long time format specified in the WinGuard settings

The corresponding WinGuard settings can be found under Global Settings → System → Format.

Only works for properties that have type “time” set in the module XML.

If it is defined, the property definition’s “kind” attribute from the module XML is used as a fallback, so you don’t necessarily have to supply a “format” attribute in the legacy XML.

<Operation>

Defines an Operation mapping for the Object.

Description
id Symbol Path. Identifies the Operation uniquely within the Event.
command Number of the legacy command. Range [1,999]. If the Extension flag MULTISTATION is set, commands with ID < 499 are always executed at the local station, in all other cases they are routed to the main port.
event =1 → Legacy command for Event available
appcommand Legacy global command for this command. Possible values:
- “ON”: Turn object on. Parameters: (none)
- “OFF”: Turn object off. Parameters: (none)
- “REVON”: Set revision on. Parameters: (none)
- “REVOFF”: Set revision off. Parameters: (none)
- “ACTIVATE”: Activate the object. Parameters: (none)
- “DEACTIVATE”: Deactivate the object. Parameters: (none)
- “ARM”: Arm the object. Parameters:
 - “ConfirmUnconditionalArm” (optional, bool): If true, skips the check whether the whole data object group is in “silence” State.
- “DISARM”: Disarm the object. Parameters: (none)
- “RESET”: Reset the object. Parameters: (none)
- “SETVALUE”: Set analog output value. Parameters:
 - “Value” (string): The value to set.
- “SETDISPLAYTEXT”: Set the display text of an object. Parameters:
 - “Text” (string): The text to display.
 - “Line” (int): Adapter-specific option how to display the text, e.g., a number of rows for the text, etc.
- “OPEN”: Sent when a door open button is pressed. This command can be used if no distinction between the keydown and keyup event is needed. Parameters:
 - “SrcIntercomUrl” (optional, string): The source Intercom URL.
- “OPENDOWN”: Send to trigger the push (i.e., keydown event) of a door open button. Parameters:
 - “SrcIntercomUrl” (optional, string): The source Intercom URL.
- “OPENUP”: Send to trigger the release (i.e., keyup event) of a door open button. Parameters:
 - “SrcIntercomUrl” (optional, string): The source Intercom URL.
- “MICDOWN”: Send to trigger the push (i.e., keydown event) of a microphone (push-to-talk) button. Parameters: (none)
- “MICUP”: Send to trigger the release (i.e., keyup event) of a microphone (push-to-talk) button. Parameters: (none)
<Property>… Optional properties of the Operation.

<Property>

Defines a property mapping for an Operation.

Description
id Symbol. Identifies the property uniquely within the Operation.
source Storage location of the properties in the legacy command (SSTOutput). Possible values:

- param1
- param2
- sparam1
- sparam2

<Activities>

Container with a list of <Activity> definitions.

<Activity>

Defines the legacy mapping for an Activity type.

Description
id Symbol. The ID of the Activity.
<Property>… Mapping of properties.

<Property>

Defines a property mapping for an Activity.

Description
id Symbol. Identifies the property uniquely within the Activity.
textmacro Number of the text macro to fill this property into.

<Incident>

A container with a list with <Property> definitions.

<Property>

Defines a property mapping for an Incident.

Description
id Symbol. Identifies the property uniquely within the Incident.
textmacro Number of the text macro to fill this property into. Needs to be higher than five.

Samples

DemoPanel Legacy XML

<LegacyDef>

	<Objects>

		<!-- The one and only for this adapter -->

		<Object id="" datatype="9999">
		</Object>

		<!-- Global Object Types  -->

		<!-- DigitalIn -->
		<Object id="DigitalIn">
		</Object>

		<!-- DigitalOut -->
		<Object id="DigitalOut">
			<Operation id="Activate" command="503" event="1" appcommand="ACTIVATE" />
			<Operation id="Deactivate" command="504" event="1" appcommand="DEACTIVATE" />
		</Object>

		<!-- AnalogIn -->
		<Object id="AnalogIn">
		</Object>

		<!-- AnalogOut -->
		<Object id="AnalogOut">
			<Operation id="SetValue" command="703" appcommand="SETVALUE" >
				<Property id="Value" source="sparam1" />
			</Operation>
		</Object>

		<!-- Intercom.Station -->
		<Object id="Intercom.Station">
		</Object>

		<!-- Ext Objects -->

		<!-- DemoPanel -->
		<Object id="DemoPanel" datatype="1">

			<!-- DemoPanel.Fire -->
			<Object id="Fire" datatype="0">

				<!-- DemoPanel.Fire.Panel -->
				<Object id="Panel" datatype="100" >
					<Operation id="Reset" command="509" appcommand="RESET" />
				</Object>

				<!-- DemoPanel.Fire.Zone -->
				<Object id="Zone" datatype="101">
					<Operation id="On" command="501" event="1" />
					<Operation id="Off" command="502" event="1" />
					<Operation id="EnableRevision"  command="511" event="1" appcommand="REVON" />
					<Operation id="DisableRevision" command="512" event="1" appcommand="REVOFF" />
					<Operation id="Reset" command="509" event="1" appcommand="RESET" />

					<!-- DemoPanel.Fire.Zone.Sensor -->
					<Object id="Sensor" sensor="1">
						<Operation id="On" command="501" event="1" />
						<Operation id="Off" command="502" event="1" />
						<Operation id="EnableRevision" command="511" event="1" appcommand="REVON" />
						<Operation id="DisableRevision" command="512" event="1" appcommand="REVOFF" />
						<Operation id="Reset" command="509" event="1" appcommand="RESET" />
					</Object>

				</Object>

				<!-- DemoPanel.Fire.Control -->
				<Object id="Control" datatype="102">
					<Operation id="On" command="501" event="1" />
					<Operation id="Off" command="502" event="1" />
					<Operation id="Activate" command="503" event="1" appcommand="ACTIVATE" />
					<Operation id="Reset" command="509" event="1" appcommand="RESET" /> <!-- was Deactivate??? -->
				</Object>

				<!-- DemoPanel.Fire.Intervention -->
				<Object id="Intervention" datatype="103">
					<Operation id="Activate" command="503" appcommand="ACTIVATE" />
					<Operation id="Deactivate" command="504" appcommand="DEACTIVATE"  />
					<Operation id="StartInvestigation" command="513" />
					<Operation id="StopInvestigation" command="514" />
				</Object>

			</Object>

			<!-- DemoPanel.Intrusion -->
			<Object id="Intrusion">

				<!-- DemoPanel.Intrusion.Panel -->
				<Object id="Panel" datatype="200">
					<Operation id="Reset" command="509" appcommand="RESET" />
				</Object>

				<!-- DemoPanel.Intrusion.Area -->
				<Object id="Area" datatype="201">
					<Operation id="Arm" command="521" event="1" appcommand="ARM" />
					<Operation id="Disarm" command="522" event="1" appcommand="DISARM" />
				</Object>

				<!-- DemoPanel.Intrusion.Sensor -->
				<Object id="Sensor" datatype="202">
					<Operation id="On" command="501" event="1" />
					<Operation id="Off" command="502" event="1" />
				</Object>

			</Object>

			<!-- DemoPanel.Video -->
			<Object id="Video">

				<!-- DemoPanel.Video.Recorder -->
				<Object id="Recorder" datatype="301">

					<!-- DemoPanel.Video.Recorder.Camera -->
					<Object id="Camera" datatype="302">
						<Operation id="Reset" command="531" event="1" />
					</Object>

				</Object>

			</Object>

			<!-- DemoPanel.Access -->
			<Object id="Access">

				<!-- DemoPanel.Access.Door -->
				<Object id="Door" datatype="401">
					<Operation id="Normal" command="541" event="1" />
					<Operation id="AllowAccess" command="542" event="1" />
					<Operation id="Unlock" command="543" event="1" />
					<Operation id="Block" command="544" event="1" />
					<Event id="AttemptForUnauthorizedAccess">
						<Property id="BadgeId" textmacro="6" />
						<Property id="FirstName" textmacro="8" />
						<Property id="LastName" textmacro="7" />
						<Property id="Company" textmacro="9" />
					</Event>
				</Object>

			</Object>

			<!-- DemoPanel.Intercom -->
			<Object id="Intercom">

				<!-- DemoPanel.Intercom.Device -->
				<Object id="Device" datatype="501">

					<!-- TODO: operations missing??? -->
				</Object>

				<!-- DemoPanel.Intercom.Barrier -->
				<Object id="Barrier" extends="DigitalOut" datatype="502" />

				<!-- DemoPanel.Intercom.Elevator -->
				<Object id="Elevator" extends="AnalogOut" datatype="503" />

			</Object>

			<!-- DemoPanel.PA -->
			<Object id="PA">

				<!-- DemoPanel.PA.AudioIn -->
				<Object id="AudioIn" datatype="601">
				</Object>

				<!-- DemoPanel.PA.AudioOut -->
				<Object id="AudioOut" datatype="602">
				</Object>

			</Object>

			<!-- DemoPanel.IO -->
			<Object id="IO">

				<!-- DemoPanel.IO.Light -->
				<Object id="Light" type="DigitalOut.Light" datatype="710">
				</Object>

				<!-- DemoPanel.IO.DigitalIn -->
				<Object id="DigitalIn" extends="DigitalIn" datatype="701">
				</Object>

				<!-- DemoPanel.IO.DigitalOut -->
				<Object id="DigitalOut" extends="DigitalOut" datatype="702">
				</Object>

			</Object>

			<!-- DemoPanel.Values -->
			<Object id="Values">

				<!-- DemoPanel.Values.AnalogIn -->
				<Object id="AnalogIn" extends="AnalogIn" datatype="703">
				</Object>

				<!-- DemoPanel.Values.AnalogOut-->
				<Object id="AnalogOut" extends="AnalogOut" datatype="704">
				</Object>

			</Object>

			<!-- DemoPanel.Notification -->
			<Object id="Notification">

				<!-- DemoPanel.Notification.Handset -->
				<Object id="Handset" datatype="901">
					<Operation id="Reset" command="509" event="1" appcommand="RESET" />
				</Object>

				<!-- DemoPanel.Notification.Display -->
				<Object id="Display" datatype="902">
					<Operation id="SetDisplayText" command="820" appcommand="SETDISPLAYTEXT">
						<Property id="Text" source="sparam1" />
						<Property id="Line" source="sparam2" />
					</Operation>
				</Object>

				<!-- DemoPanel.Notification.CellPhone -->
				<Object id="CellPhone" datatype="903">
					<Operation id="SendSMS" command="4003">
						<Property id="Message" source="sparam1" />
					</Operation>
				</Object>

			</Object>

			<!-- DemoPanel.Locating -->
			<Object id="Locating">

				<!-- DemoPanel.Locating.GISObject -->
				<Object id="GISObject" datatype="1001">
					<Operation id="Reset" command="830" event="1" />
				</Object>

			</Object>

			<!-- DemoPanel.Facilities -->
			<Object id="Facilities">

				<!-- DemoPanel.Facilities.Object -->
				<Object id="Object" datatype="1101">
					<Operation id="Reset" command="840" event="1" />
				</Object>

				<!-- DemoPanel.Facilities.Printer -->
				<Object id="Printer" datatype="1102">
				</Object>

				<!-- DemoPanel.Facilities.EmergencyLight -->
				<Object id="EmergencyLight" datatype="1103">
				</Object>

			</Object>

			<!-- DemoPanel.Prison -->
			<Object id="Prison">

				<!-- DemoPanel.Prison.IntercomDevice -->
				<Object id="IntercomDevice" extends="DemoPanel.Intercom.Device" datatype="801">
				</Object>

				<!-- DemoPanel.Prison.Presence -->
				<Object id="Presence" datatype="810">
					<Operation id="Reset" command="509"/>
				</Object>

				<!-- DemoPanel.Prison.CallLock -->
				<Object id="CallLock" extends="DigitalOut" datatype="811">
				</Object>

				<!-- DemoPanel.Prison.LightLock -->
				<Object id="LightLock" extends="DigitalOut" datatype="812">
				</Object>

				<!-- DemoPanel.Prison.PowerLock -->
				<Object id="PowerLock" extends="DigitalOut" datatype="813">
				</Object>

				<!-- DemoPanel.Prison.ForceLight -->
				<Object id="ForceLight" extends="DigitalOut" datatype="814">
				</Object>

				<!-- DemoPanel.Prison.CellDoor -->
				<Object id="CellDoor" datatype="803">
					<Operation id="Lock" command="809" />
					<Operation id="Unlock" command="810" />
				</Object>

				<!-- DemoPanel.Prison.FenceDetector -->
				<Object id="FenceDetector" datatype="805">
					<Operation id="Reset" command="509" event="1" appcommand="RESET" />
				</Object>

			</Object>

			<!-- DemoPanel.Parking -->
			<Object id="Parking">

				<!-- DemoPanel.Parking.IntercomDevice -->
				<Object id="IntercomDevice" extends="DemoPanel.Intercom.Device" datatype="1310">
				</Object>

				<!-- DemoPanel.Parking.DigitalIn -->
				<Object id="DigitalIn" extends="DigitalIn" datatype="1311">
				</Object>

				<!-- DemoPanel.Parking.DigitalOut -->
				<Object id="DigitalOut" extends="DigitalOut" datatype="1312">
				</Object>

				<!-- DemoPanel.Parking.AnalogIn -->
				<Object id="AnalogIn" extends="AnalogIn" datatype="1313">
				</Object>

				<!-- DemoPanel.Parking.AlarmInput -->
				<Object id="AlarmInput" extends="DigitalIn" datatype="1314">
				</Object>

				<!-- DemoPanel.Parking.Terminal -->
				<Object id="Terminal" datatype="1401">
				</Object>

				<!-- DemoPanel.Parking.PayMachine -->
				<Object id="PayMachine" datatype="1301">
					<Operation id="LostTicket" command="860" />
				</Object>

			</Object>

			<!-- DemoPanel.Transportation -->
			<Object id="Transportation">

				<!-- DemoPanel.Transportation.IntercomDevice -->
				<Object id="IntercomDevice" extends="DemoPanel.Intercom.Device" datatype="1501">
				</Object>

				<!-- DemoPanel.Transportation.DigitalIn -->
				<Object id="DigitalIn" extends="DigitalIn" datatype="1502">
				</Object>

				<!-- DemoPanel.Transportation.DigitalIn -->
				<Object id="Defibrillator" extends="DigitalIn" datatype="1503">
				</Object>

				<!-- DemoPanel.Transportation.DefibrillatorBox -->
				<Object id="DefibrillatorBox" datatype="1504">
					<Operation id="Activate" command="701" event="1" appcommand="ACTIVATE" />
				</Object>

				<!-- DemoPanel.Transportation.Camera -->
				<Object id="Camera" datatype="1505">
				</Object>

			</Object>

			<!-- DemoPanel.Hospital -->
			<Object id="Hospital">

				<!-- DemoPanel.Hospital.IntercomDevice -->
				<Object id="IntercomDevice" extends="DemoPanel.Intercom.Device" datatype="1601">
				</Object>

				<!-- DemoPanel.Hospital.DigitalIn -->
				<Object id="DigitalIn" extends="DigitalIn" datatype="1602">
				</Object>

				<!-- DemoPanel.Hospital.DigitalOut -->
				<Object id="DigitalOut" extends="DigitalOut" datatype="1603">
				</Object>

			</Object>

			<!-- DemoPanel.Casino -->
			<Object id="Casino">

				<!-- DemoPanel.Casino.RouletteTable -->
				<Object id="RouletteTable" datatype="1201">
					<Operation id="SetMinMaxBet" command="850">
						<Property id="Min" source="param1" />
						<Property id="Max" source="param2" />
					</Operation>
					<Operation id="EnterNumber" command="851">
						<Property id="Number" source="param1" />
					</Operation>
					<Operation id="UndoLastNumber" command="852" />
					<Operation id="ClearHistory" command="853" />
				</Object>

			</Object>

		</Object>

	</Objects>

	<Activities>
		<Activity id="mycall">
			<Property id="myprop" textmacro="77" />
		</Activity>
	</Activities>

	<Incident>
		<Property id="prop1" textmacro="72" />
		<Property id="prop2" textmacro="73" />
	</Incident>

</LegacyDef>
Last modified September 25, 2026