diff --git a/Doc/Asset/Equipment/ICT-/Controller/BACnet-.md b/Doc/Asset/Equipment/ICT-/Controller/BACnet-.md
deleted file mode 100644
index 06df61a53..000000000
--- a/Doc/Asset/Equipment/ICT-/Controller/BACnet-.md
+++ /dev/null
@@ -1,49 +0,0 @@
-[Index](../../../../index.md) > [Asset](../../../Asset.md) > [Equipment](../../Equipment.md) > [ICTEquipment](../ICTEquipment.md) > [Controller](Controller.md) > [BACnetController](#)
-# BACnetController
-
-BACnet controller.
-
-
-**Display name:** BACnet Controller
-**DTMI:** dtmi:org:w3id:rec:BACnetController;1
-
----
-
-## Relationships
-
-### Inherited Relationships
-* **[Equipment](../../Equipment.md):** feeds, isFedBy
-* **[Asset](../../../Asset.md):** commissionedBy, documentation, geometry, hasPart, hasPoint, installedBy, isPartOf, locatedIn, manufacturedBy, mountedOn, servicedBy
-
----
-
-## Properties
-
-### Inherited Properties
-* **[Equipment](../../Equipment.md):** operationalStageCount
-* **[Asset](../../../Asset.md):** assetTag, commissioningDate, customProperties, customTags, identifiers, initialCost, installationDate, IPAddress, MACAddress, maintenanceInterval, modelNumber, name, serialNumber, turnoverDate, weight
-* **[ICTEquipment](../ICTEquipment.md):** heightRUs, numberOfPorts, standard
-
----
-
-## Target Of
-### General
-* [Point](../../../../Point/Point.md).isPointOf
-* [Agent](../../../../Agent/Agent.md).owns
-* [Space](../../../../Space/Space.md).isLocationOf
-* [Equipment](../../Equipment.md).feeds
-* [Equipment](../../Equipment.md).isFedBy
-* [Architecture](../../../../Space/Architecture/Architecture.md).isFedBy
-* [Document](../../../../Information/Document/Document.md).documentTopic
-* [Document](../../../../Information/Document/Document.md).url
-* [Lease](../../../../Event/Lease.md).leaseOf
-* [PointOfInterest](../../../../Information/PointOfInterest.md).objectOfInterest
-* [Portfolio](../../../../Collection/Portfolio.md).includes
-* [ServiceObject](../../../../Information/ServiceObject/ServiceObject.md).relatedTo
-* [Meter](../../Meter/Meter.md).meters
-### Inherited
-* [Loop](../../../../Collection/Loop/Loop.md).includes
-* [System](../../../../Collection/System/System.md).includes
-* [Asset](../../../Asset.md).hasPart
-* [Asset](../../../Asset.md).isPartOf
-* [EquipmentCollection](../../../../Collection/Equipment-.md).includes
diff --git a/Doc/Asset/Equipment/ICT-/Controller/Modbus-.md b/Doc/Asset/Equipment/ICT-/Controller/Modbus-.md
deleted file mode 100644
index 7a4f417ab..000000000
--- a/Doc/Asset/Equipment/ICT-/Controller/Modbus-.md
+++ /dev/null
@@ -1,49 +0,0 @@
-[Index](../../../../index.md) > [Asset](../../../Asset.md) > [Equipment](../../Equipment.md) > [ICTEquipment](../ICTEquipment.md) > [Controller](Controller.md) > [ModbusController](#)
-# ModbusController
-
-Modbus controller.
-
-
-**Display name:** Modbus Controller
-**DTMI:** dtmi:org:w3id:rec:ModbusController;1
-
----
-
-## Relationships
-
-### Inherited Relationships
-* **[Equipment](../../Equipment.md):** feeds, isFedBy
-* **[Asset](../../../Asset.md):** commissionedBy, documentation, geometry, hasPart, hasPoint, installedBy, isPartOf, locatedIn, manufacturedBy, mountedOn, servicedBy
-
----
-
-## Properties
-
-### Inherited Properties
-* **[Equipment](../../Equipment.md):** operationalStageCount
-* **[Asset](../../../Asset.md):** assetTag, commissioningDate, customProperties, customTags, identifiers, initialCost, installationDate, IPAddress, MACAddress, maintenanceInterval, modelNumber, name, serialNumber, turnoverDate, weight
-* **[ICTEquipment](../ICTEquipment.md):** heightRUs, numberOfPorts, standard
-
----
-
-## Target Of
-### General
-* [Point](../../../../Point/Point.md).isPointOf
-* [Agent](../../../../Agent/Agent.md).owns
-* [Space](../../../../Space/Space.md).isLocationOf
-* [Equipment](../../Equipment.md).feeds
-* [Equipment](../../Equipment.md).isFedBy
-* [Architecture](../../../../Space/Architecture/Architecture.md).isFedBy
-* [Document](../../../../Information/Document/Document.md).documentTopic
-* [Document](../../../../Information/Document/Document.md).url
-* [Lease](../../../../Event/Lease.md).leaseOf
-* [PointOfInterest](../../../../Information/PointOfInterest.md).objectOfInterest
-* [Portfolio](../../../../Collection/Portfolio.md).includes
-* [ServiceObject](../../../../Information/ServiceObject/ServiceObject.md).relatedTo
-* [Meter](../../Meter/Meter.md).meters
-### Inherited
-* [Loop](../../../../Collection/Loop/Loop.md).includes
-* [System](../../../../Collection/System/System.md).includes
-* [Asset](../../../Asset.md).hasPart
-* [Asset](../../../Asset.md).isPartOf
-* [EquipmentCollection](../../../../Collection/Equipment-.md).includes
diff --git a/Doc/Point/Parameter/GatewayConnection-/GatewayConnectionParameter.md b/Doc/Point/Parameter/GatewayConnection-/GatewayConnectionParameter.md
new file mode 100644
index 000000000..f994ab273
--- /dev/null
+++ b/Doc/Point/Parameter/GatewayConnection-/GatewayConnectionParameter.md
@@ -0,0 +1,50 @@
+[Index](../../../index.md) > [Point](../../Point.md) > [Parameter](../Parameter.md) > [GatewayConnectionParameter](#)
+# GatewayConnectionParameter
+
+**Display name:** Gateway Connection Parameter
+**DTMI:** dtmi:org:w3id:rec:GatewayConnectionParameter;1
+
+---
+
+## Child interfaces
+* [IoTHubConnectionParameter](IoTHubConnectionParameter.md)
+
+---
+
+## Relationships
+
+### Inherited Relationships
+* **[Point](../../Point.md):** isPointOf
+
+---
+
+## Properties
+
+### Inherited Properties
+* **[Parameter](../Parameter.md):** lastKnownValue
+* **[Point](../../Point.md):** aggregate, customProperties, customTags, hasQuantity, hasSubstance, identifiers, name
+
+---
+
+## Target Of
+### General
+* [Portfolio](../../../Collection/Portfolio.md).includes
+* [PointOfInterest](../../../Information/PointOfInterest.md).objectOfInterest
+* [Agent](../../../Agent/Agent.md).owns
+* [Space](../../../Space/Space.md).isLocationOf
+* [Lease](../../../Event/Lease.md).leaseOf
+* [Point](../../Point.md).isPointOf
+* [Document](../../../Information/Document/Document.md).documentTopic
+* [Document](../../../Information/Document/Document.md).url
+* [ServiceObject](../../../Information/ServiceObject/ServiceObject.md).relatedTo
+* [Architecture](../../../Space/Architecture/Architecture.md).isFedBy
+* [Equipment](../../../Asset/Equipment/Equipment.md).feeds
+* [Equipment](../../../Asset/Equipment/Equipment.md).isFedBy
+* [Meter](../../../Asset/Equipment/Meter/Meter.md).meters
+### Inherited
+* [ActuationEvent](../../../Event/Point-/ActuationEvent.md).targetPoint
+* [Architecture](../../../Space/Architecture/Architecture.md).hasPoint
+* [Asset](../../../Asset/Asset.md).hasPoint
+* [ExceptionEvent](../../../Event/Point-/ExceptionEvent.md).sourcePoint
+* [ObservationEvent](../../../Event/Point-/ObservationEvent/ObservationEvent.md).sourcePoint
+* [ServiceObject](../../../Information/ServiceObject/ServiceObject.md).producedBy
diff --git a/Doc/Point/Parameter/GatewayConnection-/IoTHubConnectionParameter.md b/Doc/Point/Parameter/GatewayConnection-/IoTHubConnectionParameter.md
new file mode 100644
index 000000000..ef2c5eede
--- /dev/null
+++ b/Doc/Point/Parameter/GatewayConnection-/IoTHubConnectionParameter.md
@@ -0,0 +1,49 @@
+[Index](../../../index.md) > [Point](../../Point.md) > [Parameter](../Parameter.md) > [GatewayConnectionParameter](GatewayConnectionParameter.md) > [IoTHubConnectionParameter](#)
+# IoTHubConnectionParameter
+
+**Display name:** IoT Hub Connection Parameter
+**DTMI:** dtmi:org:w3id:rec:IoTHubConnectionParameter;1
+
+---
+
+## Relationships
+
+### Inherited Relationships
+* **[Point](../../Point.md):** isPointOf
+
+---
+
+## Properties
+
+|Name|Display name|Description|Schema|Writable|
+|-|-|-|-|-|
+|deviceId|**en**: Device ID|**en**: The Device ID of the device connected to Azure IoT Hub|string|True|
+|hostname|**en**: Hostname|**en**: The Hostname of the Azure IoT Hub the gateway is connected to|string|True|
+### Inherited Properties
+* **[Parameter](../Parameter.md):** lastKnownValue
+* **[Point](../../Point.md):** aggregate, customProperties, customTags, hasQuantity, hasSubstance, identifiers, name
+
+---
+
+## Target Of
+### General
+* [Portfolio](../../../Collection/Portfolio.md).includes
+* [PointOfInterest](../../../Information/PointOfInterest.md).objectOfInterest
+* [Agent](../../../Agent/Agent.md).owns
+* [Space](../../../Space/Space.md).isLocationOf
+* [Lease](../../../Event/Lease.md).leaseOf
+* [Point](../../Point.md).isPointOf
+* [Document](../../../Information/Document/Document.md).documentTopic
+* [Document](../../../Information/Document/Document.md).url
+* [ServiceObject](../../../Information/ServiceObject/ServiceObject.md).relatedTo
+* [Architecture](../../../Space/Architecture/Architecture.md).isFedBy
+* [Equipment](../../../Asset/Equipment/Equipment.md).feeds
+* [Equipment](../../../Asset/Equipment/Equipment.md).isFedBy
+* [Meter](../../../Asset/Equipment/Meter/Meter.md).meters
+### Inherited
+* [ActuationEvent](../../../Event/Point-/ActuationEvent.md).targetPoint
+* [Architecture](../../../Space/Architecture/Architecture.md).hasPoint
+* [Asset](../../../Asset/Asset.md).hasPoint
+* [ExceptionEvent](../../../Event/Point-/ExceptionEvent.md).sourcePoint
+* [ObservationEvent](../../../Event/Point-/ObservationEvent/ObservationEvent.md).sourcePoint
+* [ServiceObject](../../../Information/ServiceObject/ServiceObject.md).producedBy
diff --git a/Doc/index.full.md b/Doc/index.full.md
index 32e7db81f..97126bb7c 100644
--- a/Doc/index.full.md
+++ b/Doc/index.full.md
@@ -176,8 +176,10 @@
* [ICTEquipment](Asset/Equipment/ICT-/ICTEquipment.md)
* [AudioVisualEquipment](Asset/Equipment/ICT-/AudioVisualEquipment.md)
* [Controller](Asset/Equipment/ICT-/Controller/Controller.md)
- * [BACnetController](Asset/Equipment/ICT-/Controller/BACnet-.md)
- * [ModbusController](Asset/Equipment/ICT-/Controller/Modbus-.md)
+ * [BACnetController](Asset/Equipment/ICT-/Controller/BACnet-/BACnetController.md)
+ * [BACnetAndModbusController](Asset/Equipment/ICT-/Controller/BACnet-/BACnetAndModbusController.md)
+ * [ModbusController](Asset/Equipment/ICT-/Controller/Modbus-/ModbusController.md)
+ * [BACnetAndModbusController](Asset/Equipment/ICT-/Controller/BACnet-/BACnetAndModbusController.md)
* [DataNetworkEquipment](Asset/Equipment/ICT-/DataNetworkEquipment/DataNetworkEquipment.md)
* [EthernetPort](Asset/Equipment/ICT-/DataNetworkEquipment/EthernetPort.md)
* [EthernetSwitch](Asset/Equipment/ICT-/DataNetworkEquipment/EthernetSwitch.md)
@@ -593,6 +595,8 @@
* [Temperature_Alarm_Sensitivity_Parameter](Point/Parameter/Alarm_Sensitivity-/Temperature-.md)
* [Delay_Parameter](Point/Parameter/Delay-/Delay_Parameter.md)
* [Alarm_Delay_Parameter](Point/Parameter/Delay-/Alarm-.md)
+ * [GatewayConnectionParameter](Point/Parameter/GatewayConnection-/GatewayConnectionParameter.md)
+ * [IoTHubConnectionParameter](Point/Parameter/GatewayConnection-/IoTHubConnectionParameter.md)
* [Humidity_Parameter](Point/Parameter/Humidity-/Humidity_Parameter.md)
* [High_Humidity_Alarm_Parameter](Point/Parameter/Humidity-/High_Humidity_Alarm_Parameter.md)
* [Humidity_Tolerance_Parameter](Point/Parameter/Tolerance-/Humidity-.md)
diff --git a/OntologyDecisionRecords/ODR 002 GatewayConnectionParameter.md b/OntologyDecisionRecords/ODR 002 GatewayConnectionParameter.md
new file mode 100644
index 000000000..5c5b495d5
--- /dev/null
+++ b/OntologyDecisionRecords/ODR 002 GatewayConnectionParameter.md
@@ -0,0 +1,19 @@
+# ODR 002: GatewayConnectionParameter
+
+## Context
+
+An IoT [Gateway](../Doc/Asset/Equipment/ICT-/Gateway.md) is a device responsible for handling transfer data to different communication protocols. A modern IoT gateway enables bidirectional communication.
+
+In the case that a cloud service needs to send a cloud-to-device message to the gateway, the connection information needed to accomplish this could be represented as a [Parameter](../Doc/Point/Parameter/Parameter.md).
+
+## Decisions
+
+1. We will create a [GatewayConnectionParameter](../Doc/Point/Parameter/GatewayConnection-/GatewayConnectionParameter.md) that uses the REC DTMI `dtmi:org:w3id:rec:GatewayConnectionParameter;1`.
+
+1. We will NOT model security credentials in the connection parameters; it is recommended that a key vault, or similar technology, is used to store credentials.
+
+## Consequences
+
+Application services will need to implement application logic to support the different model extensions.
+
+Application services will be responsible for securing the appropriate authorization to send messages. The GatewayConnectionParameters just provide configuration parameters.
\ No newline at end of file
diff --git a/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/BACnet-.json b/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/BACnet-.json
deleted file mode 100644
index 146d89145..000000000
--- a/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/BACnet-.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "@id": "dtmi:org:w3id:rec:BACnetController;1",
- "@type": "Interface",
- "description": {
- "en": "BACnet controller."
- },
- "displayName": {
- "en": "BACnet Controller"
- },
- "@context": ["dtmi:dtdl:context;2"],
- "extends": "dtmi:org:w3id:rec:Controller;1"
-}
diff --git a/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/Modbus-.json b/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/Modbus-.json
deleted file mode 100644
index 99ede8935..000000000
--- a/Source/DTDLv2/RealEstateCore/Asset/Equipment/ICT-/Controller/Modbus-.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "@id": "dtmi:org:w3id:rec:ModbusController;1",
- "@type": "Interface",
- "description": {
- "en": "Modbus controller."
- },
- "displayName": {
- "en": "Modbus Controller"
- },
- "@context": ["dtmi:dtdl:context;2"],
- "extends": "dtmi:org:w3id:rec:Controller;1"
-}
diff --git a/Source/DTDLv2/RealEstateCore/Point/Parameter/Gateway-/GatewayConnectionParameter.json b/Source/DTDLv2/RealEstateCore/Point/Parameter/Gateway-/GatewayConnectionParameter.json
new file mode 100644
index 000000000..47d10f369
--- /dev/null
+++ b/Source/DTDLv2/RealEstateCore/Point/Parameter/Gateway-/GatewayConnectionParameter.json
@@ -0,0 +1,9 @@
+{
+ "@id": "dtmi:org:w3id:rec:GatewayConnectionParameter;1",
+ "@type": "Interface",
+ "displayName": "Gateway Connection Parameter",
+ "extends": "dtmi:org:brickschema:schema:Brick:Parameter;1",
+ "@context": [
+ "dtmi:dtdl:context;2"
+ ]
+}
\ No newline at end of file
diff --git a/Source/DTDLv2/RealEstateCore/Point/Parameter/Gateway-/IoT-/IoTHubConnectionParameter.json b/Source/DTDLv2/RealEstateCore/Point/Parameter/Gateway-/IoT-/IoTHubConnectionParameter.json
new file mode 100644
index 000000000..55bc630fd
--- /dev/null
+++ b/Source/DTDLv2/RealEstateCore/Point/Parameter/Gateway-/IoT-/IoTHubConnectionParameter.json
@@ -0,0 +1,35 @@
+{
+ "@id": "dtmi:org:w3id:rec:IoTHubConnectionParameter;1",
+ "@type": "Interface",
+ "displayName": "IoT Hub Connection Parameter",
+ "extends": "dtmi:org:w3id:rec:GatewayConnectionParameter;1",
+ "contents": [
+ {
+ "@type": "Property",
+ "schema": "string",
+ "description": {
+ "en": "The Device ID of the device connected to Azure IoT Hub"
+ },
+ "displayName": {
+ "en": "Device ID"
+ },
+ "name": "deviceId",
+ "writable": true
+ },
+ {
+ "@type": "Property",
+ "schema": "string",
+ "description": {
+ "en": "The Hostname of the Azure IoT Hub the gateway is connected to"
+ },
+ "displayName": {
+ "en": "Hostname"
+ },
+ "name": "hostname",
+ "writable": true
+ }
+ ],
+ "@context": [
+ "dtmi:dtdl:context;2"
+ ]
+}
\ No newline at end of file