From f81b3eed94c808dd240e4d6e62c27003ace3dc45 Mon Sep 17 00:00:00 2001
From: George Tziavas <g.tziavas@ac.upatras.gr>
Date: Sun, 15 Dec 2024 20:06:09 +0200
Subject: [PATCH] created needed mappers to convert MeasurementCollectionJob to
 MeasurementCollectionJobMVO

---
 .../metrico/mapper/AttachmentRefMapper.java   | 32 ++++++++
 .../metrico/mapper/CharacteristicMapper.java  | 30 +++++++
 .../CharacteristicRelationshipMapper.java     | 26 ++++++
 .../mapper/DataFilterMapItemMapper.java       | 23 ++++++
 .../metrico/mapper/DataFilterMapMapper.java   | 26 ++++++
 .../mapper/DataFilterTemplateMapper.java      | 30 +++++++
 .../mapper/DayOfMonthRecurrenceMapper.java    | 24 ++++++
 .../mapper/DayOfWeekRecurrenceMapper.java     | 24 ++++++
 .../mapper/ExternalIdentifierMapper.java      | 28 +++++++
 .../osl/metrico/mapper/FeatureMapper.java     | 34 ++++++++
 .../mapper/FileTransferDataMapper.java        | 32 ++++++++
 .../osl/metrico/mapper/IntentRefMapper.java   | 30 +++++++
 .../metrico/mapper/LogicalResourceMapper.java | 18 ++++
 .../metrico/mapper/ManagementJobMapper.java   | 36 ++++++++
 .../MeasurementCollectionJobMapper.java       | 33 +++-----
 .../metrico/mapper/MeasurementJobMapper.java  | 35 ++++++++
 ...thlyScheduleDayOfWeekDefinitionMapper.java | 28 +++++++
 .../etsi/osl/metrico/mapper/NoteMapper.java   | 24 ++++++
 ...anceIndicatorGroupSpecificationMapper.java | 32 ++++++++
 ...rmanceIndicatorSpecRelationshipMapper.java | 32 ++++++++
 ...rformanceIndicatorSpecificationMapper.java | 50 +++++++++++
 ...rmanceIndicatorSpecificationRefMapper.java | 32 ++++++++
 ...ndicatorSpecificationRefOrValueMapper.java | 22 +++++
 .../osl/metrico/mapper/PolicyRefMapper.java   | 32 ++++++++
 .../RelatedPartyRefOrPartyRoleRefMapper.java  | 26 ++++++
 .../metrico/mapper/RelatedPlaceRefMapper.java | 26 ++++++
 .../RelatedResourceOrderItemMapper.java       | 34 ++++++++
 .../osl/metrico/mapper/ResourceMapper.java    | 82 +++++++++++++++++++
 .../mapper/ResourceRefOrValueMapper.java      | 18 ++++
 .../mapper/ResourceRelationshipMapper.java    | 30 +++++++
 .../ResourceSpecificationRefMapper.java       | 32 ++++++++
 .../mapper/ScheduleDefinitionMapper.java      | 37 +++++++++
 .../metrico/mapper/TrackingRecordMapper.java  | 36 ++++++++
 .../osl/metrico/services/MetricoService.java  | 12 ++-
 34 files changed, 1020 insertions(+), 26 deletions(-)
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/AttachmentRefMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/CharacteristicMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/CharacteristicRelationshipMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/DataFilterMapItemMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/DataFilterMapMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/DataFilterTemplateMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/DayOfMonthRecurrenceMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/DayOfWeekRecurrenceMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/ExternalIdentifierMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/FeatureMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/FileTransferDataMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/IntentRefMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/LogicalResourceMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/ManagementJobMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/MeasurementJobMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/MonthlyScheduleDayOfWeekDefinitionMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/NoteMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorGroupSpecificationMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorSpecRelationshipMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorSpecificationMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorSpecificationRefMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorSpecificationRefOrValueMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/PolicyRefMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/RelatedPartyRefOrPartyRoleRefMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/RelatedPlaceRefMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/RelatedResourceOrderItemMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/ResourceMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/ResourceRefOrValueMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/ResourceRelationshipMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/ResourceSpecificationRefMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/ScheduleDefinitionMapper.java
 create mode 100644 src/main/java/org/etsi/osl/metrico/mapper/TrackingRecordMapper.java

