This guide provides a more detailed explanation of the data model, modeling principles, and recommended usage of the iTop-br-power-infrastructure extension.
It is intended for administrators, implementers, and advanced users who want to understand not only which classes are available, but also how they should be used together in a consistent and realistic way.
iTop-br-power-infrastructure extends the native iTop CMDB model for documenting electrical power infrastructure.
The module is designed for environments such as:
The extension makes it possible to document not only basic power dependencies, but also more structured and realistic topologies involving utility feeds, generators, transfer switches, UPS systems, distribution boards, PDUs, sockets, and downstream devices.
The extension is built around the following goals:
The module is not intended to replace full building electrical engineering documentation. Instead, it focuses on the parts that are most relevant for IT infrastructure, service continuity, and structured CMDB-based documentation.
The extension supports two complementary ways of modeling electrical relationships.
The native iTop model already supports the relation:
PowerSource → PDUThis remains available for compatibility and can still be used where appropriate.
Typical use cases:
powerstart_idThe preferred topology model introduced by this extension is:
lnkPowerConnectionToPowerConnectionThis allows directional links between PowerConnection objects and supports more realistic topologies such as:
Typical use cases:
PowerSource → PDU relationUse the generic link model as the preferred way to represent power flow between PowerConnection objects.
Keep the native PowerSource → PDU relation mainly for:
UtilityPower is a dedicated class derived from PowerSource.
It is intended to represent the normal upstream or external power supply, for example:
Typical attributes:
supply_typeutility_provider_idredundancy_groupcontract_power_kwhandover_pointTypical usage:

UPS is a dedicated class derived from PowerSource.
It is used to represent uninterruptible power supplies that protect downstream systems.
Typical attributes:
ups_topologyrated_power_varated_power_wattautonomy_timeTypical usage:
batteries_listUPSBattery is a dedicated class derived from PhysicalDevice.
It is used to document battery units assigned to a UPS.
Typical attributes:
ups_idbattery_rolebattery_typebattery_statusbattery_voltagebattery_capacity_ahlast_replacement_datenext_replacement_dateTypical usage:
PowerGenerator is a dedicated class derived from PowerSource.
It is used to document emergency generators or other backup power units.
Typical attributes:
generator_typefuel_typerated_power_kvafuel_tank_capacity_lfuel_consumption_lphautonomy_timestart_methodis_ats_availablelast_test_datenext_test_dateTypical usage:
PowerTransferSwitch is a dedicated class derived from PowerConnection.
It is used to represent switching components between multiple power inputs and a downstream load path.
Typical attributes:
switch_typeTypical usage:
primary_input and secondary_input as incoming link roles

PowerDistributionBoard is a dedicated class derived from PowerConnection.
It is used to represent electrical distribution stages between upstream sources and downstream consumers.
Typical attributes:
board_typeredundancy_groupnumber_of_outgoing_feedsTypical usage:
PowerSocketType is a typology class used to standardize socket formats.
Typical usage:
This class is optional but recommended where socket standardization is useful.
PowerSocket represents an individual physical outlet on a PDU.
Each socket:
PDUDatacenterDeviceTypical usage:
This generic link class is used to model directional relationships between PowerConnection objects.
Typical attributes:
source_powerconnection_idtarget_powerconnection_idlink_rolecommentThis class is the preferred mechanism for modeling generic power flow.
Always model power paths from source to target.
This means:
downstreamUse downstream as the recommended generic role for standard source-to-target power flow.
Typical examples:
primary_inputUse primary_input for the preferred normal input of a transfer switch.
Typical example:
secondary_inputUse secondary_input for the backup or alternate input of a transfer switch.
Typical example:
bypassUse bypass only where a meaningful alternate or bypass path must be documented.
otherUse other only for exceptional or project-specific cases that do not fit the standard roles.
Keep the use of link roles as simple and consistent as possible.
For most normal source-to-target relationships, use:
downstreamUse primary_input and secondary_input specifically for transfer switch input modeling.
The module adds dedicated socket handling between:
PDUPowerSocketDatacenterDeviceEach DatacenterDevice can be linked to:
The module ensures that:



graph TD
UtilityPower[UtilityPower]
TransferSwitch[PowerTransferSwitch]
UPS[UPS]
PDU[PDU]
Device[DatacenterDevice]
UtilityPower -->|primary_input| TransferSwitch
TransferSwitch -->|downstream| UPS
UPS -->|downstream| PDU
PDU --> Device
graph TD
UtilityPower[UtilityPower]
Generator[PowerGenerator]
TransferSwitch[PowerTransferSwitch]
UPS[UPS]
DistributionBoard[PowerDistributionBoard]
PDU[PDU]
Socket[PowerSocket]
Device[DatacenterDevice]
UtilityPower -->|primary_input| TransferSwitch
Generator -->|secondary_input| TransferSwitch
TransferSwitch -->|downstream| UPS
UPS -->|downstream| DistributionBoard
DistributionBoard -->|downstream| PDU
PDU --> Socket
Socket --> Device
The existing demo data used during development already reflects a realistic topology that can be used for:
This means the screenshots already referenced in the project documentation can also be reused as practical visual examples for this guide.
The extension uses different kinds of relationships.
Examples:
UPS owns UPSBatteryPDU owns PowerSocketPowerSocket may be assigned to a DatacenterDeviceExamples:
UtilityPower → PowerTransferSwitchPowerTransferSwitch → UPSUPS → PowerDistributionBoardPowerDistributionBoard → PDUThese are modeled through lnkPowerConnectionToPowerConnection.
Example:
PowerSource → PDUThis remains supported for compatibility, but the preferred model for more flexible topologies is the generic link model.


powerstart_idFrom version 2.0.0, the installer imports existing legacy PDU.powerstart_id relations into the generic link model.
This means that existing legacy PowerSource → PDU assignments are automatically duplicated as:
source_powerconnection_id = powerstart_idtarget_powerconnection_id = PDU.idlink_role = downstreamoutput to downstreamFrom version 2.0.0, existing generic topology links using the role output are migrated to:
downstreamDuplicate downstream links are not created. If a matching downstream link already exists, the obsolete output link is removed during migration.

This screenshot gives a compact overview of the main business classes introduced by the extension.
downstream as the default generic source-to-target roleprimary_input and secondary_input only for transfer switch input modelingPowerSocketType where socket standardization mattersotheriTop-br-power-infrastructure is intended to provide a structured and extensible foundation for documenting electrical power infrastructure around IT environments.
The current model already supports a useful range of real-world scenarios, from simple power source to PDU documentation up to more advanced chains involving utility feeds, generators, transfer switches, UPS systems, distribution boards, and socket-level device assignment.
The existing screenshots and demo data already provide a strong basis for documentation, validation, and practical usage guidance.