From e662370c328ffa455c472ce0d143d66cc495bdd7 Mon Sep 17 00:00:00 2001
From: Vincent Dumas <42336698+v-dumas@users.noreply.github.com>
Date: Wed, 6 May 2026 11:28:21 +0200
Subject: [PATCH] =?UTF-8?q?N=C2=B07771=20New=20module=20for=20DataFlow=20m?=
=?UTF-8?q?anagement=20(#905)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
datamodels/2.x/installation.xml | 9 +
.../data/en_us.data.itop-flow-map.xml | 21 +
.../itop-flow-map/datamodel.itop-flow-map.xml | 750 ++++++++++++++++++
.../dictionaries/en.dict.itop-flow-map.php | 96 +++
.../dictionaries/fr.dict.itop-flow-map.php | 96 +++
.../icons8-sorting-arrows-horizontal.svg | 1 +
.../itop-flow-map/module.itop-flow-map.php | 50 ++
7 files changed, 1023 insertions(+)
create mode 100644 datamodels/2.x/itop-flow-map/data/en_us.data.itop-flow-map.xml
create mode 100644 datamodels/2.x/itop-flow-map/datamodel.itop-flow-map.xml
create mode 100644 datamodels/2.x/itop-flow-map/dictionaries/en.dict.itop-flow-map.php
create mode 100644 datamodels/2.x/itop-flow-map/dictionaries/fr.dict.itop-flow-map.php
create mode 100644 datamodels/2.x/itop-flow-map/images/icons8-sorting-arrows-horizontal.svg
create mode 100644 datamodels/2.x/itop-flow-map/module.itop-flow-map.php
diff --git a/datamodels/2.x/installation.xml b/datamodels/2.x/installation.xml
index 65660323d..26335edf6 100755
--- a/datamodels/2.x/installation.xml
+++ b/datamodels/2.x/installation.xml
@@ -85,6 +85,15 @@
+
+ itop-flow-map
+ Data flow
+ Map data flows between applications
+
+ itop-flow-map
+
+ false
+
diff --git a/datamodels/2.x/itop-flow-map/data/en_us.data.itop-flow-map.xml b/datamodels/2.x/itop-flow-map/data/en_us.data.itop-flow-map.xml
new file mode 100644
index 000000000..32f326d09
--- /dev/null
+++ b/datamodels/2.x/itop-flow-map/data/en_us.data.itop-flow-map.xml
@@ -0,0 +1,21 @@
+
+
+
+ http
+
+
+ https
+
+
+ ftp
+
+
+ sftp
+
+
+ AS2
+
+
+ X.400
+
+
\ No newline at end of file
diff --git a/datamodels/2.x/itop-flow-map/datamodel.itop-flow-map.xml b/datamodels/2.x/itop-flow-map/datamodel.itop-flow-map.xml
new file mode 100644
index 000000000..2b7dcf478
--- /dev/null
+++ b/datamodels/2.x/itop-flow-map/datamodel.itop-flow-map.xml
@@ -0,0 +1,750 @@
+
+
+
+
+ cmdbAbstractObject
+
+ bizmodel,searchable
+ false
+ dataflow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ status='inactive'
+
+
+ status
+
+
+
+
+ name
+
+ false
+
+
+ org_id
+
+
+ false
+ Organization
+ DEL_MANUAL
+ all
+
+
+ source_id
+
+
+ false
+ FunctionalCI
+ DEL_MANUAL
+ all
+
+
+ rank
+
+
+ yes
+ 10
+
+
+ no
+ 20
+
+
+ source_impact
+ yes
+ false
+ radio_horizontal
+
+
+ destination_id
+
+
+ false
+ FunctionalCI
+ DEL_MANUAL
+ all
+
+
+ rank
+
+
+ yes
+ 10
+
+
+ no
+ 20
+
+
+ destination_impact
+ no
+ false
+ radio_horizontal
+
+
+ dataflowtype_id
+
+
+ true
+ DataFlowType
+ DEL_MANUAL
+ all
+
+
+ description
+
+ true
+ all
+
+
+ status
+
+
+ active
+ 10
+
+
+
+ inactive
+ 20
+
+
+
+ label
+ active
+ false
+ list
+ all
+
+
+ rank
+
+
+ high
+ 10
+
+
+ medium
+ 20
+
+
+ low
+ 30
+
+
+ business_criticity
+ low
+ false
+ list
+
+
+ rank
+
+
+ realtime
+ 10
+
+
+ ondemand
+ 20
+
+
+ hourly
+ 30
+
+
+ daily
+ 40
+
+
+ weekly
+ 50
+
+
+ monthly
+ 60
+
+
+ yearly
+ 70
+
+
+ execution_frequency
+ daily
+ false
+ list
+
+
+ lnkContactToDataFlow
+ dataflow_id
+ 0
+ 0
+ contact_id
+
+
+
+ lnkDocumentToDataFlow
+ dataflow_id
+ 0
+ 0
+ document_id
+
+
+
+
+
+
+
+ -
+ 10
+
+ -
+ 20
+
+ -
+ 30
+
+ -
+ 40
+
+ -
+ 50
+
+
+
+
+
+ -
+ 10
+
+ -
+ 20
+
+ -
+ 30
+
+ -
+ 40
+
+
+
+
+
+ -
+
+
-
+
+
-
+ 10
+
+ -
+ 20
+
+ -
+ 30
+
+ -
+ 40
+
+
+ 10
+
+ -
+
+
-
+ 10
+
+ -
+ 20
+
+ -
+ 30
+
+ -
+ 40
+
+ -
+ 50
+
+ -
+ 60
+
+
+ 20
+
+
+ 10
+
+ -
+
+
-
+
+
-
+ 10
+
+
+ 10
+
+
+ 20
+
+ -
+ 70
+
+ -
+ 80
+
+
+
+
+
+ -
+ 10
+
+ -
+ 20
+
+ -
+ 30
+
+ -
+ 40
+
+ -
+ 50
+
+
+
+
+
+ -
+ 10
+
+ -
+ 20
+
+
+
+
+
+
+
+
+ destination_impact = 'yes' AND id = :this->destination_id]]>
+ id]]>
+ both
+
+
+ contacts_list
+ down
+
+
+
+
+
+
+ cmdbAbstractObject
+
+ 1
+ bizmodel
+ false
+ autoincrement
+ lnkdocumenttodataflow
+ id
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+ true
+
+
+
+
+
+ dataflow_id
+ DataFlow
+ false
+ DEL_AUTO
+
+
+ document_id
+ Document
+ false
+ DEL_AUTO
+
+
+
+
+
+
+ -
+ 10
+
+ -
+ 20
+
+
+
+
+
+ -
+ 10
+
+ -
+ 20
+
+
+
+
+
+ -
+ 10
+
+ -
+ 20
+
+
+
+
+
+
+ cmdbAbstractObject
+
+ 1
+ bizmodel
+ false
+ autoincrement
+ lnkcontacttodataflow
+ id
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+ true
+
+
+
+
+
+ dataflow_id
+ DataFlow
+ false
+ DEL_AUTO
+
+
+ contact_id
+ Contact
+ false
+ DEL_AUTO
+
+
+
+
+
+
+ -
+ 10
+
+ -
+ 20
+
+
+
+
+
+ -
+ 10
+
+ -
+ 20
+
+
+
+
+
+ -
+ 10
+
+ -
+ 20
+
+
+
+
+
+
+ Typology
+
+ bizmodel,searchable
+ false
+ dataflowtype
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+ 10
+
+
+
+
+
+ -
+ 10
+
+
+
+
+
+ -
+ 10
+
+
+
+
+
+
+
+
+ true
+
+ DashboardLayoutTwoCols
+ FunctionalCI:DataFlow:Title
+
+ false
+ 300
+
+
+
+ 0
+
+
+ 0
+ FunctionalCI:DataFlow:Inbound
+ SELECT DataFlow WHERE destination_id=:this->id
+
+
+
+ |
+
+ 1
+
+
+ 0
+ FunctionalCI:DataFlow:Outbound
+ SELECT DataFlow WHERE source_id=:this->id
+
+
+
+ |
+
+
+
+
+
+
+
+
+ id AND source_impact = 'yes']]>
+ id]]>
+ both
+
+
+
+
+
+
+
+
+
+ -
+ 25
+
+
+
+
+
+
+
+
+
+ -
+ 25
+
+
+
+
+
+
+
+
+
+ -
+ 25
+
+
+
+
+
+
+
+
+
+ -
+ 25
+
+
+
+
+
+
+
+
+
+ -
+ 25
+
+
+
+
+
+
+
+
+
+ -
+ 25
+
+
+
+
+
+
+
+
+
+ -
+ 25
+
+
+
+
+
+
+
+
+
+ -
+ 25
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/datamodels/2.x/itop-flow-map/dictionaries/en.dict.itop-flow-map.php b/datamodels/2.x/itop-flow-map/dictionaries/en.dict.itop-flow-map.php
new file mode 100644
index 000000000..415129609
--- /dev/null
+++ b/datamodels/2.x/itop-flow-map/dictionaries/en.dict.itop-flow-map.php
@@ -0,0 +1,96 @@
+ 'Data flows',
+ 'Class:FunctionalCI/Attribute:dataflows+' => 'Data flows for which this object is the source or the destination',
+ 'FunctionalCI:DataFlow:Title' => 'Data flows',
+ 'FunctionalCI:DataFlow:Inbound' => 'Inbound flows',
+ 'FunctionalCI:DataFlow:Outbound' => 'Outbound flows',
+
+ 'DataFlow:baseinfo' => 'General information',
+ 'DataFlow:otherinfo' => 'Other information',
+ 'DataFlow:moreinfo' => 'Flow specifics',
+
+ 'Class:DataFlow' => 'Flow',
+ 'Class:DataFlow+' => 'For application flow for example',
+ 'Class:DataFlow/Name' => '%1$s',
+ 'Class:DataFlow/Attribute:name' => 'Name',
+ 'Class:DataFlow/Attribute:name_id+' => 'Data that are transferred',
+ 'Class:DataFlow/Attribute:source_id' => 'Source',
+ 'Class:DataFlow/Attribute:source_id+' => 'Source Ci of the flow',
+ 'Class:DataFlow/Attribute:source_impact' => 'Source impacts?',
+ 'Class:DataFlow/Attribute:source_impact+' => 'Does the source impact the flow?',
+ 'Class:DataFlow/Attribute:source_impact/Value:yes' => 'yes',
+ 'Class:DataFlow/Attribute:source_impact/Value:yes+' => 'If the source falls down, the flow is impacted',
+ 'Class:DataFlow/Attribute:source_impact/Value:no' => 'no',
+ 'Class:DataFlow/Attribute:source_impact/Value:no+' => 'If the source falls down, the flow is not impacted',
+ 'Class:DataFlow/Attribute:destination_id' => 'Destination',
+ 'Class:DataFlow/Attribute:destination_id+' => 'Destination Ci for the flow',
+ 'Class:DataFlow/Attribute:destination_impact' => 'Destination impacted',
+ 'Class:DataFlow/Attribute:destination_impact+' => 'Is the destination impacted by the flow ?',
+ 'Class:DataFlow/Attribute:destination_impact/Value:yes' => 'yes',
+ 'Class:DataFlow/Attribute:destination_impact/Value:yes+' => 'If the flow stops, the destination is impacted',
+ 'Class:DataFlow/Attribute:destination_impact/Value:no' => 'no',
+ 'Class:DataFlow/Attribute:destination_impact/Value:no+' => 'If the flow stops, the destination is not impacted',
+ 'Class:DataFlow/Attribute:dataflowtype_id' => 'Flow type',
+ 'Class:DataFlow/Attribute:dataflowtype_id+' => 'Typology of Flow.',
+ 'Class:DataFlow/Attribute:description' => 'Description',
+ 'Class:DataFlow/Attribute:description+' => '',
+ 'Class:DataFlow/Attribute:status' => 'Status',
+ 'Class:DataFlow/Attribute:status+' => '',
+ 'Class:DataFlow/Attribute:status/Value:active' => 'active',
+ 'Class:DataFlow/Attribute:status/Value:inactive' => 'inactive',
+ 'Class:DataFlow/Attribute:org_id' => 'Organization',
+ 'Class:DataFlow/Attribute:org_id+' => '',
+ 'Class:DataFlow/Attribute:business_criticity' => 'Business criticality',
+ 'Class:DataFlow/Attribute:business_criticity+' => '',
+ 'Class:DataFlow/Attribute:business_criticity/Value:high' => 'high',
+ 'Class:DataFlow/Attribute:business_criticity/Value:high+' => '',
+ 'Class:DataFlow/Attribute:business_criticity/Value:low' => 'low',
+ 'Class:DataFlow/Attribute:business_criticity/Value:low+' => '',
+ 'Class:DataFlow/Attribute:business_criticity/Value:medium' => 'medium',
+ 'Class:DataFlow/Attribute:business_criticity/Value:medium+' => '',
+ 'Class:DataFlow/Attribute:execution_frequency' => 'Execution frequency',
+ 'Class:DataFlow/Attribute:execution_frequency+' => 'How often the data flow is executed',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:realtime' => 'real-time',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:realtime+' => '',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:ondemand' => 'on demand',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:ondemand+' => 'on the fly, not scheduled',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:hourly' => 'hourly',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:hourly+' => '',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:daily' => 'daily',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:daily+' => '',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:weekly' => 'weekly',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:weekly+' => '',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:monthly' => 'monthly',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:monthly+' => '',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:yearly' => 'yearly',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:yearly+' => '',
+ 'Class:DataFlow/Attribute:documents_list' => 'Documents',
+ 'Class:DataFlow/Attribute:documents_list+' => 'Eg: technical specifications, runbooks, etc.',
+ 'Class:DataFlow/Attribute:contacts_list' => 'Contacts',
+ 'Class:DataFlow/Attribute:contacts_list+' => 'Eg: flow owner, technical support, etc.',
+
+/*
+ 'Class:DataFlow/Attribute:source_id_friendlyname' => 'source_id_friendlyname',
+ 'Class:DataFlow/Attribute:source_id_friendlyname+' => 'Full name',
+ 'Class:DataFlow/Attribute:source_id_finalclass_recall' => 'source_id->CI sub-class',
+ 'Class:DataFlow/Attribute:source_id_finalclass_recall+' => 'Name of the final class',
+ 'Class:DataFlow/Attribute:source_id_obsolescence_flag' => 'source_id->Obsolete',
+ 'Class:DataFlow/Attribute:source_id_obsolescence_flag+' => 'Computed dynamically on other attributes',
+ 'Class:DataFlow/Attribute:destination_id_friendlyname' => 'destination_id_friendlyname',
+ 'Class:DataFlow/Attribute:destination_id_friendlyname+' => 'Full name',
+ 'Class:DataFlow/Attribute:destination_id_finalclass_recall' => 'destination_id->CI sub-class',
+ 'Class:DataFlow/Attribute:destination_id_finalclass_recall+' => 'Name of the final class',
+ 'Class:DataFlow/Attribute:destination_id_obsolescence_flag' => 'destination_id->Obsolete',
+ 'Class:DataFlow/Attribute:destination_id_obsolescence_flag+' => 'Computed dynamically on other attributes',
+*/
+]);
diff --git a/datamodels/2.x/itop-flow-map/dictionaries/fr.dict.itop-flow-map.php b/datamodels/2.x/itop-flow-map/dictionaries/fr.dict.itop-flow-map.php
new file mode 100644
index 000000000..ea4e4afca
--- /dev/null
+++ b/datamodels/2.x/itop-flow-map/dictionaries/fr.dict.itop-flow-map.php
@@ -0,0 +1,96 @@
+ 'Flux de données',
+ 'Class:FunctionalCI/Attribute:dataflows+' => 'Flux de données dont cet objet est la source ou la destination',
+ 'FunctionalCI:DataFlow:Title' => 'Flux de données',
+ 'FunctionalCI:DataFlow:Inbound' => 'Flux entrants',
+ 'FunctionalCI:DataFlow:Outbound' => 'Flux sortants',
+
+ 'DataFlow:baseinfo' => 'Informations générales',
+ 'DataFlow:otherinfo' => 'Autres informations',
+ 'DataFlow:moreinfo' => 'Spécificités du flux',
+
+ 'Class:DataFlow' => 'Flux de Données',
+ 'Class:DataFlow+' => 'Modélise les données transférées entre instances d\'application',
+ 'Class:DataFlow/Name' => '%1$s',
+ 'Class:DataFlow/Attribute:name' => 'Nom',
+ 'Class:DataFlow/Attribute:name_id+' => 'Type de données transferées',
+ 'Class:DataFlow/Attribute:source_id' => 'Source',
+ 'Class:DataFlow/Attribute:source_id+' => 'Instance d\application à la source du flux de données',
+ 'Class:DataFlow/Attribute:source_impact' => 'Source impactante ?',
+ 'Class:DataFlow/Attribute:source_impact+' => 'La source impacte-t-elle le flux de données ?',
+ 'Class:DataFlow/Attribute:source_impact/Value:yes' => 'oui',
+ 'Class:DataFlow/Attribute:source_impact/Value:yes+' => 'Si la source tombe en panne, le flux de données est impacté',
+ 'Class:DataFlow/Attribute:source_impact/Value:no' => 'non',
+ 'Class:DataFlow/Attribute:source_impact/Value:no+' => 'Si la source tombe en panne, le flux de données n\'est pas impacté',
+ 'Class:DataFlow/Attribute:destination_id' => 'Destinataire',
+ 'Class:DataFlow/Attribute:destination_id+' => 'Destinataire des données, à choisir parmi les instances d\'application',
+ 'Class:DataFlow/Attribute:destination_impact' => 'Destinataire impacté ?',
+ 'Class:DataFlow/Attribute:destination_impact+' => 'Le destinataire est-il impacté si le flux de données s\'arrête ?',
+ 'Class:DataFlow/Attribute:destination_impact/Value:yes' => 'oui',
+ 'Class:DataFlow/Attribute:destination_impact/Value:yes+' => 'Si le flux s\'arrête, le destinataire est impacté',
+ 'Class:DataFlow/Attribute:destination_impact/Value:no' => 'non',
+ 'Class:DataFlow/Attribute:destination_impact/Value:no+' => 'Si le flux s\'arrête, le destinataire n\'est pas impacté',
+ 'Class:DataFlow/Attribute:dataflowtype_id' => 'Type de flux',
+ 'Class:DataFlow/Attribute:dataflowtype_id+' => 'Typologie du flux',
+ 'Class:DataFlow/Attribute:description' => 'Description',
+ 'Class:DataFlow/Attribute:description+' => '',
+ 'Class:DataFlow/Attribute:status' => 'Etat',
+ 'Class:DataFlow/Attribute:status+' => '',
+ 'Class:DataFlow/Attribute:status/Value:active' => 'actif',
+ 'Class:DataFlow/Attribute:status/Value:inactive' => 'inactif',
+ 'Class:DataFlow/Attribute:org_id' => 'Organisation',
+ 'Class:DataFlow/Attribute:org_id+' => '',
+ 'Class:DataFlow/Attribute:business_criticity' => 'Criticité',
+ 'Class:DataFlow/Attribute:business_criticity+' => '',
+ 'Class:DataFlow/Attribute:business_criticity/Value:high' => 'haute',
+ 'Class:DataFlow/Attribute:business_criticity/Value:high+' => '',
+ 'Class:DataFlow/Attribute:business_criticity/Value:low' => 'basse',
+ 'Class:DataFlow/Attribute:business_criticity/Value:low+' => '',
+ 'Class:DataFlow/Attribute:business_criticity/Value:medium' => 'moyenne',
+ 'Class:DataFlow/Attribute:business_criticity/Value:medium+' => '',
+ 'Class:DataFlow/Attribute:execution_frequency' => 'Fréquence d\'exécution',
+ 'Class:DataFlow/Attribute:execution_frequency+' => 'À quelle fréquence le transfert de données est-il exécuté',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:realtime' => 'temps réel',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:realtime+' => '',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:ondemand' => 'à la demande',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:ondemand+' => '',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:hourly' => 'horaire',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:hourly+' => '',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:daily' => 'journalière',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:daily+' => '',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:weekly' => 'hebdomadaire',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:weekly+' => '',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:monthly' => 'mensuelle',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:monthly+' => '',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:yearly' => 'annuelle',
+ 'Class:DataFlow/Attribute:execution_frequency/Value:yearly+' => '',
+ 'Class:DataFlow/Attribute:documents_list' => 'Documents',
+ 'Class:DataFlow/Attribute:documents_list+' => 'Eg: technical specifications, runbooks, etc.',
+ 'Class:DataFlow/Attribute:contacts_list' => 'Contacts',
+ 'Class:DataFlow/Attribute:contacts_list+' => 'Eg: flow owner, technical support, etc.',
+
+/*
+ 'Class:DataFlow/Attribute:source_id_friendlyname' => 'source_id_friendlyname',
+ 'Class:DataFlow/Attribute:source_id_friendlyname+' => 'Nom complet',
+ 'Class:DataFlow/Attribute:source_id_finalclass_recall' => 'source_id->CI sub-class',
+ 'Class:DataFlow/Attribute:source_id_finalclass_recall+' => 'Classe finale',
+ 'Class:DataFlow/Attribute:source_id_obsolescence_flag' => 'source_id->Obsolete',
+ 'Class:DataFlow/Attribute:source_id_obsolescence_flag+' => 'Computed dynamically on other attributes',
+ 'Class:DataFlow/Attribute:destination_id_friendlyname' => 'destination_id_friendlyname',
+ 'Class:DataFlow/Attribute:destination_id_friendlyname+' => 'Nom complet',
+ 'Class:DataFlow/Attribute:destination_id_finalclass_recall' => 'destination_id->CI sub-class',
+ 'Class:DataFlow/Attribute:destination_id_finalclass_recall+' => 'Classe finale',
+ 'Class:DataFlow/Attribute:destination_id_obsolescence_flag' => 'destination_id->Obsolete',
+ 'Class:DataFlow/Attribute:destination_id_obsolescence_flag+' => 'Computed dynamically on other attributes',
+*/
+]);
diff --git a/datamodels/2.x/itop-flow-map/images/icons8-sorting-arrows-horizontal.svg b/datamodels/2.x/itop-flow-map/images/icons8-sorting-arrows-horizontal.svg
new file mode 100644
index 000000000..6cee6f7a0
--- /dev/null
+++ b/datamodels/2.x/itop-flow-map/images/icons8-sorting-arrows-horizontal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/datamodels/2.x/itop-flow-map/module.itop-flow-map.php b/datamodels/2.x/itop-flow-map/module.itop-flow-map.php
new file mode 100644
index 000000000..a89b41d2f
--- /dev/null
+++ b/datamodels/2.x/itop-flow-map/module.itop-flow-map.php
@@ -0,0 +1,50 @@
+ 'Map applications data flows',
+ 'category' => 'business',
+
+ // Setup
+ //
+ 'dependencies' => [
+ 'itop-config-mgmt/3.2.0',
+ ],
+ 'mandatory' => false,
+ 'visible' => true,
+
+ // Components
+ //
+ 'datamodel' => [
+
+ ],
+ 'webservice' => [
+
+ ],
+ 'data.struct' => [
+ 'data/en_us.data.itop-flow-map.xml',
+ ],
+ 'data.sample' => [
+ // add your sample data XML files here,
+ ],
+
+ // Documentation
+ //
+ 'doc.manual_setup' => '', // hyperlink to manual setup documentation, if any
+ 'doc.more_information' => '', // hyperlink to more information, if any
+
+ // Default settings
+ //
+ 'settings' => [
+ // Module specific settings go here, if any
+ ],
+ ]
+);