diff --git a/src/main/java/org/etsi/osl/metrico/mapper/AttachmentRefMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/AttachmentRefMapper.java
new file mode 100644
index 0000000..19ac15b
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/AttachmentRefMapper.java
@@ -0,0 +1,32 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.common.model.AttachmentRef;
+import org.etsi.osl.tmf.pm628.model.AttachmentRefMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface AttachmentRefMapper {
+    AttachmentRefMapper INSTANCE = Mappers.getMapper(AttachmentRefMapper.class);
+
+    @Mapping(source = "id", target = "id")
+    @Mapping(source = "description", target = "description")
+    @Mapping(source = "url", target = "url")
+    @Mapping(source = "referredType", target = "referredType")
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "href", target = "href")
+    AttachmentRef toAttachmentRef(AttachmentRefMVO attachmentRefMVO);
+
+    @Mapping(source = "id", target = "id")
+    @Mapping(source = "description", target = "description")
+    @Mapping(source = "url", target = "url")
+    @Mapping(source = "referredType", target = "referredType")
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "href", target = "href")
+    AttachmentRefMVO toAttachmentRefMVO(AttachmentRef attachmentRef);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/CharacteristicMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/CharacteristicMapper.java
new file mode 100644
index 0000000..8aebd1e
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/CharacteristicMapper.java
@@ -0,0 +1,30 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.Characteristic;
+import org.etsi.osl.tmf.pm628.model.CharacteristicMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(uses = {CharacteristicRelationshipMapper.class})
+public interface CharacteristicMapper {
+    CharacteristicMapper INSTANCE = Mappers.getMapper(CharacteristicMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "valueType", target = "valueType")
+    @Mapping(source = "characteristicRelationship", target = "characteristicRelationship")
+    Characteristic toCharacteristic(CharacteristicMVO characteristicMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "valueType", target = "valueType")
+    @Mapping(source = "characteristicRelationship", target = "characteristicRelationship")
+    CharacteristicMVO toCharacteristicMVO(Characteristic characteristic);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/CharacteristicRelationshipMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/CharacteristicRelationshipMapper.java
new file mode 100644
index 0000000..00d87e5
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/CharacteristicRelationshipMapper.java
@@ -0,0 +1,26 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.CharacteristicRelationship;
+import org.etsi.osl.tmf.pm628.model.CharacteristicRelationshipMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface CharacteristicRelationshipMapper {
+    CharacteristicRelationshipMapper INSTANCE = Mappers.getMapper(CharacteristicRelationshipMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "relationshipType", target = "relationshipType")
+    CharacteristicRelationship toCharacteristicRelationship(CharacteristicRelationshipMVO characteristicRelationshipMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "relationshipType", target = "relationshipType")
+    CharacteristicRelationshipMVO toCharacteristicRelationshipMVO(CharacteristicRelationship characteristicRelationship);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/DataFilterMapItemMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/DataFilterMapItemMapper.java
new file mode 100644
index 0000000..b81f73a
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/DataFilterMapItemMapper.java
@@ -0,0 +1,23 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.DataFilterMapItem;
+import org.etsi.osl.tmf.pm628.model.DataFilterMapItemMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(uses = {
+        DataFilterTemplateMapper.class,
+        DataFilterAttributeStringArrayMapper.class
+})
+public interface DataFilterMapItemMapper {
+    DataFilterMapItemMapper INSTANCE = Mappers.getMapper(DataFilterMapItemMapper.class);
+
+    @Mapping(source = "filterTemplate", target = "filterTemplate")
+    @Mapping(source = "stringArray", target = "stringArray")
+    DataFilterMapItem toDataFilterMapItem(DataFilterMapItemMVO dataFilterMapItemMVO);
+
+    @Mapping(source = "filterTemplate", target = "filterTemplate")
+    @Mapping(source = "stringArray", target = "stringArray")
+    DataFilterMapItemMVO toDataFilterMapItemMVO(DataFilterMapItem dataFilterMapItem);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/DataFilterMapMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/DataFilterMapMapper.java
new file mode 100644
index 0000000..a61597f
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/DataFilterMapMapper.java
@@ -0,0 +1,26 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.DataFilterMap;
+import org.etsi.osl.tmf.pm628.model.DataFilterMapMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(uses = {
+        DataFilterMapItemMapper.class
+})
+public interface DataFilterMapMapper {
+    DataFilterMapMapper INSTANCE = Mappers.getMapper(DataFilterMapMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "mappings", target = "mappings")
+    DataFilterMap toDataFilterMap(DataFilterMapMVO dataFilterMapMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "mappings", target = "mappings")
+    DataFilterMapMVO toDataFilterMapMVO(DataFilterMap dataFilterMap);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/DataFilterTemplateMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/DataFilterTemplateMapper.java
new file mode 100644
index 0000000..64c4f11
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/DataFilterTemplateMapper.java
@@ -0,0 +1,30 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.DataFilterTemplate;
+import org.etsi.osl.tmf.pm628.model.DataFilterTemplateMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface DataFilterTemplateMapper {
+    DataFilterTemplateMapper INSTANCE = Mappers.getMapper(DataFilterTemplateMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "id", target = "id")
+    @Mapping(source = "href", target = "href")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "description", target = "description")
+    DataFilterTemplate toDataFilterTemplate(DataFilterTemplateMVO dataFilterTemplateMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "id", target = "id")
+    @Mapping(source = "href", target = "href")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "description", target = "description")
+    DataFilterTemplateMVO toDataFilterTemplateMVO(DataFilterTemplate dataFilterTemplate);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/DayOfMonthRecurrenceMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/DayOfMonthRecurrenceMapper.java
new file mode 100644
index 0000000..62836b0
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/DayOfMonthRecurrenceMapper.java
@@ -0,0 +1,24 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.DayOfMonthRecurrence;
+import org.etsi.osl.tmf.pm628.model.DayOfMonthRecurrenceMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface DayOfMonthRecurrenceMapper {
+    DayOfMonthRecurrenceMapper INSTANCE = Mappers.getMapper(DayOfMonthRecurrenceMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "dates", target = "dates")
+    DayOfMonthRecurrence toDayOfMonthRecurrence(DayOfMonthRecurrenceMVO dayOfMonthRecurrenceMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "dates", target = "dates")
+    DayOfMonthRecurrenceMVO toDayOfMonthRecurrenceMVO(DayOfMonthRecurrence dayOfMonthRecurrence);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/DayOfWeekRecurrenceMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/DayOfWeekRecurrenceMapper.java
new file mode 100644
index 0000000..a4b857d
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/DayOfWeekRecurrenceMapper.java
@@ -0,0 +1,24 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.DayOfWeekRecurrence;
+import org.etsi.osl.tmf.pm628.model.DayOfWeekRecurrenceMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface DayOfWeekRecurrenceMapper {
+    DayOfWeekRecurrenceMapper INSTANCE = Mappers.getMapper(DayOfWeekRecurrenceMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "dates", target = "dates")
+    DayOfWeekRecurrence toDayOfWeekRecurrence(DayOfWeekRecurrenceMVO dayOfWeekRecurrenceMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "dates", target = "dates")
+    DayOfWeekRecurrenceMVO toDayOfWeekRecurrenceMVO(DayOfWeekRecurrence dayOfWeekRecurrence);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/ExternalIdentifierMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/ExternalIdentifierMapper.java
new file mode 100644
index 0000000..0e82564
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/ExternalIdentifierMapper.java
@@ -0,0 +1,28 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.ExternalIdentifier;
+import org.etsi.osl.tmf.pm628.model.ExternalIdentifierMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface ExternalIdentifierMapper {
+    ExternalIdentifierMapper INSTANCE = Mappers.getMapper(ExternalIdentifierMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "owner", target = "owner")
+    @Mapping(source = "externalIdentifierType", target = "externalIdentifierType")
+    @Mapping(source = "id", target = "id")
+    ExternalIdentifier toExternalIdentifier(ExternalIdentifierMVO externalIdentifierMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "owner", target = "owner")
+    @Mapping(source = "externalIdentifierType", target = "externalIdentifierType")
+    @Mapping(source = "id", target = "id")
+    ExternalIdentifierMVO toExternalIdentifierMVO(ExternalIdentifier externalIdentifier);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/FeatureMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/FeatureMapper.java
new file mode 100644
index 0000000..fff7bcd
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/FeatureMapper.java
@@ -0,0 +1,34 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.Feature;
+import org.etsi.osl.tmf.pm628.model.FeatureMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface FeatureMapper {
+    FeatureMapper INSTANCE = Mappers.getMapper(FeatureMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "isBundle", target = "isBundle")
+    @Mapping(source = "featureRelationship", target = "featureRelationship")
+    @Mapping(source = "featureCharacteristic", target = "featureCharacteristic")
+    @Mapping(source = "policyConstraint", target = "policyConstraint")
+    @Mapping(source = "isEnabled", target = "isEnabled")
+    Feature toFeature(FeatureMVO featureMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "isBundle", target = "isBundle")
+    @Mapping(source = "featureRelationship", target = "featureRelationship")
+    @Mapping(source = "featureCharacteristic", target = "featureCharacteristic")
+    @Mapping(source = "policyConstraint", target = "policyConstraint")
+    @Mapping(source = "isEnabled", target = "isEnabled")
+    FeatureMVO toFeatureMVO(Feature feature);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/FileTransferDataMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/FileTransferDataMapper.java
new file mode 100644
index 0000000..33f90d7
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/FileTransferDataMapper.java
@@ -0,0 +1,32 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.FileTransferData;
+import org.etsi.osl.tmf.pm628.model.FileTransferDataMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface FileTransferDataMapper {
+    FileTransferDataMapper INSTANCE = Mappers.getMapper(FileTransferDataMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "fileLocation", target = "fileLocation")
+    @Mapping(source = "fileFormat", target = "fileFormat")
+    @Mapping(source = "compressionType", target = "compressionType")
+    @Mapping(source = "retentionPeriod", target = "retentionPeriod")
+    @Mapping(source = "packingType", target = "packingType")
+    FileTransferDataMVO toFileTransferDataMVO(FileTransferData fileTransferData);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "fileLocation", target = "fileLocation")
+    @Mapping(source = "fileFormat", target = "fileFormat")
+    @Mapping(source = "compressionType", target = "compressionType")
+    @Mapping(source = "retentionPeriod", target = "retentionPeriod")
+    @Mapping(source = "packingType", target = "packingType")
+    FileTransferData toFileTransferData(FileTransferDataMVO fileTransferDataMVO);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/IntentRefMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/IntentRefMapper.java
new file mode 100644
index 0000000..f631d62
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/IntentRefMapper.java
@@ -0,0 +1,30 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.IntentRef;
+import org.etsi.osl.tmf.pm628.model.IntentRefMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface IntentRefMapper {
+    IntentRefMapper INSTANCE = Mappers.getMapper(IntentRefMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "href", target = "href")
+    @Mapping(source = "id", target = "id")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "referredType", target = "referredType")
+    IntentRef toIntentRef(IntentRefMVO intentRefMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "href", target = "href")
+    @Mapping(source = "id", target = "id")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "referredType", target = "referredType")
+    IntentRefMVO toIntentRefMVO(IntentRef intentRef);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/LogicalResourceMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/LogicalResourceMapper.java
new file mode 100644
index 0000000..181ecc2
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/LogicalResourceMapper.java
@@ -0,0 +1,18 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.LogicalResource;
+import org.etsi.osl.tmf.pm628.model.LogicalResourceMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(uses = ResourceMapper.class)
+public interface LogicalResourceMapper {
+    LogicalResourceMapper INSTANCE = Mappers.getMapper(LogicalResourceMapper.class);
+
+    @Mapping(source = "value", target = "value")
+    LogicalResource toLogicalResource(LogicalResourceMVO logicalResourceMVO);
+
+    @Mapping(source = "value", target = "value")
+    LogicalResourceMVO toLogicalResourceMVO(LogicalResource logicalResource);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/ManagementJobMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/ManagementJobMapper.java
new file mode 100644
index 0000000..c0ba58e
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/ManagementJobMapper.java
@@ -0,0 +1,36 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.ManagementJob;
+import org.etsi.osl.tmf.pm628.model.ManagementJobMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(uses = {
+        FileTransferDataMapper.class,
+        DataAccessEndpointMapper.class,
+        ScheduleDefinitionMapper.class
+})
+public interface ManagementJobMapper {
+    ManagementJobMapper INSTANCE = Mappers.getMapper(ManagementJobMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "href", target = "href")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "fileTransferData", target = "fileTransferData")
+    @Mapping(source = "dataAccessEndpoint", target = "dataAccessEndpoint")
+    @Mapping(source = "scheduleDefinition", target = "scheduleDefinition")
+    ManagementJob toManagementJob(ManagementJobMVO managementJobMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "href", target = "href")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "fileTransferData", target = "fileTransferData")
+    @Mapping(source = "dataAccessEndpoint", target = "dataAccessEndpoint")
+    @Mapping(source = "scheduleDefinition", target = "scheduleDefinition")
+    ManagementJobMVO toManagementJobMVO(ManagementJob managementJob);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/MeasurementCollectionJobMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/MeasurementCollectionJobMapper.java
index 35489e6..5238a66 100644
--- a/src/main/java/org/etsi/osl/metrico/mapper/MeasurementCollectionJobMapper.java
+++ b/src/main/java/org/etsi/osl/metrico/mapper/MeasurementCollectionJobMapper.java
@@ -6,50 +6,39 @@ import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
 import org.mapstruct.factory.Mappers;
 
-@Mapper
+@Mapper(uses = {
+        DataFilterMapMapper.class,
+        PerformanceIndicatorGroupSpecificationMapper.class,
+        PerformanceIndicatorSpecificationRefOrValueMapper.class,
+        TrackingRecordMapper.class,
+        FileTransferDataMapper.class,
+        DataAccessEndpointMapper.class,
+        ScheduleDefinitionMapper.class
+})
 public interface MeasurementCollectionJobMapper {
-
     MeasurementCollectionJobMapper INSTANCE = Mappers.getMapper(MeasurementCollectionJobMapper.class);
 
-    @Mapping(source = "outputFormat", target = "outputFormat")
     @Mapping(source = "reportingPeriod", target = "reportingPeriod")
     @Mapping(source = "jobCollectionFilter", target = "jobCollectionFilter")
     @Mapping(source = "searchTaskFilter", target = "searchTaskFilter")
     @Mapping(source = "jobOnDemand", target = "jobOnDemand")
-    @Mapping(source = "consumingApplicationId", target = "consumingApplicationId")
-    @Mapping(source = "producingApplicationId", target = "producingApplicationId")
-    @Mapping(source = "granularity", target = "granularity")
     @Mapping(source = "performanceIndicatorGroupSpecification", target = "performanceIndicatorGroupSpecification")
     @Mapping(source = "performanceIndicatorSpecification", target = "performanceIndicatorSpecification")
     @Mapping(source = "trackingRecord", target = "trackingRecord")
     @Mapping(source = "fileTransferData", target = "fileTransferData")
     @Mapping(source = "dataAccessEndpoint", target = "dataAccessEndpoint")
     @Mapping(source = "scheduleDefinition", target = "scheduleDefinition")
-    @Mapping(source = "type", target = "type")
-    @Mapping(source = "baseType", target = "baseType")
-    @Mapping(source = "schemaLocation", target = "schemaLocation")
-    @Mapping(source = "href", target = "href")
-    @Mapping(source = "uuid", target = "uuid")
-    MeasurementCollectionJobMVO toMeasurementCollectionJobMVO(MeasurementCollectionJob job);
+    MeasurementCollectionJob toMeasurementCollectionJob(MeasurementCollectionJobMVO measurementCollectionJobMVO);
 
-    @Mapping(source = "outputFormat", target = "outputFormat")
     @Mapping(source = "reportingPeriod", target = "reportingPeriod")
     @Mapping(source = "jobCollectionFilter", target = "jobCollectionFilter")
     @Mapping(source = "searchTaskFilter", target = "searchTaskFilter")
     @Mapping(source = "jobOnDemand", target = "jobOnDemand")
-    @Mapping(source = "consumingApplicationId", target = "consumingApplicationId")
-    @Mapping(source = "producingApplicationId", target = "producingApplicationId")
-    @Mapping(source = "granularity", target = "granularity")
     @Mapping(source = "performanceIndicatorGroupSpecification", target = "performanceIndicatorGroupSpecification")
     @Mapping(source = "performanceIndicatorSpecification", target = "performanceIndicatorSpecification")
     @Mapping(source = "trackingRecord", target = "trackingRecord")
     @Mapping(source = "fileTransferData", target = "fileTransferData")
     @Mapping(source = "dataAccessEndpoint", target = "dataAccessEndpoint")
     @Mapping(source = "scheduleDefinition", target = "scheduleDefinition")
-    @Mapping(source = "type", target = "type")
-    @Mapping(source = "baseType", target = "baseType")
-    @Mapping(source = "schemaLocation", target = "schemaLocation")
-    @Mapping(source = "href", target = "href")
-    @Mapping(source = "uuid", target = "uuid")
-    MeasurementCollectionJob toMeasurementCollectionJob(MeasurementCollectionJobMVO jobMVO);
+    MeasurementCollectionJobMVO toMeasurementCollectionJobMVO(MeasurementCollectionJob measurementCollectionJob);
 }
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/MeasurementJobMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/MeasurementJobMapper.java
new file mode 100644
index 0000000..8d6ed6d
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/MeasurementJobMapper.java
@@ -0,0 +1,35 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.MeasurementJob;
+import org.etsi.osl.tmf.pm628.model.MeasurementJobMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(uses = {
+        FileTransferDataMapper.class,
+        DataAccessEndpointMapper.class,
+        ScheduleDefinitionMapper.class,
+        PerformanceIndicatorGroupSpecificationMapper.class,
+        PerformanceIndicatorSpecificationRefOrValueMapper.class,
+        TrackingRecordMapper.class
+})
+public interface MeasurementJobMapper {
+    MeasurementJobMapper INSTANCE = Mappers.getMapper(MeasurementJobMapper.class);
+
+    @Mapping(source = "consumingApplicationId", target = "consumingApplicationId")
+    @Mapping(source = "producingApplicationId", target = "producingApplicationId")
+    @Mapping(source = "granularity", target = "granularity")
+    @Mapping(source = "performanceIndicatorGroupSpecification", target = "performanceIndicatorGroupSpecification")
+    @Mapping(source = "performanceIndicatorSpecification", target = "performanceIndicatorSpecification")
+    @Mapping(source = "trackingRecord", target = "trackingRecord")
+    MeasurementJob toMeasurementJob(MeasurementJobMVO measurementJobMVO);
+
+    @Mapping(source = "consumingApplicationId", target = "consumingApplicationId")
+    @Mapping(source = "producingApplicationId", target = "producingApplicationId")
+    @Mapping(source = "granularity", target = "granularity")
+    @Mapping(source = "performanceIndicatorGroupSpecification", target = "performanceIndicatorGroupSpecification")
+    @Mapping(source = "performanceIndicatorSpecification", target = "performanceIndicatorSpecification")
+    @Mapping(source = "trackingRecord", target = "trackingRecord")
+    MeasurementJobMVO toMeasurementJobMVO(MeasurementJob measurementJob);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/MonthlyScheduleDayOfWeekDefinitionMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/MonthlyScheduleDayOfWeekDefinitionMapper.java
new file mode 100644
index 0000000..e1dbf96
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/MonthlyScheduleDayOfWeekDefinitionMapper.java
@@ -0,0 +1,28 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.MonthlyScheduleDayOfWeekDefinition;
+import org.etsi.osl.tmf.pm628.model.MonthlyScheduleDayOfWeekDefinitionMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(uses = {
+        DayOfMonthRecurrenceMapper.class
+})
+public interface MonthlyScheduleDayOfWeekDefinitionMapper {
+    MonthlyScheduleDayOfWeekDefinitionMapper INSTANCE = Mappers.getMapper(MonthlyScheduleDayOfWeekDefinitionMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "dayOfMonthRecurrence", target = "dayOfMonthRecurrence")
+    @Mapping(source = "recurringDaySequence", target = "recurringDaySequence")
+    MonthlyScheduleDayOfWeekDefinition toMonthlyScheduleDayOfWeekDefinition(MonthlyScheduleDayOfWeekDefinitionMVO monthlyScheduleDayOfWeekDefinitionMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "dayOfMonthRecurrence", target = "dayOfMonthRecurrence")
+    @Mapping(source = "recurringDaySequence", target = "recurringDaySequence")
+    MonthlyScheduleDayOfWeekDefinitionMVO toMonthlyScheduleDayOfWeekDefinitionMVO(MonthlyScheduleDayOfWeekDefinition monthlyScheduleDayOfWeekDefinition);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/NoteMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/NoteMapper.java
new file mode 100644
index 0000000..6f25a37
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/NoteMapper.java
@@ -0,0 +1,24 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.common.model.service.Note;
+import org.etsi.osl.tmf.pm628.model.NoteMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface NoteMapper {
+    NoteMapper INSTANCE = Mappers.getMapper(NoteMapper.class);
+
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "author", target = "author")
+    @Mapping(source = "date", target = "date")
+    @Mapping(source = "text", target = "text")
+    Note toNote(NoteMVO noteMVO);
+
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "author", target = "author")
+    @Mapping(source = "date", target = "date")
+    @Mapping(source = "text", target = "text")
+    NoteMVO toNoteMVO(Note note);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorGroupSpecificationMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorGroupSpecificationMapper.java
new file mode 100644
index 0000000..1af6d2e
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorGroupSpecificationMapper.java
@@ -0,0 +1,32 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.PerformanceIndicatorGroupSpecification;
+import org.etsi.osl.tmf.pm628.model.PerformanceIndicatorGroupSpecificationMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(uses = {
+        PerformanceIndicatorSpecificationRefOrValueMapper.class
+})
+public interface PerformanceIndicatorGroupSpecificationMapper {
+    PerformanceIndicatorGroupSpecificationMapper INSTANCE = Mappers.getMapper(PerformanceIndicatorGroupSpecificationMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "groupCategory", target = "groupCategory")
+    @Mapping(source = "performanceIndicatorSpecification", target = "performanceIndicatorSpecification")
+    PerformanceIndicatorGroupSpecification toPerformanceIndicatorGroupSpecification(PerformanceIndicatorGroupSpecificationMVO performanceIndicatorGroupSpecificationMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "groupCategory", target = "groupCategory")
+    @Mapping(source = "performanceIndicatorSpecification", target = "performanceIndicatorSpecification")
+    PerformanceIndicatorGroupSpecificationMVO toPerformanceIndicatorGroupSpecificationMVO(PerformanceIndicatorGroupSpecification performanceIndicatorGroupSpecification);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorSpecRelationshipMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorSpecRelationshipMapper.java
new file mode 100644
index 0000000..cefb15a
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorSpecRelationshipMapper.java
@@ -0,0 +1,32 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.PerformanceIndicatorSpecRelationship;
+import org.etsi.osl.tmf.pm628.model.PerformanceIndicatorSpecRelationshipMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface PerformanceIndicatorSpecRelationshipMapper {
+    PerformanceIndicatorSpecRelationshipMapper INSTANCE = Mappers.getMapper(PerformanceIndicatorSpecRelationshipMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "href", target = "href")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "relationshipType", target = "relationshipType")
+    @Mapping(source = "role", target = "role")
+    @Mapping(source = "validFor", target = "validFor")
+    PerformanceIndicatorSpecRelationship toPerformanceIndicatorSpecRelationship(PerformanceIndicatorSpecRelationshipMVO performanceIndicatorSpecRelationshipMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "href", target = "href")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "relationshipType", target = "relationshipType")
+    @Mapping(source = "role", target = "role")
+    @Mapping(source = "validFor", target = "validFor")
+    PerformanceIndicatorSpecRelationshipMVO toPerformanceIndicatorSpecRelationshipMVO(PerformanceIndicatorSpecRelationship performanceIndicatorSpecRelationship);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorSpecificationMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorSpecificationMapper.java
new file mode 100644
index 0000000..f58269c
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorSpecificationMapper.java
@@ -0,0 +1,50 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.PerformanceIndicatorSpecification;
+import org.etsi.osl.tmf.pm628.model.PerformanceIndicatorSpecificationMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(uses = {
+        PerformanceIndicatorSpecRelationshipMapper.class,
+})
+public interface PerformanceIndicatorSpecificationMapper {
+    PerformanceIndicatorSpecificationMapper INSTANCE = Mappers.getMapper(PerformanceIndicatorSpecificationMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "href", target = "href")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "description", target = "description")
+    @Mapping(source = "perspective", target = "perspective")
+    @Mapping(source = "indicatorCategory", target = "indicatorCategory")
+    @Mapping(source = "indicatorType", target = "indicatorType")
+    @Mapping(source = "derivationAlgorithm", target = "derivationAlgorithm")
+    @Mapping(source = "derivationMethod", target = "derivationMethod")
+    @Mapping(source = "validFor", target = "validFor")
+    @Mapping(source = "collectionType", target = "collectionType")
+    @Mapping(source = "indicatorUnit", target = "indicatorUnit")
+    @Mapping(source = "performanceIndicatorSpecRelationship", target = "performanceIndicatorSpecRelationship")
+    PerformanceIndicatorSpecification toPerformanceIndicatorSpecification(PerformanceIndicatorSpecificationMVO performanceIndicatorSpecificationMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "href", target = "href")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "description", target = "description")
+    @Mapping(source = "perspective", target = "perspective")
+    @Mapping(source = "indicatorCategory", target = "indicatorCategory")
+    @Mapping(source = "indicatorType", target = "indicatorType")
+    @Mapping(source = "derivationAlgorithm", target = "derivationAlgorithm")
+    @Mapping(source = "derivationMethod", target = "derivationMethod")
+    @Mapping(source = "validFor", target = "validFor")
+    @Mapping(source = "collectionType", target = "collectionType")
+    @Mapping(source = "indicatorUnit", target = "indicatorUnit")
+    @Mapping(source = "performanceIndicatorSpecRelationship", target = "performanceIndicatorSpecRelationship")
+    PerformanceIndicatorSpecificationMVO toPerformanceIndicatorSpecificationMVO(PerformanceIndicatorSpecification performanceIndicatorSpecification);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorSpecificationRefMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorSpecificationRefMapper.java
new file mode 100644
index 0000000..0e56edb
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorSpecificationRefMapper.java
@@ -0,0 +1,32 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.PerformanceIndicatorSpecificationRef;
+import org.etsi.osl.tmf.pm628.model.PerformanceIndicatorSpecificationRefMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface PerformanceIndicatorSpecificationRefMapper {
+    PerformanceIndicatorSpecificationRefMapper INSTANCE = Mappers.getMapper(PerformanceIndicatorSpecificationRefMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "href", target = "href")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "referredType", target = "referredType")
+    @Mapping(source = "version", target = "version")
+    PerformanceIndicatorSpecificationRef toPerformanceIndicatorSpecificationRef(PerformanceIndicatorSpecificationRefMVO performanceIndicatorSpecificationRefMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "href", target = "href")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "referredType", target = "referredType")
+    @Mapping(source = "version", target = "version")
+    PerformanceIndicatorSpecificationRefMVO toPerformanceIndicatorSpecificationRefMVO(PerformanceIndicatorSpecificationRef performanceIndicatorSpecificationRef);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorSpecificationRefOrValueMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorSpecificationRefOrValueMapper.java
new file mode 100644
index 0000000..b78ed7c
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/PerformanceIndicatorSpecificationRefOrValueMapper.java
@@ -0,0 +1,22 @@
+package org.etsi.osl.metrico.mapper;
+
+
+import org.etsi.osl.tmf.pm628.model.PerformanceIndicatorSpecificationRefOrValue;
+import org.etsi.osl.tmf.pm628.model.PerformanceIndicatorSpecificationRefOrValueMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(uses = {
+        PerformanceIndicatorSpecificationMapper.class,
+        PerformanceIndicatorSpecificationRefMapper.class
+})
+public interface PerformanceIndicatorSpecificationRefOrValueMapper {
+    PerformanceIndicatorSpecificationRefOrValueMapper INSTANCE = Mappers.getMapper(PerformanceIndicatorSpecificationRefOrValueMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    PerformanceIndicatorSpecificationRefOrValue toPerformanceIndicatorSpecificationRefOrValue(PerformanceIndicatorSpecificationRefOrValueMVO performanceIndicatorSpecificationRefOrValueMVO);
+
+    @Mapping(source = "type", target = "type")
+    PerformanceIndicatorSpecificationRefOrValueMVO toPerformanceIndicatorSpecificationRefOrValueMVO(PerformanceIndicatorSpecificationRefOrValue performanceIndicatorSpecificationRefOrValue);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/PolicyRefMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/PolicyRefMapper.java
new file mode 100644
index 0000000..851e0b4
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/PolicyRefMapper.java
@@ -0,0 +1,32 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.PolicyRef;
+import org.etsi.osl.tmf.pm628.model.PolicyRefMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface PolicyRefMapper {
+    PolicyRefMapper INSTANCE = Mappers.getMapper(PolicyRefMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "href", target = "href")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "referredType", target = "referredType")
+    @Mapping(source = "version", target = "version")
+    PolicyRef toPolicyRef(PolicyRefMVO policyRefMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "href", target = "href")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "referredType", target = "referredType")
+    @Mapping(source = "version", target = "version")
+    PolicyRefMVO toPolicyRefMVO(PolicyRef policyRef);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/RelatedPartyRefOrPartyRoleRefMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/RelatedPartyRefOrPartyRoleRefMapper.java
new file mode 100644
index 0000000..bc6f59a
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/RelatedPartyRefOrPartyRoleRefMapper.java
@@ -0,0 +1,26 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.RelatedPartyRefOrPartyRoleRef;
+import org.etsi.osl.tmf.pm628.model.RelatedPartyRefOrPartyRoleRefMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface RelatedPartyRefOrPartyRoleRefMapper {
+    RelatedPartyRefOrPartyRoleRefMapper INSTANCE = Mappers.getMapper(RelatedPartyRefOrPartyRoleRefMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "role", target = "role")
+    @Mapping(source = "partyOrPartyRole", target = "partyOrPartyRole")
+    RelatedPartyRefOrPartyRoleRef toRelatedPartyRefOrPartyRoleRef(RelatedPartyRefOrPartyRoleRefMVO relatedPartyRefOrPartyRoleRefMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "role", target = "role")
+    @Mapping(source = "partyOrPartyRole", target = "partyOrPartyRole")
+    RelatedPartyRefOrPartyRoleRefMVO toRelatedPartyRefOrPartyRoleRefMVO(RelatedPartyRefOrPartyRoleRef relatedPartyRefOrPartyRoleRef);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/RelatedPlaceRefMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/RelatedPlaceRefMapper.java
new file mode 100644
index 0000000..9d60c1a
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/RelatedPlaceRefMapper.java
@@ -0,0 +1,26 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.RelatedPlaceRef;
+import org.etsi.osl.tmf.pm628.model.RelatedPlaceRefMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface RelatedPlaceRefMapper {
+    RelatedPlaceRefMapper INSTANCE = Mappers.getMapper(RelatedPlaceRefMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "role", target = "role")
+    @Mapping(source = "place", target = "place")
+    RelatedPlaceRef toRelatedPlaceRef(RelatedPlaceRefMVO relatedPlaceRefMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "role", target = "role")
+    @Mapping(source = "place", target = "place")
+    RelatedPlaceRefMVO toRelatedPlaceRefMVO(RelatedPlaceRef relatedPlaceRef);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/RelatedResourceOrderItemMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/RelatedResourceOrderItemMapper.java
new file mode 100644
index 0000000..60c1ad8
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/RelatedResourceOrderItemMapper.java
@@ -0,0 +1,34 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.RelatedResourceOrderItem;
+import org.etsi.osl.tmf.pm628.model.RelatedResourceOrderItemMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface RelatedResourceOrderItemMapper {
+    RelatedResourceOrderItemMapper INSTANCE = Mappers.getMapper(RelatedResourceOrderItemMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "referredType", target = "referredType")
+    @Mapping(source = "resourceOrderHref", target = "resourceOrderHref")
+    @Mapping(source = "resourceOrderId", target = "resourceOrderId")
+    @Mapping(source = "itemAction", target = "itemAction")
+    @Mapping(source = "itemId", target = "itemId")
+    @Mapping(source = "role", target = "role")
+    RelatedResourceOrderItem toRelatedResourceOrderItem(RelatedResourceOrderItemMVO relatedResourceOrderItemMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "referredType", target = "referredType")
+    @Mapping(source = "resourceOrderHref", target = "resourceOrderHref")
+    @Mapping(source = "resourceOrderId", target = "resourceOrderId")
+    @Mapping(source = "itemAction", target = "itemAction")
+    @Mapping(source = "itemId", target = "itemId")
+    @Mapping(source = "role", target = "role")
+    RelatedResourceOrderItemMVO toRelatedResourceOrderItemMVO(RelatedResourceOrderItem relatedResourceOrderItem);
+}
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/ResourceMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/ResourceMapper.java
new file mode 100644
index 0000000..18a5b42
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/ResourceMapper.java
@@ -0,0 +1,82 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.Resource;
+import org.etsi.osl.tmf.pm628.model.ResourceMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(uses = {
+        NoteMapper.class,
+        RelatedResourceOrderItemMapper.class,
+        RelatedPlaceRefMapper.class,
+        RelatedPartyRefOrPartyRoleRefMapper.class,
+        ResourceRelationshipMapper.class,
+        CharacteristicMapper.class,
+        AttachmentRefMapper.class,
+        ResourceSpecificationRefMapper.class,
+        FeatureMapper.class,
+        IntentRefMapper.class,
+        ExternalIdentifierMapper.class
+})
+public interface ResourceMapper {
+    ResourceMapper INSTANCE = Mappers.getMapper(ResourceMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "href", target = "href")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "category", target = "category")
+    @Mapping(source = "description", target = "description")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "endOperatingDate", target = "endOperatingDate")
+    @Mapping(source = "administrativeState", target = "administrativeState")
+    @Mapping(source = "operationalState", target = "operationalState")
+    @Mapping(source = "resourceStatus", target = "resourceStatus")
+    @Mapping(source = "usageState", target = "usageState")
+    @Mapping(source = "validFor", target = "validFor")
+    @Mapping(source = "note", target = "note")
+    @Mapping(source = "resourceOrderItem", target = "resourceOrderItem")
+    @Mapping(source = "place", target = "place")
+    @Mapping(source = "relatedParty", target = "relatedParty")
+    @Mapping(source = "resourceRelationship", target = "resourceRelationship")
+    @Mapping(source = "resourceCharacteristic", target = "resourceCharacteristic")
+    @Mapping(source = "attachment", target = "attachment")
+    @Mapping(source = "resourceSpecification", target = "resourceSpecification")
+    @Mapping(source = "startOperatingDate", target = "startOperatingDate")
+    @Mapping(source = "resourceVersion", target = "resourceVersion")
+    @Mapping(source = "activationFeature", target = "activationFeature")
+    @Mapping(source = "intent", target = "intent")
+    @Mapping(source = "externalIdentifier", target = "externalIdentifier")
+    Resource toResource(ResourceMVO resourceMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "href", target = "href")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "category", target = "category")
+    @Mapping(source = "description", target = "description")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "endOperatingDate", target = "endOperatingDate")
+    @Mapping(source = "administrativeState", target = "administrativeState")
+    @Mapping(source = "operationalState", target = "operationalState")
+    @Mapping(source = "resourceStatus", target = "resourceStatus")
+    @Mapping(source = "usageState", target = "usageState")
+    @Mapping(source = "validFor", target = "validFor")
+    @Mapping(source = "note", target = "note")
+    @Mapping(source = "resourceOrderItem", target = "resourceOrderItem")
+    @Mapping(source = "place", target = "place")
+    @Mapping(source = "relatedParty", target = "relatedParty")
+    @Mapping(source = "resourceRelationship", target = "resourceRelationship")
+    @Mapping(source = "resourceCharacteristic", target = "resourceCharacteristic")
+    @Mapping(source = "attachment", target = "attachment")
+    @Mapping(source = "resourceSpecification", target = "resourceSpecification")
+    @Mapping(source = "startOperatingDate", target = "startOperatingDate")
+    @Mapping(source = "resourceVersion", target = "resourceVersion")
+    @Mapping(source = "activationFeature", target = "activationFeature")
+    @Mapping(source = "intent", target = "intent")
+    @Mapping(source = "externalIdentifier", target = "externalIdentifier")
+    ResourceMVO toResourceMVO(Resource resource);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/ResourceRefOrValueMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/ResourceRefOrValueMapper.java
new file mode 100644
index 0000000..2fae4c8
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/ResourceRefOrValueMapper.java
@@ -0,0 +1,18 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.ResourceRefOrValue;
+import org.etsi.osl.tmf.pm628.model.ResourceRefOrValueMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface ResourceRefOrValueMapper {
+    ResourceRefOrValueMapper INSTANCE = Mappers.getMapper(ResourceRefOrValueMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    ResourceRefOrValueMVO toResourceRefOrValueMVO(ResourceRefOrValue resourceRefOrValue);
+
+    @Mapping(source = "type", target = "type")
+    ResourceRefOrValue toResourceRefOrValue(ResourceRefOrValueMVO resourceRefOrValueMVO);
+}
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/ResourceRelationshipMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/ResourceRelationshipMapper.java
new file mode 100644
index 0000000..f91ba64
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/ResourceRelationshipMapper.java
@@ -0,0 +1,30 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.ResourceRelationship;
+import org.etsi.osl.tmf.pm628.model.ResourceRelationshipMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface ResourceRelationshipMapper {
+    ResourceRelationshipMapper INSTANCE = Mappers.getMapper(ResourceRelationshipMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "resourceRelationshipCharacteristic", target = "resourceRelationshipCharacteristic")
+    @Mapping(source = "resource", target = "resource")
+    @Mapping(source = "relationshipType", target = "relationshipType")
+    ResourceRelationship toResourceRelationship(ResourceRelationshipMVO resourceRelationshipMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "uuid", target = "uuid")
+    @Mapping(source = "resourceRelationshipCharacteristic", target = "resourceRelationshipCharacteristic")
+    @Mapping(source = "resource", target = "resource")
+    @Mapping(source = "relationshipType", target = "relationshipType")
+    ResourceRelationshipMVO toResourceRelationshipMVO(ResourceRelationship resourceRelationship);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/ResourceSpecificationRefMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/ResourceSpecificationRefMapper.java
new file mode 100644
index 0000000..9041cab
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/ResourceSpecificationRefMapper.java
@@ -0,0 +1,32 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.rcm634.model.ResourceSpecificationRef;
+import org.etsi.osl.tmf.pm628.model.ResourceSpecificationRefMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface ResourceSpecificationRefMapper {
+    ResourceSpecificationRefMapper INSTANCE = Mappers.getMapper(ResourceSpecificationRefMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "href", target = "href")
+    @Mapping(source = "id", target = "id")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "referredType", target = "referredType")
+    @Mapping(source = "version", target = "version")
+    ResourceSpecificationRef toResourceSpecificationRef(ResourceSpecificationRefMVO resourceSpecificationRefMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "href", target = "href")
+    @Mapping(source = "id", target = "id")
+    @Mapping(source = "name", target = "name")
+    @Mapping(source = "referredType", target = "referredType")
+    @Mapping(source = "version", target = "version")
+    ResourceSpecificationRefMVO toResourceSpecificationRefMVO(ResourceSpecificationRef resourceSpecificationRef);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/ScheduleDefinitionMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/ScheduleDefinitionMapper.java
new file mode 100644
index 0000000..8d62b20
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/ScheduleDefinitionMapper.java
@@ -0,0 +1,37 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.ScheduleDefinition;
+import org.etsi.osl.tmf.pm628.model.ScheduleDefinitionMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(uses = {
+        DayOfWeekRecurrenceMapper.class,
+        MonthlyScheduleDayOfWeekDefinitionMapper.class
+})
+public interface ScheduleDefinitionMapper {
+    ScheduleDefinitionMapper INSTANCE = Mappers.getMapper(ScheduleDefinitionMapper.class);
+
+    @Mapping(source = "scheduleDefinitionStartTime", target = "scheduleDefinitionStartTime")
+    @Mapping(source = "scheduleDefinitionEndTime", target = "scheduleDefinitionEndTime")
+    @Mapping(source = "recurringFrequency", target = "recurringFrequency")
+    @Mapping(source = "excludedDate", target = "excludedDate")
+    @Mapping(source = "scheduleDefinitionHourRange", target = "scheduleDefinitionHourRange")
+    @Mapping(source = "weeklyScheduledDefinition", target = "weeklyScheduledDefinition")
+    @Mapping(source = "monthlyScheduleDayOfMonthDefinition", target = "monthlyScheduleDayOfMonthDefinition")
+    @Mapping(source = "monthlyScheduleDayOfWeekDefinition", target = "monthlyScheduleDayOfWeekDefinition")
+    @Mapping(source = "dateScheduleDefintion", target = "dateScheduleDefintion")
+    ScheduleDefinition toScheduleDefinition(ScheduleDefinitionMVO scheduleDefinitionMVO);
+
+    @Mapping(source = "scheduleDefinitionStartTime", target = "scheduleDefinitionStartTime")
+    @Mapping(source = "scheduleDefinitionEndTime", target = "scheduleDefinitionEndTime")
+    @Mapping(source = "recurringFrequency", target = "recurringFrequency")
+    @Mapping(source = "excludedDate", target = "excludedDate")
+    @Mapping(source = "scheduleDefinitionHourRange", target = "scheduleDefinitionHourRange")
+    @Mapping(source = "weeklyScheduledDefinition", target = "weeklyScheduledDefinition")
+    @Mapping(source = "monthlyScheduleDayOfMonthDefinition", target = "monthlyScheduleDayOfMonthDefinition")
+    @Mapping(source = "monthlyScheduleDayOfWeekDefinition", target = "monthlyScheduleDayOfWeekDefinition")
+    @Mapping(source = "dateScheduleDefintion", target = "dateScheduleDefintion")
+    ScheduleDefinitionMVO toScheduleDefinitionMVO(ScheduleDefinition scheduleDefinition);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/mapper/TrackingRecordMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/TrackingRecordMapper.java
new file mode 100644
index 0000000..fceb105
--- /dev/null
+++ b/src/main/java/org/etsi/osl/metrico/mapper/TrackingRecordMapper.java
@@ -0,0 +1,36 @@
+package org.etsi.osl.metrico.mapper;
+
+import org.etsi.osl.tmf.pm628.model.TrackingRecord;
+import org.etsi.osl.tmf.pm628.model.TrackingRecordMVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(uses = {
+        CharacteristicMapper.class
+})
+public interface TrackingRecordMapper {
+    TrackingRecordMapper INSTANCE = Mappers.getMapper(TrackingRecordMapper.class);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "description", target = "description")
+    @Mapping(source = "characteristic", target = "characteristic")
+    @Mapping(source = "systemId", target = "systemId")
+    @Mapping(source = "time", target = "time")
+    @Mapping(source = "user", target = "user")
+    @Mapping(source = "uuid", target = "uuid")
+    TrackingRecord toTrackingRecord(TrackingRecordMVO trackingRecordMVO);
+
+    @Mapping(source = "type", target = "type")
+    @Mapping(source = "baseType", target = "baseType")
+    @Mapping(source = "schemaLocation", target = "schemaLocation")
+    @Mapping(source = "description", target = "description")
+    @Mapping(source = "characteristic", target = "characteristic")
+    @Mapping(source = "systemId", target = "systemId")
+    @Mapping(source = "time", target = "time")
+    @Mapping(source = "user", target = "user")
+    @Mapping(source = "uuid", target = "uuid")
+    TrackingRecordMVO toTrackingRecordMVO(TrackingRecord trackingRecord);
+}
\ No newline at end of file
diff --git a/src/main/java/org/etsi/osl/metrico/services/MetricoService.java b/src/main/java/org/etsi/osl/metrico/services/MetricoService.java
index 0a281d5..d816bee 100644
--- a/src/main/java/org/etsi/osl/metrico/services/MetricoService.java
+++ b/src/main/java/org/etsi/osl/metrico/services/MetricoService.java
@@ -28,6 +28,9 @@ public class MetricoService {
     @Value("{PM_MEASUREMENT_COLLECTION_JOB_UPDATE}")
     private String PM_MEASUREMENT_COLLECTION_JOB_UPDATE = "";
 
+    @Value("${PM_MEASUREMENT_COLLECTION_JOB_UPDATE_STATE}")
+    private String PM_UPDATE_STATE_MEASUREMENT_COLLECTION_JOB;
+
     @Value("{PM_MEASUREMENT_COLLECTION_JOB_GET_BY_ID}")
     private String PM_MEASUREMENT_COLLECTION_JOB_GET_BY_ID = "";
 
@@ -69,10 +72,10 @@ public class MetricoService {
         List<DataAccessEndpointMVO> newDataAccessEndpointMVO = new ArrayList<>();
         newDataAccessEndpointMVO.add(DataAccessEndpointMapper.INSTANCE.toDataAccessEndpointMVO(givenDataAccessEndpoint));
 
-        MeasurementCollectionJobMVO promResponseMCJ = new MeasurementCollectionJobMVO();
+//        MeasurementCollectionJobMVO promResponseMCJ = new MeasurementCollectionJobMVO();
 
-        promResponseMCJ.setDataAccessEndpoint(newDataAccessEndpointMVO);
-        producerTemplate.sendBodyAndHeader(PM_MEASUREMENT_COLLECTION_JOB_UPDATE, JsonUtil.toJsonString(promResponseMCJ),"mcjid",givenMCJ.getUuid() );
+//        promResponseMCJ.setDataAccessEndpoint(newDataAccessEndpointMVO);
+//        producerTemplate.sendBodyAndHeader(PM_MEASUREMENT_COLLECTION_JOB_UPDATE, JsonUtil.toJsonString(promResponseMCJ),"mcjid",givenMCJ.getUuid() );
 
         return promResponse;
     }
@@ -103,7 +106,8 @@ public class MetricoService {
 
         }
 
-        // MCJ UPdate kai stelnw state sto MCJ _ UPDATE
+        givenMCJ.setExecutionState(job.getState());
+        producerTemplate.sendBody(PM_UPDATE_STATE_MEASUREMENT_COLLECTION_JOB, JsonUtil.toJsonString(givenMCJ));
     }
 
     public void startPeriodicQueryToPrometheus(@NotNull MeasurementCollectionJobRef mcjRef){
-- 
GitLab