From ac762feb8495b3cb546eb455e68f84ae46a34e5c Mon Sep 17 00:00:00 2001
From: Lars Johansson <lars.johansson@ess.eu>
Date: Thu, 5 Jan 2023 14:34:42 +0100
Subject: [PATCH] Update parameter names

Update parameter names to help handle date and username.
---
 .../names/repository/model/Structure.java     |   6 +-
 .../rest/controller/NamesController.java      |  12 +-
 .../rest/controller/StructuresController.java |  24 ++--
 .../names/service/DeviceGroupService.java     |  18 ++-
 .../names/service/DeviceTypeService.java      |  16 +--
 .../names/service/DisciplineService.java      |  20 ++--
 .../openepics/names/service/NamesService.java |  30 ++---
 .../names/service/StructuresService.java      | 111 ++++++++----------
 .../names/service/SubsystemService.java       |  16 +--
 .../names/service/SystemGroupService.java     |  22 ++--
 .../names/service/SystemService.java          |  22 ++--
 11 files changed, 131 insertions(+), 166 deletions(-)

diff --git a/src/main/java/org/openepics/names/repository/model/Structure.java b/src/main/java/org/openepics/names/repository/model/Structure.java
index 4be69803..292a1aac 100644
--- a/src/main/java/org/openepics/names/repository/model/Structure.java
+++ b/src/main/java/org/openepics/names/repository/model/Structure.java
@@ -111,9 +111,9 @@ public class Structure extends NameStructure implements Serializable {
      * Utility method to help set attributes for Structure class, which in practice is either of its sub classes.
      *
      * @param status status
-     * @param requested requested
-     * @param requestedBy requested by
-     * @param requestedComment requested comment
+     * @param processed processed
+     * @param processedBy processed by
+     * @param processedComment processed comment
      */
     public void setAttributesStatusProcessed(Status status, Date processed, String processedBy, String processedComment) {
         setStatus(status);
diff --git a/src/main/java/org/openepics/names/rest/controller/NamesController.java b/src/main/java/org/openepics/names/rest/controller/NamesController.java
index 5cab7988..1b2b9983 100644
--- a/src/main/java/org/openepics/names/rest/controller/NamesController.java
+++ b/src/main/java/org/openepics/names/rest/controller/NamesController.java
@@ -95,7 +95,7 @@ public class NamesController implements INames {
 
         try {
             namesService.validateNamesCreate(nameElements);
-            return new ResponseEntity<>(namesService.createNames(nameElements), Response.getHeaderJson(), HttpStatus.CREATED);
+            return new ResponseEntity<>(namesService.createNames(nameElements, TextUtil.TEST_WHO), Response.getHeaderJson(), HttpStatus.CREATED);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
             logService.logStackTraceElements(LOGGER, Level.WARNING, e);
@@ -118,7 +118,7 @@ public class NamesController implements INames {
              if (ExcelUtil.hasExcelFormat(file)) {
                  List<NameElementCommand> nameElementCommands = ExcelUtil.excelToNameElementCommands(file.getInputStream());
                  namesService.validateNamesCreate(nameElementCommands);
-                 List<NameElement> nameElements = namesService.createNames(nameElementCommands);
+                 List<NameElement> nameElements = namesService.createNames(nameElementCommands, TextUtil.TEST_WHO);
                  InputStreamResource isr = new InputStreamResource(ExcelUtil.nameElementsToExcel(nameElements));
                  return ResponseEntity.ok()
                          .header(HttpHeaders.CONTENT_DISPOSITION, ATTACHMENT_FILENAME_NAME_ELEMENT_XLSX)
@@ -445,7 +445,7 @@ public class NamesController implements INames {
 
         try {
             namesService.validateNamesUpdate(nameElements);
-            return namesService.updateNames(nameElements);
+            return namesService.updateNames(nameElements, TextUtil.TEST_WHO);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
             logService.logStackTraceElements(LOGGER, Level.WARNING, e);
@@ -468,7 +468,7 @@ public class NamesController implements INames {
             if (ExcelUtil.hasExcelFormat(file)) {
                 List<NameElementCommand> nameElementCommands = ExcelUtil.excelToNameElementCommands(file.getInputStream());
                 namesService.validateNamesUpdate(nameElementCommands);
-                List<NameElement> nameElements = namesService.updateNames(nameElementCommands);
+                List<NameElement> nameElements = namesService.updateNames(nameElementCommands, TextUtil.TEST_WHO);
                 InputStreamResource isr = new InputStreamResource(ExcelUtil.nameElementsToExcel(nameElements));
                 return ResponseEntity.ok()
                         .header(HttpHeaders.CONTENT_DISPOSITION, ATTACHMENT_FILENAME_NAME_ELEMENT_XLSX)
@@ -500,7 +500,7 @@ public class NamesController implements INames {
 
         try {
           namesService.validateNamesDelete(nameElements);
-          return namesService.deleteNames(nameElements);
+          return namesService.deleteNames(nameElements, TextUtil.TEST_WHO);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
             logService.logStackTraceElements(LOGGER, Level.WARNING, e);
@@ -523,7 +523,7 @@ public class NamesController implements INames {
             if (ExcelUtil.hasExcelFormat(file)) {
                 List<NameElementCommand> nameElementCommands = ExcelUtil.excelToNameElementCommands(file.getInputStream());
                 namesService.validateNamesDelete(nameElementCommands);
-                List<NameElement> nameElements = namesService.deleteNames(nameElementCommands);
+                List<NameElement> nameElements = namesService.deleteNames(nameElementCommands, TextUtil.TEST_WHO);
                 InputStreamResource isr = new InputStreamResource(ExcelUtil.nameElementsToExcel(nameElements));
                 return ResponseEntity.ok()
                         .header(HttpHeaders.CONTENT_DISPOSITION, ATTACHMENT_FILENAME_NAME_ELEMENT_XLSX)
diff --git a/src/main/java/org/openepics/names/rest/controller/StructuresController.java b/src/main/java/org/openepics/names/rest/controller/StructuresController.java
index e60627bb..35500553 100644
--- a/src/main/java/org/openepics/names/rest/controller/StructuresController.java
+++ b/src/main/java/org/openepics/names/rest/controller/StructuresController.java
@@ -97,7 +97,7 @@ public class StructuresController implements IStructures {
 
         try {
             structuresService.validateStructuresCreate(structureElements);
-            return new ResponseEntity<>(structuresService.createStructures(structureElements), Response.getHeaderJson(), HttpStatus.CREATED);
+            return new ResponseEntity<>(structuresService.createStructures(structureElements, TextUtil.TEST_WHO), Response.getHeaderJson(), HttpStatus.CREATED);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
             logService.logStackTraceElements(LOGGER, Level.WARNING, e);
@@ -120,7 +120,7 @@ public class StructuresController implements IStructures {
             if (ExcelUtil.hasExcelFormat(file)) {
                 List<StructureElementCommand> structureElementCommands = ExcelUtil.excelToStructureElementCommands(file.getInputStream());
                 structuresService.validateStructuresCreate(structureElementCommands);
-                List<StructureElement> structureElements = structuresService.createStructures(structureElementCommands);
+                List<StructureElement> structureElements = structuresService.createStructures(structureElementCommands, TextUtil.TEST_WHO);
                 InputStreamResource isr = new InputStreamResource(ExcelUtil.structureElementsToExcel(structureElements));
                 return ResponseEntity.ok()
                         .header(HttpHeaders.CONTENT_DISPOSITION, ATTACHMENT_FILENAME_STRUCTURE_ELEMENT_XLSX)
@@ -522,7 +522,7 @@ public class StructuresController implements IStructures {
 
         try {
             structuresService.validateStructuresUpdate(structureElements);
-            return structuresService.updateStructures(structureElements);
+            return structuresService.updateStructures(structureElements, TextUtil.TEST_WHO);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
             logService.logStackTraceElements(LOGGER, Level.WARNING, e);
@@ -545,7 +545,7 @@ public class StructuresController implements IStructures {
             if (ExcelUtil.hasExcelFormat(file)) {
                 List<StructureElementCommand> structureElementCommands = ExcelUtil.excelToStructureElementCommands(file.getInputStream());
                 structuresService.validateStructuresUpdate(structureElementCommands);
-                List<StructureElement> structureElements = structuresService.updateStructures(structureElementCommands);
+                List<StructureElement> structureElements = structuresService.updateStructures(structureElementCommands, TextUtil.TEST_WHO);
                 InputStreamResource isr = new InputStreamResource(ExcelUtil.structureElementsToExcel(structureElements));
                 return ResponseEntity.ok()
                         .header(HttpHeaders.CONTENT_DISPOSITION, ATTACHMENT_FILENAME_STRUCTURE_ELEMENT_XLSX)
@@ -577,7 +577,7 @@ public class StructuresController implements IStructures {
 
         try {
             structuresService.validateStructuresDelete(structureElements);
-            return structuresService.deleteStructures(structureElements);
+            return structuresService.deleteStructures(structureElements, TextUtil.TEST_WHO);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
             logService.logStackTraceElements(LOGGER, Level.WARNING, e);
@@ -600,7 +600,7 @@ public class StructuresController implements IStructures {
             if (ExcelUtil.hasExcelFormat(file)) {
                 List<StructureElementCommand> structureElementCommands = ExcelUtil.excelToStructureElementCommands(file.getInputStream());
                 structuresService.validateStructuresDelete(structureElementCommands);
-                List<StructureElement> structureElements = structuresService.deleteStructures(structureElementCommands);
+                List<StructureElement> structureElements = structuresService.deleteStructures(structureElementCommands, TextUtil.TEST_WHO);
                 InputStreamResource isr = new InputStreamResource(ExcelUtil.structureElementsToExcel(structureElements));
                 return ResponseEntity.ok()
                         .header(HttpHeaders.CONTENT_DISPOSITION, ATTACHMENT_FILENAME_STRUCTURE_ELEMENT_XLSX)
@@ -632,7 +632,7 @@ public class StructuresController implements IStructures {
 
         try {
             structuresService.validateStructuresApprove(structureElements);
-            return structuresService.approveStructures(structureElements);
+            return structuresService.approveStructures(structureElements, TextUtil.TEST_WHO);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
             logService.logStackTraceElements(LOGGER, Level.WARNING, e);
@@ -655,7 +655,7 @@ public class StructuresController implements IStructures {
             if (ExcelUtil.hasExcelFormat(file)) {
                 List<StructureElementCommand> structureElementCommands = ExcelUtil.excelToStructureElementCommands(file.getInputStream());
                 structuresService.validateStructuresApprove(structureElementCommands);
-                List<StructureElement> structureElements = structuresService.approveStructures(structureElementCommands);
+                List<StructureElement> structureElements = structuresService.approveStructures(structureElementCommands, TextUtil.TEST_WHO);
                 InputStreamResource isr = new InputStreamResource(ExcelUtil.structureElementsToExcel(structureElements));
                 return ResponseEntity.ok()
                         .header(HttpHeaders.CONTENT_DISPOSITION, ATTACHMENT_FILENAME_STRUCTURE_ELEMENT_XLSX)
@@ -685,7 +685,7 @@ public class StructuresController implements IStructures {
 
         try {
             structuresService.validateStructuresCancel(structureElements);
-            return structuresService.cancelStructures(structureElements);
+            return structuresService.cancelStructures(structureElements, TextUtil.TEST_WHO);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
             logService.logStackTraceElements(LOGGER, Level.WARNING, e);
@@ -708,7 +708,7 @@ public class StructuresController implements IStructures {
             if (ExcelUtil.hasExcelFormat(file)) {
                 List<StructureElementCommand> structureElementCommands = ExcelUtil.excelToStructureElementCommands(file.getInputStream());
                 structuresService.validateStructuresCancel(structureElementCommands);
-                List<StructureElement> structureElements = structuresService.cancelStructures(structureElementCommands);
+                List<StructureElement> structureElements = structuresService.cancelStructures(structureElementCommands, TextUtil.TEST_WHO);
                 InputStreamResource isr = new InputStreamResource(ExcelUtil.structureElementsToExcel(structureElements));
                 return ResponseEntity.ok()
                         .header(HttpHeaders.CONTENT_DISPOSITION, ATTACHMENT_FILENAME_STRUCTURE_ELEMENT_XLSX)
@@ -738,7 +738,7 @@ public class StructuresController implements IStructures {
 
         try {
             structuresService.validateStructuresReject(structureElements);
-            return structuresService.rejectStructures(structureElements);
+            return structuresService.rejectStructures(structureElements, TextUtil.TEST_WHO);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
             logService.logStackTraceElements(LOGGER, Level.WARNING, e);
@@ -761,7 +761,7 @@ public class StructuresController implements IStructures {
             if (ExcelUtil.hasExcelFormat(file)) {
                 List<StructureElementCommand> structureElementCommands = ExcelUtil.excelToStructureElementCommands(file.getInputStream());
                 structuresService.validateStructuresReject(structureElementCommands);
-                List<StructureElement> structureElements = structuresService.rejectStructures(structureElementCommands);
+                List<StructureElement> structureElements = structuresService.rejectStructures(structureElementCommands, TextUtil.TEST_WHO);
                 InputStreamResource isr = new InputStreamResource(ExcelUtil.structureElementsToExcel(structureElements));
                 return ResponseEntity.ok()
                         .header(HttpHeaders.CONTENT_DISPOSITION, ATTACHMENT_FILENAME_STRUCTURE_ELEMENT_XLSX)
diff --git a/src/main/java/org/openepics/names/service/DeviceGroupService.java b/src/main/java/org/openepics/names/service/DeviceGroupService.java
index fb0e85e4..710dc550 100644
--- a/src/main/java/org/openepics/names/service/DeviceGroupService.java
+++ b/src/main/java/org/openepics/names/service/DeviceGroupService.java
@@ -78,9 +78,7 @@ public class DeviceGroupService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification deleteStructure(StructureElementCommand structureElement,
-            Date requested, String requestedBy,
-            HolderSystemDeviceStructure holder) {
+    public StructureElementNotification deleteStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
@@ -103,7 +101,7 @@ public class DeviceGroupService {
         DeviceGroup deviceGroup = new DeviceGroup(toBeDeleted.getUuid(), toBeDeleted.getParentUuid(),
                 toBeDeleted.getName(), toBeDeleted.getMnemonic(), toBeDeleted.getMnemonicEquivalence(),
                 toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                requested, requestedBy, structureElement.getComment());
+                when, username, structureElement.getComment());
         deviceGroupRepository.createDeviceGroup(deviceGroup);
 
         return new StructureElementNotification(
@@ -112,9 +110,7 @@ public class DeviceGroupService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification approveStructure(StructureElementCommand structureElement,
-            Date processed, String processedBy,
-            HolderSystemDeviceStructure holder) {
+    public StructureElementNotification approveStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
@@ -142,7 +138,7 @@ public class DeviceGroupService {
         //         notification
 
         String uuid = structureElement.getUuid().toString();
-        String processedComment = structureElement.getComment();
+        String comment = structureElement.getComment();
 
         // find
         List<DeviceGroup> deviceGroups = deviceGroupRepository.readDeviceGroups(Status.APPROVED, Boolean.FALSE, uuid, null, null, null, null, null, null);
@@ -163,7 +159,7 @@ public class DeviceGroupService {
         deviceGroup = deviceGroups.get(0);
 
         // approve
-        deviceGroup.setAttributesStatusProcessed(Status.APPROVED, processed, processedBy, processedComment);
+        deviceGroup.setAttributesStatusProcessed(Status.APPROVED, when, username, comment);
         deviceGroup.setLatest(Boolean.TRUE);
         deviceGroupRepository.updateDeviceGroup(deviceGroup);
 
@@ -183,10 +179,10 @@ public class DeviceGroupService {
                 structureElementCommands.add(new StructureElementCommand(deviceType.getUuid(), Type.DEVICETYPE, null, null, null, null, StructuresService.DELETE_AFTER_APPROVE_STRUCTURE_CHANGE));
             }
             for (StructureElementCommand structureElementCommand : structureElementCommands) {
-                deviceTypeService.deleteStructure(structureElementCommand, processed, processedBy, holder);
+                deviceTypeService.deleteStructure(structureElementCommand, when, username, holder);
             }
             for (StructureElementCommand structureElementCommand : structureElementCommands) {
-                deviceTypeService.approveStructure(structureElementCommand, processed, processedBy, holder);
+                deviceTypeService.approveStructure(structureElementCommand, when, username, holder);
             }
         }
 
diff --git a/src/main/java/org/openepics/names/service/DeviceTypeService.java b/src/main/java/org/openepics/names/service/DeviceTypeService.java
index 53fa1d03..309db086 100644
--- a/src/main/java/org/openepics/names/service/DeviceTypeService.java
+++ b/src/main/java/org/openepics/names/service/DeviceTypeService.java
@@ -71,9 +71,7 @@ public class DeviceTypeService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification deleteStructure(StructureElementCommand structureElement,
-            Date requested, String requestedBy,
-            HolderSystemDeviceStructure holder) {
+    public StructureElementNotification deleteStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
@@ -96,7 +94,7 @@ public class DeviceTypeService {
         DeviceType deviceType = new DeviceType(toBeDeleted.getUuid(), toBeDeleted.getParentUuid(),
                 toBeDeleted.getName(), toBeDeleted.getMnemonic(), toBeDeleted.getMnemonicEquivalence(),
                 toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                requested, requestedBy, structureElement.getComment());
+                when, username, structureElement.getComment());
         deviceTypeRepository.createDeviceType(deviceType);
 
         return new StructureElementNotification(
@@ -105,9 +103,7 @@ public class DeviceTypeService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification approveStructure(StructureElementCommand structureElement,
-            Date processed, String processedBy,
-            HolderSystemDeviceStructure holder) {
+    public StructureElementNotification approveStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
@@ -135,7 +131,7 @@ public class DeviceTypeService {
         //         notification
 
         String uuid = structureElement.getUuid().toString();
-        String processedComment = structureElement.getComment();
+        String comment = structureElement.getComment();
 
         // find
         List<DeviceType> deviceTypes = deviceTypeRepository.readDeviceTypes(Status.APPROVED, Boolean.FALSE, uuid, null, null, null, null, null, null);
@@ -156,7 +152,7 @@ public class DeviceTypeService {
         deviceType = deviceTypes.get(0);
 
         // approve
-        deviceType.setAttributesStatusProcessed(Status.APPROVED, processed, processedBy, processedComment);
+        deviceType.setAttributesStatusProcessed(Status.APPROVED, when, username, comment);
         deviceType.setLatest(Boolean.TRUE);
         deviceTypeRepository.updateDeviceType(deviceType);
 
@@ -168,7 +164,7 @@ public class DeviceTypeService {
 
         // additional
         if (StructureCommand.UPDATE.equals(structureCommandCUD)) {
-            namesService.updateNames(previous, deviceType);
+            namesService.updateNames(previous, deviceType, username);
         } else if (StructureCommand.DELETE.equals(structureCommandCUD)) {
             // not delete names - legacy names
         }
diff --git a/src/main/java/org/openepics/names/service/DisciplineService.java b/src/main/java/org/openepics/names/service/DisciplineService.java
index 72ea6169..b9685d10 100644
--- a/src/main/java/org/openepics/names/service/DisciplineService.java
+++ b/src/main/java/org/openepics/names/service/DisciplineService.java
@@ -81,9 +81,7 @@ public class DisciplineService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification deleteStructure(StructureElementCommand structureElement,
-            Date requested, String requestedBy,
-            HolderSystemDeviceStructure holder) {
+    public StructureElementNotification deleteStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
@@ -106,7 +104,7 @@ public class DisciplineService {
         Discipline discipline = new Discipline(toBeDeleted.getUuid(),
                 toBeDeleted.getName(), toBeDeleted.getMnemonic(), toBeDeleted.getMnemonicEquivalence(),
                 toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                requested, requestedBy, structureElement.getComment());
+                when, username, structureElement.getComment());
         disciplineRepository.createDiscipline(discipline);
 
         return new StructureElementNotification(
@@ -115,9 +113,7 @@ public class DisciplineService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification approveStructure(StructureElementCommand structureElement,
-            Date processed, String processedBy,
-            HolderSystemDeviceStructure holder) {
+    public StructureElementNotification approveStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
@@ -145,7 +141,7 @@ public class DisciplineService {
         //         notification
 
         String uuid = structureElement.getUuid().toString();
-        String processedComment = structureElement.getComment();
+        String comment = structureElement.getComment();
 
         List<Discipline> disciplines = disciplineRepository.readDisciplines(Status.APPROVED, Boolean.FALSE, uuid, null, null, null, null, null);
         Discipline discipline = null;
@@ -165,7 +161,7 @@ public class DisciplineService {
         discipline = disciplines.get(0);
 
         // approve
-        discipline.setAttributesStatusProcessed(Status.APPROVED, processed, processedBy, processedComment);
+        discipline.setAttributesStatusProcessed(Status.APPROVED, when, username, comment);
         discipline.setLatest(Boolean.TRUE);
         disciplineRepository.updateDiscipline(discipline);
 
@@ -177,7 +173,7 @@ public class DisciplineService {
 
         // additional
         if (StructureCommand.UPDATE.equals(structureCommandCUD)) {
-            namesService.updateNames(previous, discipline);
+            namesService.updateNames(previous, discipline, username);
         } else if (StructureCommand.DELETE.equals(structureCommandCUD)) {
             // not delete names - legacy names
             // delete sub structures - delete, approve
@@ -187,10 +183,10 @@ public class DisciplineService {
                 structureElementCommands.add(new StructureElementCommand(deviceGroup.getUuid(), Type.DEVICEGROUP, null, null, null, null, StructuresService.DELETE_AFTER_APPROVE_STRUCTURE_CHANGE));
             }
             for (StructureElementCommand structureElementCommand : structureElementCommands) {
-                deviceGroupService.deleteStructure(structureElementCommand, processed, processedBy, holder);
+                deviceGroupService.deleteStructure(structureElementCommand, when, username, holder);
             }
             for (StructureElementCommand structureElementCommand : structureElementCommands) {
-                deviceGroupService.approveStructure(structureElementCommand, processed, processedBy, holder);
+                deviceGroupService.approveStructure(structureElementCommand, when, username, holder);
             }
         }
 
diff --git a/src/main/java/org/openepics/names/service/NamesService.java b/src/main/java/org/openepics/names/service/NamesService.java
index 724f1f22..8f911dae 100644
--- a/src/main/java/org/openepics/names/service/NamesService.java
+++ b/src/main/java/org/openepics/names/service/NamesService.java
@@ -59,7 +59,6 @@ import org.openepics.names.util.HolderRepositories;
 import org.openepics.names.util.HolderSystemDeviceStructure;
 import org.openepics.names.util.NameElementUtil;
 import org.openepics.names.util.NameUtil;
-import org.openepics.names.util.TextUtil;
 import org.openepics.names.util.Utilities;
 import org.openepics.names.util.ValidateNameElementUtil;
 import org.openepics.names.util.ValidateUtil;
@@ -140,7 +139,7 @@ public class NamesService {
     }
 
     @Transactional
-    public List<NameElement> createNames(List<NameElementCommand> nameElements) {
+    public List<NameElement> createNames(List<NameElementCommand> nameElements, String username) {
         // validation outside method
         // transaction
         //     for each name element
@@ -154,19 +153,18 @@ public class NamesService {
         // initiate holder of containers for system and device structure content, for performance reasons
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
-        Date requested = new Date();
-        String requestedBy = TextUtil.TEST_WHO;
+        Date when = new Date();
         final List<NameElement> createdNameElements = Lists.newArrayList();
         for (NameElementCommand nameElement : nameElements) {
             // create name within current transaction
-            createdNameElements.add(createName(nameElement, holder, requested, requestedBy));
+            createdNameElements.add(createName(nameElement, when, username, holder));
         }
 
         LOGGER.log(Level.FINE, "createNames, createdNameElements.size: {0}", createdNameElements.size());
         return createdNameElements;
     }
     @Transactional(propagation = Propagation.MANDATORY)
-    public NameElement createName(NameElementCommand nameElement, HolderSystemDeviceStructure holder, Date requested, String requestedBy) {
+    public NameElement createName(NameElementCommand nameElement, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
@@ -203,7 +201,7 @@ public class NamesService {
                 nameElement.getParentdevicestructure(),
                 nameElement.getIndex(), derivedName, namingConvention.equivalenceClassRepresentative(derivedName),
                 nameElement.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
-                requested, requestedBy, nameElement.getComment());
+                when, username, nameElement.getComment());
         nameRepository.createName(name);
 
         return NameElementUtil.getNameElement(name);
@@ -513,7 +511,7 @@ public class NamesService {
     // ----------------------------------------------------------------------------------------------------
 
     @Transactional
-    public List<NameElement> updateNames(List<NameElementCommand> nameElements) {
+    public List<NameElement> updateNames(List<NameElementCommand> nameElements, String username) {
         // validation outside method
         // transaction
         //     for each name element
@@ -530,8 +528,7 @@ public class NamesService {
         // initiate holder of containers for system and device structure content, for performance reasons
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
-        Date requested = new Date();
-        String requestedBy = TextUtil.TEST_WHO;
+        Date when = new Date();
         final List<NameElement> updatedNameElements = Lists.newArrayList();
         for (NameElementCommand nameElement : nameElements) {
             // update not latest, not deleted
@@ -579,7 +576,7 @@ public class NamesService {
                     nameElement.getParentdevicestructure(),
                     nameElement.getIndex(), derivedName, namingConvention.equivalenceClassRepresentative(derivedName),
                     nameElement.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
-                    requested, requestedBy, nameElement.getComment());
+                    when, username, nameElement.getComment());
             nameRepository.createName(name);
 
             updatedNameElements.add(NameElementUtil.getNameElement(name));
@@ -590,7 +587,7 @@ public class NamesService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public List<NameElement> updateNames(Structure previousStructure, Structure structure) {
+    public List<NameElement> updateNames(Structure previousStructure, Structure structure, String username) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
@@ -686,7 +683,7 @@ public class NamesService {
             // update names
             //     use active transaction or, if not available, throw exception
             LOGGER.log(Level.FINE, "updateNames, structure change, nameElements.size: {0}", nameElements.size());
-            updatedNameElements = updateNames(nameElements);
+            updatedNameElements = updateNames(nameElements, username);
         }
         return updatedNameElements;
     }
@@ -694,7 +691,7 @@ public class NamesService {
     // ----------------------------------------------------------------------------------------------------
 
     @Transactional
-    public List<NameElement> deleteNames(List<NameElementCommand> nameElements) {
+    public List<NameElement> deleteNames(List<NameElementCommand> nameElements, String username) {
         // validation outside method
         // transaction
         //     for each name element
@@ -711,8 +708,7 @@ public class NamesService {
         // initiate holder of containers for system and device structure content, for performance reasons
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
-        Date requested = new Date();
-        String requestedBy = TextUtil.TEST_WHO;
+        Date when = new Date();
         final List<NameElement> deletedNameElements = Lists.newArrayList();
         for (NameElementCommand nameElement : nameElements) {
             Name name = holderIRepositories.getNameRepository().findLatestByUuid(nameElement.getUuid().toString());
@@ -749,7 +745,7 @@ public class NamesService {
                     nameElement.getParentdevicestructure(),
                     nameElement.getIndex(), derivedName, namingConvention.equivalenceClassRepresentative(derivedName),
                     nameElement.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.TRUE,
-                    requested, requestedBy, nameElement.getComment());
+                    when, username, nameElement.getComment());
             nameRepository.createName(name);
 
             deletedNameElements.add(NameElementUtil.getNameElement(name));
diff --git a/src/main/java/org/openepics/names/service/StructuresService.java b/src/main/java/org/openepics/names/service/StructuresService.java
index bb3a8b99..498ad53e 100644
--- a/src/main/java/org/openepics/names/service/StructuresService.java
+++ b/src/main/java/org/openepics/names/service/StructuresService.java
@@ -58,7 +58,6 @@ import org.openepics.names.util.HolderSystemDeviceStructure;
 import org.openepics.names.util.StructureChoice;
 import org.openepics.names.util.StructureCommand;
 import org.openepics.names.util.StructureElementUtil;
-import org.openepics.names.util.TextUtil;
 import org.openepics.names.util.Utilities;
 import org.openepics.names.util.ValidateStructureElementUtil;
 import org.openepics.names.util.ValidateUtil;
@@ -157,7 +156,7 @@ public class StructuresService {
     }
 
     @Transactional
-    public List<StructureElement> createStructures(List<StructureElementCommand> structureElements) {
+    public List<StructureElement> createStructures(List<StructureElementCommand> structureElements, String username) {
         // validation outside method
         // transaction
         //     for each structure element command
@@ -173,8 +172,7 @@ public class StructuresService {
         // initiate holder of containers for system and device structure content, for performance reasons
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
-        Date requested = new Date();
-        String requestedBy = TextUtil.TEST_WHO;
+        Date when = new Date();
         List<NotificationStructure> notifications = Lists.newArrayList();
         final List<StructureElement> createdStructureElements = Lists.newArrayList();
         for (StructureElementCommand structureElement : structureElements) {
@@ -189,14 +187,14 @@ public class StructuresService {
             mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
             String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic);
             String description = structureElement.getDescription();
-            String requestedComment = structureElement.getComment();
+            String comment = structureElement.getComment();
 
             if (Type.SYSTEMGROUP.equals(type)) {
                 // create
                 SystemGroup systemGroup = new SystemGroup(uuid,
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        requested, requestedBy, requestedComment);
+                        when, username, comment);
                 holderRepositories.getSystemGroupRepository().createSystemGroup(systemGroup);
 
                 // handle
@@ -207,7 +205,7 @@ public class StructuresService {
                 System system = new System(uuid, structureElement.getParent(),
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        requested, requestedBy, requestedComment);
+                        when, username, comment);
                 holderRepositories.getSystemRepository().createSystem(system);
 
                 // handle
@@ -218,7 +216,7 @@ public class StructuresService {
                 Subsystem subsystem = new Subsystem(uuid, structureElement.getParent(),
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        requested, requestedBy, requestedComment);
+                        when, username, comment);
                 holderRepositories.getSubsystemRepository().createSubsystem(subsystem);
 
                 // handle
@@ -229,7 +227,7 @@ public class StructuresService {
                 Discipline discipline = new Discipline(uuid,
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        requested, requestedBy, requestedComment);
+                        when, username, comment);
                 holderRepositories.getDisciplineRepository().createDiscipline(discipline);
 
                 // handle
@@ -240,7 +238,7 @@ public class StructuresService {
                 DeviceGroup deviceGroup = new DeviceGroup(uuid, structureElement.getParent(),
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        requested, requestedBy, requestedComment);
+                        when, username, comment);
                 holderRepositories.getDeviceGroupRepository().createDeviceGroup(deviceGroup);
 
                 // handle
@@ -251,7 +249,7 @@ public class StructuresService {
                 DeviceType deviceType = new DeviceType(uuid, structureElement.getParent(),
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        requested, requestedBy, requestedComment);
+                        when, username, comment);
                 holderRepositories.getDeviceTypeRepository().createDeviceType(deviceType);
 
                 // handle
@@ -790,7 +788,7 @@ public class StructuresService {
     // ----------------------------------------------------------------------------------------------------
 
     @Transactional
-    public List<StructureElement> updateStructures(List<StructureElementCommand> structureElements) {
+    public List<StructureElement> updateStructures(List<StructureElementCommand> structureElements, String username) {
         // validation outside method
         // transaction
         //     for each structure element command
@@ -807,8 +805,7 @@ public class StructuresService {
         // initiate holder of containers for system and device structure content, for performance reasons
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
-        Date requested = new Date();
-        String requestedBy = TextUtil.TEST_WHO;
+        Date when = new Date();
         List<NotificationStructure> notifications = Lists.newArrayList();
         final List<StructureElement> updatedStructureElements = Lists.newArrayList();
         for (StructureElementCommand structureElement : structureElements) {
@@ -823,14 +820,14 @@ public class StructuresService {
             mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
             String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic);
             String description = structureElement.getDescription();
-            String requestedComment = structureElement.getComment();
+            String comment = structureElement.getComment();
 
             if (Type.SYSTEMGROUP.equals(type)) {
                 // create
                 SystemGroup systemGroup = new SystemGroup(uuid,
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        requested, requestedBy, requestedComment);
+                        when, username, comment);
                 holderRepositories.getSystemGroupRepository().createSystemGroup(systemGroup);
 
                 // previous
@@ -845,7 +842,7 @@ public class StructuresService {
                 System system = new System(uuid, structureElement.getParent(),
                         name, structureElement.getMnemonic(), equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        requested, requestedBy, requestedComment);
+                        when, username, comment);
                 holderRepositories.getSystemRepository().createSystem(system);
 
                 // previous
@@ -860,7 +857,7 @@ public class StructuresService {
                 Subsystem subsystem = new Subsystem(uuid, structureElement.getParent(),
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        requested, requestedBy, requestedComment);
+                        when, username, comment);
                 holderRepositories.getSubsystemRepository().createSubsystem(subsystem);
 
                 // previous
@@ -875,7 +872,7 @@ public class StructuresService {
                 Discipline discipline = new Discipline(uuid,
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        requested, requestedBy, requestedComment);
+                        when, username, comment);
                 holderRepositories.getDisciplineRepository().createDiscipline(discipline);
 
                 // previous
@@ -890,7 +887,7 @@ public class StructuresService {
                 DeviceGroup deviceGroup = new DeviceGroup(uuid, structureElement.getParent(),
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        requested, requestedBy, requestedComment);
+                        when, username, comment);
                 holderRepositories.getDeviceGroupRepository().createDeviceGroup(deviceGroup);
 
                 // previous
@@ -905,7 +902,7 @@ public class StructuresService {
                 DeviceType deviceType = new DeviceType(uuid, structureElement.getParent(),
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        requested, requestedBy, requestedComment);
+                        when, username, comment);
                 holderRepositories.getDeviceTypeRepository().createDeviceType(deviceType);
 
                 // previous
@@ -928,7 +925,7 @@ public class StructuresService {
     // ----------------------------------------------------------------------------------------------------
 
     @Transactional
-    public List<StructureElement> deleteStructures(List<StructureElementCommand> structureElements) {
+    public List<StructureElement> deleteStructures(List<StructureElementCommand> structureElements, String username) {
         // validation outside method
         // transaction
         //     for each structure element command
@@ -944,8 +941,7 @@ public class StructuresService {
         // initiate holder of containers for system and device structure content, for performance reasons
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
-        Date requested = new Date();
-        String requestedBy = TextUtil.TEST_WHO;
+        Date when = new Date();
         List<NotificationStructure> notifications = Lists.newArrayList();
         final List<StructureElement> deletedStructureElements = Lists.newArrayList();
         for (StructureElementCommand structureElement : structureElements) {
@@ -953,17 +949,17 @@ public class StructuresService {
             StructureElementNotification structureElementNotification = null;
 
             if (Type.SYSTEMGROUP.equals(type)) {
-                structureElementNotification = systemGroupService.deleteStructure(structureElement, requested, requestedBy, holder);
+                structureElementNotification = systemGroupService.deleteStructure(structureElement, when, username, holder);
             } else if (Type.SYSTEM.equals(type)) {
-                structureElementNotification = systemService.deleteStructure(structureElement, requested, requestedBy, holder);
+                structureElementNotification = systemService.deleteStructure(structureElement, when, username, holder);
             } else if (Type.SUBSYSTEM.equals(type)) {
-                structureElementNotification = subsystemService.deleteStructure(structureElement, requested, requestedBy, holder);
+                structureElementNotification = subsystemService.deleteStructure(structureElement, when, username, holder);
             } else if (Type.DISCIPLINE.equals(type)) {
-                structureElementNotification = disciplineService.deleteStructure(structureElement, requested, requestedBy, holder);
+                structureElementNotification = disciplineService.deleteStructure(structureElement, when, username, holder);
             } else if (Type.DEVICEGROUP.equals(type)) {
-                structureElementNotification = deviceGroupService.deleteStructure(structureElement, requested, requestedBy, holder);
+                structureElementNotification = deviceGroupService.deleteStructure(structureElement, when, username, holder);
             } else if (Type.DEVICETYPE.equals(type)) {
-                structureElementNotification = deviceTypeService.deleteStructure(structureElement, requested, requestedBy, holder);
+                structureElementNotification = deviceTypeService.deleteStructure(structureElement, when, username, holder);
             } else {
                 continue;
             }
@@ -982,7 +978,7 @@ public class StructuresService {
     // ----------------------------------------------------------------------------------------------------
 
     @Transactional
-    public List<StructureElement> approveStructures(List<StructureElementCommand> structureElements) {
+    public List<StructureElement> approveStructures(List<StructureElementCommand> structureElements, String username) {
         // validation outside method
         // transaction
         //     for each structure element command
@@ -1005,8 +1001,7 @@ public class StructuresService {
         //         if deleted, names that belong to structure may be deleted, otherwise they are alive but become legacy names - legacy way for now
         //         delete sub structures
 
-        Date processed = new Date();
-        String processedBy = TextUtil.TEST_WHO;
+        Date when = new Date();
         List<NotificationStructure> notifications = Lists.newArrayList();
         final List<StructureElement> approvedStructureElements = Lists.newArrayList();
         for (StructureElementCommand structureElement : structureElements) {
@@ -1014,17 +1009,17 @@ public class StructuresService {
             StructureElementNotification structureElementNotification = null;
 
             if (Type.SYSTEMGROUP.equals(type)) {
-                structureElementNotification = systemGroupService.approveStructure(structureElement, processed, processedBy, holder);
+                structureElementNotification = systemGroupService.approveStructure(structureElement, when, username, holder);
             } else if (Type.SYSTEM.equals(type)) {
-                structureElementNotification = systemService.approveStructure(structureElement, processed, processedBy, holder);
+                structureElementNotification = systemService.approveStructure(structureElement, when, username, holder);
             } else if (Type.SUBSYSTEM.equals(type)) {
-                structureElementNotification = subsystemService.approveStructure(structureElement, processed, processedBy, holder);
+                structureElementNotification = subsystemService.approveStructure(structureElement, when, username, holder);
             } else if (Type.DISCIPLINE.equals(type)) {
-                structureElementNotification = disciplineService.approveStructure(structureElement, processed, processedBy, holder);
+                structureElementNotification = disciplineService.approveStructure(structureElement, when, username, holder);
             } else if (Type.DEVICEGROUP.equals(type)) {
-                structureElementNotification = deviceGroupService.approveStructure(structureElement, processed, processedBy, holder);
+                structureElementNotification = deviceGroupService.approveStructure(structureElement, when, username, holder);
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
-                structureElementNotification = deviceTypeService.approveStructure(structureElement, processed, processedBy, holder);
+                structureElementNotification = deviceTypeService.approveStructure(structureElement, when, username, holder);
             } else {
                 continue;
             }
@@ -1041,7 +1036,7 @@ public class StructuresService {
     }
 
     @Transactional
-    public List<StructureElement> cancelStructures(List<StructureElementCommand> structureElements) {
+    public List<StructureElement> cancelStructures(List<StructureElementCommand> structureElements, String username) {
         // validation outside method
         // transaction
         //     for each structure element
@@ -1059,14 +1054,13 @@ public class StructuresService {
         // initiate holder of containers for system and device structure content, for performance reasons
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
-        Date processed = new Date();
-        String processedBy = TextUtil.TEST_WHO;
+        Date when = new Date();
         List<NotificationStructure> notifications = Lists.newArrayList();
         final List<StructureElement> cancelledStructureElements = Lists.newArrayList();
         for (StructureElementCommand structureElement : structureElements) {
             String uuid = structureElement.getUuid().toString();
             Type type = structureElement.getType();
-            String processedComment = structureElement.getComment();
+            String comment = structureElement.getComment();
 
             if (Type.SYSTEMGROUP.equals(type)) {
                 // find
@@ -1077,7 +1071,7 @@ public class StructuresService {
                 SystemGroup systemGroup = systemGroups.get(0);
 
                 // cancel
-                systemGroup.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment);
+                systemGroup.setAttributesStatusProcessed(Status.CANCELLED, when, username, comment);
                 holderRepositories.getSystemGroupRepository().updateSystemGroup(systemGroup);
 
                 // previous
@@ -1097,7 +1091,7 @@ public class StructuresService {
                 System system = systems.get(0);
 
                 // cancel
-                system.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment);
+                system.setAttributesStatusProcessed(Status.CANCELLED, when, username, comment);
                 holderRepositories.getSystemRepository().updateSystem(system);
 
                 // previous
@@ -1117,7 +1111,7 @@ public class StructuresService {
                 Subsystem subsystem = subsystems.get(0);
 
                 // cancel
-                subsystem.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment);
+                subsystem.setAttributesStatusProcessed(Status.CANCELLED, when, username, comment);
                 holderRepositories.getSubsystemRepository().updateSubsystem(subsystem);
 
                 // previous
@@ -1137,7 +1131,7 @@ public class StructuresService {
                 Discipline discipline = disciplines.get(0);
 
                 // cancel
-                discipline.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment);
+                discipline.setAttributesStatusProcessed(Status.CANCELLED, when, username, comment);
                 holderRepositories.getDisciplineRepository().updateDiscipline(discipline);
 
                 // previous
@@ -1157,7 +1151,7 @@ public class StructuresService {
                 DeviceGroup deviceGroup = deviceGroups.get(0);
 
                 // cancel
-                deviceGroup.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment);
+                deviceGroup.setAttributesStatusProcessed(Status.CANCELLED, when, username, comment);
                 holderRepositories.getDeviceGroupRepository().updateDeviceGroup(deviceGroup);
 
                 // previous
@@ -1176,7 +1170,7 @@ public class StructuresService {
                 DeviceType deviceType = deviceTypes.get(0);
 
                 // cancel
-                deviceType.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment);
+                deviceType.setAttributesStatusProcessed(Status.CANCELLED, when, username, comment);
                 holderRepositories.getDeviceTypeRepository().updateDeviceType(deviceType);
 
                 // previous
@@ -1198,7 +1192,7 @@ public class StructuresService {
     }
 
     @Transactional
-    public List<StructureElement> rejectStructures(List<StructureElementCommand> structureElements) {
+    public List<StructureElement> rejectStructures(List<StructureElementCommand> structureElements, String username) {
         // validation outside method
         // transaction
         //     for each structure element
@@ -1216,14 +1210,13 @@ public class StructuresService {
         // initiate holder of containers for system and device structure content, for performance reasons
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
-        Date processed = new Date();
-        String processedBy = TextUtil.TEST_WHO;
+        Date when = new Date();
         List<NotificationStructure> notifications = Lists.newArrayList();
         final List<StructureElement> rejectedStructureElements = Lists.newArrayList();
         for (StructureElementCommand structureElement : structureElements) {
             String uuid = structureElement.getUuid().toString();
             Type type = structureElement.getType();
-            String processedComment = structureElement.getComment();
+            String comment = structureElement.getComment();
 
             if (Type.SYSTEMGROUP.equals(type)) {
                 // find
@@ -1234,7 +1227,7 @@ public class StructuresService {
                 SystemGroup systemGroup = systemGroups.get(0);
 
                 // reject
-                systemGroup.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment);
+                systemGroup.setAttributesStatusProcessed(Status.REJECTED, when, username, comment);
                 holderRepositories.getSystemGroupRepository().updateSystemGroup(systemGroup);
 
                 // previous
@@ -1254,7 +1247,7 @@ public class StructuresService {
                 System system = systems.get(0);
 
                 // reject
-                system.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment);
+                system.setAttributesStatusProcessed(Status.REJECTED, when, username, comment);
                 holderRepositories.getSystemRepository().updateSystem(system);
 
                 // previous
@@ -1274,7 +1267,7 @@ public class StructuresService {
                 Subsystem subsystem = subsystems.get(0);
 
                 // reject
-                subsystem.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment);
+                subsystem.setAttributesStatusProcessed(Status.REJECTED, when, username, comment);
                 holderRepositories.getSubsystemRepository().updateSubsystem(subsystem);
 
                 // previous
@@ -1294,7 +1287,7 @@ public class StructuresService {
                 Discipline discipline = disciplines.get(0);
 
                 // reject
-                discipline.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment);
+                discipline.setAttributesStatusProcessed(Status.REJECTED, when, username, comment);
                 holderRepositories.getDisciplineRepository().updateDiscipline(discipline);
 
                 // previous
@@ -1314,7 +1307,7 @@ public class StructuresService {
                 DeviceGroup deviceGroup = deviceGroups.get(0);
 
                 // reject
-                deviceGroup.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment);
+                deviceGroup.setAttributesStatusProcessed(Status.REJECTED, when, username, comment);
                 holderRepositories.getDeviceGroupRepository().updateDeviceGroup(deviceGroup);
 
                 // previous
@@ -1334,7 +1327,7 @@ public class StructuresService {
                 DeviceType deviceType = deviceTypes.get(0);
 
                 // reject
-                deviceType.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment);
+                deviceType.setAttributesStatusProcessed(Status.REJECTED, when, username, comment);
                 holderRepositories.getDeviceTypeRepository().updateDeviceType(deviceType);
 
                 // previous
diff --git a/src/main/java/org/openepics/names/service/SubsystemService.java b/src/main/java/org/openepics/names/service/SubsystemService.java
index 93076d90..ce61c738 100644
--- a/src/main/java/org/openepics/names/service/SubsystemService.java
+++ b/src/main/java/org/openepics/names/service/SubsystemService.java
@@ -74,9 +74,7 @@ public class SubsystemService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification deleteStructure(StructureElementCommand structureElement,
-            Date requested, String requestedBy,
-            HolderSystemDeviceStructure holder) {
+    public StructureElementNotification deleteStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
@@ -99,7 +97,7 @@ public class SubsystemService {
         Subsystem subsystem = new Subsystem(toBeDeleted.getUuid(), toBeDeleted.getParentUuid(),
                 toBeDeleted.getName(), toBeDeleted.getMnemonic(), toBeDeleted.getMnemonicEquivalence(),
                 toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                requested, requestedBy, structureElement.getComment());
+                when, username, structureElement.getComment());
         subsystemRepository.createSubsystem(subsystem);
 
         return new StructureElementNotification(
@@ -108,9 +106,7 @@ public class SubsystemService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification approveStructure(StructureElementCommand structureElement,
-            Date processed, String processedBy,
-            HolderSystemDeviceStructure holder) {
+    public StructureElementNotification approveStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
@@ -159,7 +155,7 @@ public class SubsystemService {
         subsystem = subsystems.get(0);
 
         // approve
-        subsystem.setAttributesStatusProcessed(Status.APPROVED, processed, processedBy, processedComment);
+        subsystem.setAttributesStatusProcessed(Status.APPROVED, when, username, processedComment);
         subsystem.setLatest(Boolean.TRUE);
         subsystemRepository.updateSubsystem(subsystem);
 
@@ -175,11 +171,11 @@ public class SubsystemService {
             boolean existsName = hasMnemonic && namesService.existsName(StructureUtil.getMnemonicPath(subsystem, holder));
             if (hasMnemonic && !existsName) {
                 NameElementCommand nameElement = new NameElementCommand(null, subsystem.getUuid(), null, null, StructuresService.SYSTEM_STRUCTURE_ONLY, null);
-                NameElement createdNameElement = namesService.createName(nameElement, holder, processed, processedBy);
+                NameElement createdNameElement = namesService.createName(nameElement, when, username, holder);
                 LOGGER.log(Level.FINE, "approveStructures, nameElement created, name:  {0}", createdNameElement.getName());
             }
         } else if (StructureCommand.UPDATE.equals(structureCommandCUD)) {
-            namesService.updateNames(previous, subsystem);
+            namesService.updateNames(previous, subsystem, username);
         } else if (StructureCommand.DELETE.equals(structureCommandCUD)) {
             // not delete names - legacy names
         }
diff --git a/src/main/java/org/openepics/names/service/SystemGroupService.java b/src/main/java/org/openepics/names/service/SystemGroupService.java
index f44bdffe..86f3cf0b 100644
--- a/src/main/java/org/openepics/names/service/SystemGroupService.java
+++ b/src/main/java/org/openepics/names/service/SystemGroupService.java
@@ -84,9 +84,7 @@ public class SystemGroupService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification deleteStructure(StructureElementCommand structureElement,
-            Date requested, String requestedBy,
-            HolderSystemDeviceStructure holder) {
+    public StructureElementNotification deleteStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
@@ -109,7 +107,7 @@ public class SystemGroupService {
         SystemGroup systemGroup = new SystemGroup(toBeDeleted.getUuid(),
                 toBeDeleted.getName(), toBeDeleted.getMnemonic(), toBeDeleted.getMnemonicEquivalence(),
                 toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                requested, requestedBy, structureElement.getComment());
+                when, username, structureElement.getComment());
         systemGroupRepository.createSystemGroup(systemGroup);
 
         return new StructureElementNotification(
@@ -118,9 +116,7 @@ public class SystemGroupService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification approveStructure(StructureElementCommand structureElement,
-            Date processed, String processedBy,
-            HolderSystemDeviceStructure holder) {
+    public StructureElementNotification approveStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
@@ -148,7 +144,7 @@ public class SystemGroupService {
         //         notification
 
         String uuid = structureElement.getUuid().toString();
-        String processedComment = structureElement.getComment();
+        String comment = structureElement.getComment();
 
         // find
         List<SystemGroup> systemGroups = systemGroupRepository.readSystemGroups(Status.APPROVED, Boolean.FALSE, uuid, null, null, null, null, null);
@@ -169,7 +165,7 @@ public class SystemGroupService {
         systemGroup = systemGroups.get(0);
 
         // approve
-        systemGroup.setAttributesStatusProcessed(Status.APPROVED, processed, processedBy, processedComment);
+        systemGroup.setAttributesStatusProcessed(Status.APPROVED, when, username, comment);
         systemGroup.setLatest(Boolean.TRUE);
         systemGroupRepository.updateSystemGroup(systemGroup);
 
@@ -185,11 +181,11 @@ public class SystemGroupService {
             boolean existsName = hasMnemonic && namesService.existsName(StructureUtil.getMnemonicPath(systemGroup, holder));
             if (hasMnemonic && !existsName) {
                 NameElementCommand nameElement = new NameElementCommand(null, systemGroup.getUuid(), null, null, StructuresService.SYSTEM_STRUCTURE_ONLY, null);
-                NameElement createdNameElement = namesService.createName(nameElement, holder, processed, processedBy);
+                NameElement createdNameElement = namesService.createName(nameElement, when, username, holder);
                 LOGGER.log(Level.FINE, "approveStructure, nameElement created, name:  {0}", createdNameElement.getName());
             }
         } else if (StructureCommand.UPDATE.equals(structureCommandCUD)) {
-            namesService.updateNames(previous, systemGroup);
+            namesService.updateNames(previous, systemGroup, username);
         } else if (StructureCommand.DELETE.equals(structureCommandCUD)) {
             // not delete names - legacy names
             // delete sub structures - delete, approve
@@ -199,10 +195,10 @@ public class SystemGroupService {
                 structureElementCommands.add(new StructureElementCommand(system.getUuid(), Type.SYSTEM, null, null, null, null, StructuresService.DELETE_AFTER_APPROVE_STRUCTURE_CHANGE));
             }
             for (StructureElementCommand structureElementCommand : structureElementCommands) {
-                systemService.deleteStructure(structureElementCommand, processed, processedBy, holder);
+                systemService.deleteStructure(structureElementCommand, when, username, holder);
             }
             for (StructureElementCommand structureElementCommand : structureElementCommands) {
-                systemService.approveStructure(structureElementCommand, processed, processedBy, holder);
+                systemService.approveStructure(structureElementCommand, when, username, holder);
             }
         }
 
diff --git a/src/main/java/org/openepics/names/service/SystemService.java b/src/main/java/org/openepics/names/service/SystemService.java
index 0f6a0a7a..5033ed4d 100644
--- a/src/main/java/org/openepics/names/service/SystemService.java
+++ b/src/main/java/org/openepics/names/service/SystemService.java
@@ -84,9 +84,7 @@ public class SystemService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification deleteStructure(StructureElementCommand structureElement,
-            Date requested, String requestedBy,
-            HolderSystemDeviceStructure holder) {
+    public StructureElementNotification deleteStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
@@ -109,7 +107,7 @@ public class SystemService {
         System system = new System(toBeDeleted.getUuid(), toBeDeleted.getParentUuid(),
                 toBeDeleted.getName(), toBeDeleted.getMnemonic(), toBeDeleted.getMnemonicEquivalence(),
                 toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                requested, requestedBy, structureElement.getComment());
+                when, username, structureElement.getComment());
         systemRepository.createSystem(system);
 
         return new StructureElementNotification(
@@ -118,9 +116,7 @@ public class SystemService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification approveStructure(StructureElementCommand structureElement,
-            Date processed, String processedBy,
-            HolderSystemDeviceStructure holder) {
+    public StructureElementNotification approveStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
@@ -148,7 +144,7 @@ public class SystemService {
         //         notification
 
         String uuid = structureElement.getUuid().toString();
-        String processedComment = structureElement.getComment();
+        String comment = structureElement.getComment();
 
         // find
         List<System> systems = systemRepository.readSystems(Status.APPROVED, Boolean.FALSE, uuid, null, null, null, null, null, null);
@@ -169,7 +165,7 @@ public class SystemService {
         system = systems.get(0);
 
         // approve
-        system.setAttributesStatusProcessed(Status.APPROVED, processed, processedBy, processedComment);
+        system.setAttributesStatusProcessed(Status.APPROVED, when, username, comment);
         system.setLatest(Boolean.TRUE);
         systemRepository.updateSystem(system);
 
@@ -185,11 +181,11 @@ public class SystemService {
             boolean existsName = hasMnemonic && namesService.existsName(StructureUtil.getMnemonicPath(system, holder));
             if (hasMnemonic && !existsName) {
                 NameElementCommand nameElement = new NameElementCommand(null, system.getUuid(), null, null, StructuresService.SYSTEM_STRUCTURE_ONLY, null);
-                NameElement createdNameElement = namesService.createName(nameElement, holder, processed, processedBy);
+                NameElement createdNameElement = namesService.createName(nameElement, when, username, holder);
                 LOGGER.log(Level.FINE, "approveStructure, nameElement created, name:  {0}", createdNameElement.getName());
             }
         } else if (StructureCommand.UPDATE.equals(structureCommandCUD)) {
-            namesService.updateNames(previous, system);
+            namesService.updateNames(previous, system, username);
         } else if (StructureCommand.DELETE.equals(structureCommandCUD)) {
             // not delete names - legacy names
             // delete sub structures - delete, approve
@@ -199,10 +195,10 @@ public class SystemService {
                 structureElementCommands.add(new StructureElementCommand(subsystem.getUuid(), Type.SUBSYSTEM, null, null, null, null, StructuresService.DELETE_AFTER_APPROVE_STRUCTURE_CHANGE));
             }
             for (StructureElementCommand structureElementCommand : structureElementCommands) {
-                subsystemService.deleteStructure(structureElementCommand, processed, processedBy, holder);
+                subsystemService.deleteStructure(structureElementCommand, when, username, holder);
             }
             for (StructureElementCommand structureElementCommand : structureElementCommands) {
-                subsystemService.approveStructure(structureElementCommand, processed, processedBy, holder);
+                subsystemService.approveStructure(structureElementCommand, when, username, holder);
             }
         }
 
-- 
GitLab