From 6129f5578425b3b525829c8c7ca0b0bae08285e4 Mon Sep 17 00:00:00 2001
From: Lars Johansson <lars.johansson@ess.eu>
Date: Fri, 27 Oct 2023 14:16:46 +0200
Subject: [PATCH] Remove name equivalence from REST API

---
 .../names/repository/NameRepository.java      | 11 -----
 .../openepics/names/rest/api/v1/IHistory.java |  2 -
 .../openepics/names/rest/api/v1/INames.java   | 42 -------------------
 .../openepics/names/rest/beans/FieldName.java |  2 -
 .../rest/controller/HistoryController.java    |  8 ++--
 .../rest/controller/NamesController.java      | 28 +++----------
 .../rest/controller/ReportController.java     |  6 +--
 .../openepics/names/service/NamesService.java | 37 ++++++----------
 .../org/openepics/names/util/TextUtil.java    |  1 -
 .../names/util/ValidateNameElementUtil.java   |  3 +-
 .../openepics/names/docker/ITUtilNames.java   | 17 --------
 .../org/openepics/names/docker/NamesIT.java   | 22 +---------
 .../names/util/ValidateUtilTest.java          |  2 +-
 13 files changed, 29 insertions(+), 152 deletions(-)

diff --git a/src/main/java/org/openepics/names/repository/NameRepository.java b/src/main/java/org/openepics/names/repository/NameRepository.java
index e8dd0c33..6ce390c9 100644
--- a/src/main/java/org/openepics/names/repository/NameRepository.java
+++ b/src/main/java/org/openepics/names/repository/NameRepository.java
@@ -158,8 +158,6 @@ public class NameRepository {
                     cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID)));
                 } else if (FieldName.NAME.equals(orderBy)) {
                     cq.orderBy(cb.asc(from.get(Name.FIELD_CONVENTION_NAME)));
-                } else if (FieldName.NAMEEQUIVALENCE.equals(orderBy)) {
-                    cq.orderBy(cb.asc(from.get(Name.FIELD_CONVENTION_NAME_EQUIVALENCE)));
                 } else if (FieldName.SYSTEMSTRUCTURE.equals(orderBy)) {
                     cq.orderBy(cb.asc(cb.function(NameStructure.FUNCTION_GET_MNEMONIC_PATH_SYSTEM_STRUCTURE, String.class, from.get(Name.FIELD_CONVENTION_NAME))));
                 } else if (FieldName.DEVICESTRUCTURE.equals(orderBy)) {
@@ -178,8 +176,6 @@ public class NameRepository {
                     cq.orderBy(cb.desc(from.get(NameStructure.FIELD_UUID)));
                 } else if (FieldName.NAME.equals(orderBy)) {
                     cq.orderBy(cb.desc(from.get(Name.FIELD_CONVENTION_NAME)));
-                } else if (FieldName.NAMEEQUIVALENCE.equals(orderBy)) {
-                    cq.orderBy(cb.desc(from.get(Name.FIELD_CONVENTION_NAME_EQUIVALENCE)));
                 } else if (FieldName.SYSTEMSTRUCTURE.equals(orderBy)) {
                     cq.orderBy(cb.desc(cb.function(NameStructure.FUNCTION_GET_MNEMONIC_PATH_SYSTEM_STRUCTURE, String.class, from.get(Name.FIELD_CONVENTION_NAME))));
                 } else if (FieldName.DEVICESTRUCTURE.equals(orderBy)) {
@@ -371,8 +367,6 @@ public class NameRepository {
                     cq.orderBy(cb.asc(from.get(NameStructure.FIELD_UUID)));
                 } else if (FieldName.NAME.equals(orderBy)) {
                     cq.orderBy(cb.asc(from.get(Name.FIELD_CONVENTION_NAME)));
-                } else if (FieldName.NAMEEQUIVALENCE.equals(orderBy)) {
-                    cq.orderBy(cb.asc(from.get(Name.FIELD_CONVENTION_NAME_EQUIVALENCE)));
                 } else if (FieldName.SYSTEMSTRUCTURE.equals(orderBy)) {
                     cq.orderBy(cb.asc(cb.function(NameStructure.FUNCTION_GET_MNEMONIC_PATH_SYSTEM_STRUCTURE, String.class, from.get(Name.FIELD_CONVENTION_NAME))));
                 } else if (FieldName.DEVICESTRUCTURE.equals(orderBy)) {
@@ -391,8 +385,6 @@ public class NameRepository {
                     cq.orderBy(cb.desc(from.get(NameStructure.FIELD_UUID)));
                 } else if (FieldName.NAME.equals(orderBy)) {
                     cq.orderBy(cb.desc(from.get(Name.FIELD_CONVENTION_NAME)));
-                } else if (FieldName.NAMEEQUIVALENCE.equals(orderBy)) {
-                    cq.orderBy(cb.desc(from.get(Name.FIELD_CONVENTION_NAME_EQUIVALENCE)));
                 } else if (FieldName.SYSTEMSTRUCTURE.equals(orderBy)) {
                     cq.orderBy(cb.desc(cb.function(NameStructure.FUNCTION_GET_MNEMONIC_PATH_SYSTEM_STRUCTURE, String.class, from.get(Name.FIELD_CONVENTION_NAME))));
                 } else if (FieldName.DEVICESTRUCTURE.equals(orderBy)) {
@@ -497,9 +489,6 @@ public class NameRepository {
             if (FieldName.UUID.equals(orderBy)) {
                 sqlOrderBy.append("n.");
                 sqlOrderBy.append(NameStructure.FIELD_UUID);
-            } else if (FieldName.NAMEEQUIVALENCE.equals(orderBy)) {
-                sqlOrderBy.append("n.");
-                sqlOrderBy.append(Name.FIELD_CONVENTION_NAME_EQUIVALENCE);
             } else if (FieldName.SYSTEMSTRUCTURE.equals(orderBy)) {
                 sqlOrderBy.append(NameStructure.FUNCTION_GET_MNEMONIC_PATH_SYSTEM_STRUCTURE);
                 sqlOrderBy.append("(n.conventionName)");
diff --git a/src/main/java/org/openepics/names/rest/api/v1/IHistory.java b/src/main/java/org/openepics/names/rest/api/v1/IHistory.java
index 76c1e900..19e37e69 100644
--- a/src/main/java/org/openepics/names/rest/api/v1/IHistory.java
+++ b/src/main/java/org/openepics/names/rest/api/v1/IHistory.java
@@ -103,7 +103,6 @@ public interface IHistory {
      * Return paged list of name elements.
      *
      * @param name name
-     * @param nameEquivalence name equivalence
      * @param systemStructure system structure mnemonic path
      * @param deviceStructure device structure mnemonic path
      * @param index index
@@ -155,7 +154,6 @@ public interface IHistory {
             produces = {"application/json"})
     public ResponsePageNameElements readNamesHistory(
             @Parameter(in = ParameterIn.QUERY, description = "search by name") @RequestParam(required = false) String name,
-            @Parameter(in = ParameterIn.QUERY, description = "search by name equivalence") @RequestParam(required = false) String nameEquivalence,
             @Parameter(in = ParameterIn.QUERY, description = "search by system structure mnemonic path") @RequestParam(required = false) String systemStructure,
             @Parameter(in = ParameterIn.QUERY, description = "search by device structure mnemonic path") @RequestParam(required = false) String deviceStructure,
             @Parameter(in = ParameterIn.QUERY, description = "search by index") @RequestParam(required = false) String index,
diff --git a/src/main/java/org/openepics/names/rest/api/v1/INames.java b/src/main/java/org/openepics/names/rest/api/v1/INames.java
index 59b912b7..e48a5230 100644
--- a/src/main/java/org/openepics/names/rest/api/v1/INames.java
+++ b/src/main/java/org/openepics/names/rest/api/v1/INames.java
@@ -100,7 +100,6 @@ public interface INames {
            read      GET    /names/deviceStructure/{mnemonicPath} - readNamesDeviceStructure     hidden from Swagger UI
            read      GET    /names/legacy                         - readNamesLegacy
            ----------------------------------------------------------------------------------------------------
-           read      GET    /names/equivalence/{name}             - equivalenceName              hidden from Swagger UI
            read      GET    /names/exists/{name}                  - existsName                   hidden from Swagger UI
            read      GET    /names/isLegacy/{name}                - isLegacyName                 hidden from Swagger UI
            read      GET    /names/isValidToCreate/{name}         - isValidToCreateName          hidden from Swagger UI
@@ -293,7 +292,6 @@ public interface INames {
      * @param deleted if deleted-only names are to be included
      * (false for non-deleted-only names, true for deleted-only names, not used for both cases)
      * @param name name
-     * @param nameEquivalence name equivalence
      * @param systemStructure system structure mnemonic path
      * @param deviceStructure device structure mnemonic path
      * @param index index
@@ -343,7 +341,6 @@ public interface INames {
     public ResponsePageNameElements readNames(
             @Parameter(in = ParameterIn.QUERY, description = "if deleted names are to be included or not, omitted for both deleted and not deleted names") @RequestParam(required = false) Boolean deleted,
             @Parameter(in = ParameterIn.QUERY, description = "search by name") @RequestParam(required = false) String name,
-            @Parameter(in = ParameterIn.QUERY, description = "search by name equivalence") @RequestParam(required = false) String nameEquivalence,
             @Parameter(in = ParameterIn.QUERY, description = "search by system structure mnemonic path") @RequestParam(required = false) String systemStructure,
             @Parameter(in = ParameterIn.QUERY, description = "search by device structure mnemonic path") @RequestParam(required = false) String deviceStructure,
             @Parameter(in = ParameterIn.QUERY, description = "search by index") @RequestParam(required = false) String index,
@@ -361,7 +358,6 @@ public interface INames {
      * @param deleted if deleted-only names are to be included
      * (false for non-deleted-only names, true for deleted-only names, not used for both cases)
      * @param name name
-     * @param nameEquivalence name equivalence
      * @param systemStructure system structure mnemonic path
      * @param deviceStructure device structure mnemonic path
      * @param index index
@@ -410,7 +406,6 @@ public interface INames {
     public ResponseEntity<Resource> readNamesDownload(
             @Parameter(in = ParameterIn.QUERY, description = "if deleted names are to be included or not, omitted for both deleted and not deleted names") @RequestParam(required = false) Boolean deleted,
             @Parameter(in = ParameterIn.QUERY, description = "search by name") @RequestParam(required = false) String name,
-            @Parameter(in = ParameterIn.QUERY, description = "search by name equivalence") @RequestParam(required = false) String nameEquivalence,
             @Parameter(in = ParameterIn.QUERY, description = "search by system structure mnemonic path") @RequestParam(required = false) String systemStructure,
             @Parameter(in = ParameterIn.QUERY, description = "search by device structure mnemonic path") @RequestParam(required = false) String deviceStructure,
             @Parameter(in = ParameterIn.QUERY, description = "search by index") @RequestParam(required = false) String index,
@@ -628,43 +623,6 @@ public interface INames {
 
     // ----------------------------------------------------------------------------------------------------
 
-    /**
-     * Return name equivalence for name.
-     *
-     * @param name name to get name equivalence for
-     * @return name equivalence
-     */
-    @Hidden
-    @Operation(
-            summary     = "Return name equivalence for name",
-            description = "Return name equivalence for name."
-    )
-    @ApiResponses(value = {
-            @ApiResponse(
-                    responseCode = "200",
-                    description  = "OK. Return name equivalence.",
-                    content = @Content(
-                            mediaType = "text/plain",
-                            schema = @Schema(implementation = String.class))),
-            @ApiResponse(
-                    responseCode = "422",
-                    description  = "Unprocessable entity. Reason and information such as message, details, field are available.",
-                    content = @Content(
-                            mediaType = "application/json",
-                            schema = @Schema(implementation = Response.class))),
-            @ApiResponse(
-                    responseCode = "500",
-                    description  = "Internal server error. Reason and information such as message, details, field are available.",
-                    content = @Content(
-                            mediaType = "application/json",
-                            schema = @Schema(implementation = Response.class)))
-
-    })
-    @GetMapping(
-            value = "/equivalence/{name}")
-    public String equivalenceName(
-             @Parameter(in = ParameterIn.PATH, description = "name to get name equivalence for") @PathVariable("name") String name);
-
     /**
      * Return if name exists (exact match).
      *
diff --git a/src/main/java/org/openepics/names/rest/beans/FieldName.java b/src/main/java/org/openepics/names/rest/beans/FieldName.java
index c31906fb..f93e2727 100644
--- a/src/main/java/org/openepics/names/rest/beans/FieldName.java
+++ b/src/main/java/org/openepics/names/rest/beans/FieldName.java
@@ -33,8 +33,6 @@ public enum FieldName {
     UUID,
     @Schema(description = "Name (verbose) of the name.")
     NAME,
-    @Schema(description = "Name equivalence of the name.")
-    NAMEEQUIVALENCE,
     @Schema(description = "Mnemonic path for for the system structure.")
     SYSTEMSTRUCTURE,
     @Schema(description = "Mnemonic path for for the device structure.")
diff --git a/src/main/java/org/openepics/names/rest/controller/HistoryController.java b/src/main/java/org/openepics/names/rest/controller/HistoryController.java
index e1e5e85c..c88ec8ac 100644
--- a/src/main/java/org/openepics/names/rest/controller/HistoryController.java
+++ b/src/main/java/org/openepics/names/rest/controller/HistoryController.java
@@ -71,22 +71,22 @@ public class HistoryController implements IHistory {
 
     @Override
     public ResponsePageNameElements readNamesHistory(
-            String name, String nameEquivalence, String systemStructure, String deviceStructure, String index, String description, String who,
+            String name, String systemStructure, String deviceStructure, String index, String description, String who,
             FieldName orderBy, Boolean isAsc, Integer page, Integer pageSize) {
         // validate
         // read names
 
         try {
             ValidateUtil.validateInputAvailable(
-                    !ValidateUtil.areAllNull(name, nameEquivalence, systemStructure, deviceStructure, index, description, who));
+                    !ValidateUtil.areAllNull(name, systemStructure, deviceStructure, index, description, who));
             ValidateNameElementUtil.validateNamesInputRead(
                     null,
-                    null, name, nameEquivalence, systemStructure, deviceStructure, index, description, who,
+                    null, name, systemStructure, deviceStructure, index, description, who,
                     null,
                     orderBy, isAsc,
                     page, pageSize);
             return namesService.readNamesHistory(
-                    null, name, nameEquivalence, systemStructure, deviceStructure, index, description, who,
+                    null, name, systemStructure, deviceStructure, index, description, who,
                     orderBy, isAsc, page, pageSize);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
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 40070f3f..9453afb6 100644
--- a/src/main/java/org/openepics/names/rest/controller/NamesController.java
+++ b/src/main/java/org/openepics/names/rest/controller/NamesController.java
@@ -153,7 +153,7 @@ public class NamesController implements INames {
 
     @Override
     public ResponsePageNameElements readNames(Boolean deleted,
-            String name, String nameEquivalence, String systemStructure, String deviceStructure, String index, String description, String who,
+            String name, String systemStructure, String deviceStructure, String index, String description, String who,
             FieldName orderBy, Boolean isAsc, Integer page, Integer pageSize) {
         // validate
         // read names
@@ -161,12 +161,12 @@ public class NamesController implements INames {
         try {
             ValidateNameElementUtil.validateNamesInputRead(
                     deleted,
-                    null, name, nameEquivalence, systemStructure, deviceStructure, index, description, who,
+                    null, name, systemStructure, deviceStructure, index, description, who,
                     null,
                     orderBy, isAsc,
                     page, pageSize);
             return namesService.readNames(deleted,
-                    null, name, nameEquivalence, systemStructure, deviceStructure, index, description, who,
+                    null, name, systemStructure, deviceStructure, index, description, who,
                     orderBy, isAsc, page, pageSize);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
@@ -180,14 +180,14 @@ public class NamesController implements INames {
 
     @Override
     public ResponseEntity<Resource> readNamesDownload(Boolean deleted,
-            String name, String nameEquivalence, String systemStructure, String deviceStructure, String index, String description, String who,
+            String name, String systemStructure, String deviceStructure, String index, String description, String who,
             FieldName orderBy, Boolean isAsc, Integer page, Integer pageSize) {
         // validate
         // read names
         // convert to output
 
         ResponsePageNameElements nameElements = readNames(deleted,
-                name, nameEquivalence, systemStructure, deviceStructure, index, description, who,
+                name, systemStructure, deviceStructure, index, description, who,
                 orderBy, isAsc, page, pageSize);
         InputStreamResource isr = new InputStreamResource(ExcelUtil.nameElementsToExcel(nameElements));
         return ResponseEntity.ok()
@@ -287,24 +287,6 @@ public class NamesController implements INames {
 
     // ----------------------------------------------------------------------------------------------------
 
-    @Override
-    public String equivalenceName(String name) {
-        // validate
-        // read
-
-        try {
-            ValidateUtil.validateInputName(name);
-            return namesService.equivalenceName(name);
-        } catch (ServiceException e) {
-            logService.logServiceException(LOGGER, Level.WARNING, e);
-            logService.logStackTraceElements(LOGGER, Level.WARNING, e);
-            throw e;
-        } catch (Exception e) {
-            logService.logStackTraceElements(LOGGER, Level.WARNING, e);
-            throw e;
-        }
-    }
-
     @Override
     public ResponseEntity<ResponseBoolean> existsName(String name) {
         // validate
diff --git a/src/main/java/org/openepics/names/rest/controller/ReportController.java b/src/main/java/org/openepics/names/rest/controller/ReportController.java
index 4cd04f8e..ec820f61 100644
--- a/src/main/java/org/openepics/names/rest/controller/ReportController.java
+++ b/src/main/java/org/openepics/names/rest/controller/ReportController.java
@@ -144,9 +144,9 @@ public class ReportController {
         // prepare metrics
         //     read names - latest, latest deleted, latest not deleted
         //     count names - kind of name
-        ResponsePageNameElements nameElementsEssNames = namesService.readNames(null, null, null, null, null, null, null, null, null, Boolean.FALSE, null, null, null, null);
-        ResponsePageNameElements nameElementsEssNamesDeleted = namesService.readNames(Boolean.TRUE, null, null, null, null, null, null, null, null, Boolean.FALSE, null, null, null, null);
-        ResponsePageNameElements nameElementsEssNamesNotDeleted = namesService.readNames(Boolean.FALSE, null, null, null, null, null, null, null, null, Boolean.FALSE, null, null, null, null);
+        ResponsePageNameElements nameElementsEssNames = namesService.readNames(null, null, null, null, null, null, null, null, Boolean.FALSE, null, null, null, null);
+        ResponsePageNameElements nameElementsEssNamesDeleted = namesService.readNames(Boolean.TRUE, null, null, null, null, null, null, null, Boolean.FALSE, null, null, null, null);
+        ResponsePageNameElements nameElementsEssNamesNotDeleted = namesService.readNames(Boolean.FALSE, null, null, null, null, null, null, null, Boolean.FALSE, null, null, null, null);
         ResponsePageNameElements nameElementsEssNamesNotDeletedLegacy = namesService.readNamesLegacy(null, null, null, null, null);
 
         HolderReportName holderReportName = new HolderReportName(nameElementsEssNamesNotDeleted);
diff --git a/src/main/java/org/openepics/names/service/NamesService.java b/src/main/java/org/openepics/names/service/NamesService.java
index 1810e266..fe27acac 100644
--- a/src/main/java/org/openepics/names/service/NamesService.java
+++ b/src/main/java/org/openepics/names/service/NamesService.java
@@ -228,15 +228,15 @@ public class NamesService {
     // ----------------------------------------------------------------------------------------------------
 
     public ResponsePageNameElements readNames(Boolean deleted,
-            String uuid, String name, String nameEquivalence, String systemStructure, String deviceStructure, String index, String description, String who,
+            String uuid, String name, String systemStructure, String deviceStructure, String index, String description, String who,
             FieldName orderBy, Boolean isAsc, Integer offset, Integer limit) {
         return readNames(deleted,
-                uuid, name, nameEquivalence, systemStructure, deviceStructure, index, description, who,
+                uuid, name, systemStructure, deviceStructure, index, description, who,
                 Boolean.FALSE, orderBy, isAsc, offset, limit);
     }
 
     public ResponsePageNameElements readNames(Boolean deleted,
-            String uuid, String name, String nameEquivalence, String systemStructure, String deviceStructure, String index, String description, String who,
+            String uuid, String name, String systemStructure, String deviceStructure, String index, String description, String who,
             Boolean includeHistory, FieldName orderBy, Boolean isAsc, Integer offset, Integer limit) {
         // validation outside method
         // read names
@@ -246,7 +246,6 @@ public class NamesService {
             LOGGER.log(Level.FINE, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_NAMES, "deleted", deleted));
             LOGGER.log(Level.FINE, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_NAMES, "uuid", uuid));
             LOGGER.log(Level.FINE, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_NAMES, "name", name));
-            LOGGER.log(Level.FINE, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_NAMES, "nameEquivalence", nameEquivalence));
             LOGGER.log(Level.FINE, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_NAMES, "systemStructure", systemStructure));
             LOGGER.log(Level.FINE, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_NAMES, "deviceStructure", deviceStructure));
             LOGGER.log(Level.FINE, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_NAMES, "index", index));
@@ -262,11 +261,11 @@ public class NamesService {
         List<Name> names = null;
         Long totalCount = null;
         if (Boolean.TRUE.equals(includeHistory)) {
-            names = nameRepository.readNamesHistory(uuid, name, nameEquivalence, systemStructure, deviceStructure, index, description, who, orderBy, isAsc, offset, limit);
-            totalCount = nameRepository.countNamesHistory(uuid, name, nameEquivalence, systemStructure, deviceStructure, index, description, who);
+            names = nameRepository.readNamesHistory(uuid, name, null, systemStructure, deviceStructure, index, description, who, orderBy, isAsc, offset, limit);
+            totalCount = nameRepository.countNamesHistory(uuid, name, null, systemStructure, deviceStructure, index, description, who);
         } else {
-            names = nameRepository.readNames(deleted, uuid, name, nameEquivalence, systemStructure, deviceStructure, index, description, who, includeHistory, orderBy, isAsc, offset, limit);
-            totalCount = nameRepository.countNames(deleted, uuid, name, nameEquivalence, systemStructure, deviceStructure, index, description, who, includeHistory);
+            names = nameRepository.readNames(deleted, uuid, name, null, systemStructure, deviceStructure, index, description, who, includeHistory, orderBy, isAsc, offset, limit);
+            totalCount = nameRepository.countNames(deleted, uuid, name, null, systemStructure, deviceStructure, index, description, who, includeHistory);
         }
 
         // one name entry will give one name element
@@ -301,7 +300,7 @@ public class NamesService {
             }
         } catch (IllegalArgumentException e) {
             return readNames(false,
-                    null, uuid, null, null, null, null, null, null,
+                    null, uuid, null, null, null, null, null,
                     null, null, null, null);
         }
 
@@ -317,7 +316,7 @@ public class NamesService {
         LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_NAMES_SYSTEM_STRUCTURE, "mnemonicPath", mnemonicPath));
 
         return readNames(false,
-                null, null, null, mnemonicPath, null, null, null, null,
+                null, null, mnemonicPath, null, null, null, null,
                 orderBy, isAsc, offset, limit);
     }
 
@@ -330,12 +329,12 @@ public class NamesService {
         LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_NAMES_DEVICE_STRUCTURE, "mnemonicPath", mnemonicPath));
 
         return readNames(false,
-                null, null, null, null,mnemonicPath, null, null, null,
+                null, null, null,mnemonicPath, null, null, null,
                 orderBy, isAsc, offset, limit);
     }
 
     public ResponsePageNameElements readNamesHistory(
-            String uuid, String name, String nameEquivalence, String systemStructure, String deviceStructure, String index, String description, String who,
+            String uuid, String name, String systemStructure, String deviceStructure, String index, String description, String who,
             FieldName orderBy, Boolean isAsc, Integer offset, Integer limit) {
         // validation outside method
         // read history for name
@@ -344,7 +343,6 @@ public class NamesService {
         if (LOGGER.isLoggable(Level.FINE)) {
             LOGGER.log(Level.FINE, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_NAMES_HISTORY, "uuid", uuid));
             LOGGER.log(Level.FINE, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_NAMES_HISTORY, "name", name));
-            LOGGER.log(Level.FINE, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_NAMES_HISTORY, "nameEquivalence", nameEquivalence));
             LOGGER.log(Level.FINE, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_NAMES_HISTORY, "systemStructure", systemStructure));
             LOGGER.log(Level.FINE, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_NAMES_HISTORY, "deviceStructure", deviceStructure));
             LOGGER.log(Level.FINE, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_NAMES_HISTORY, "index", index));
@@ -357,7 +355,7 @@ public class NamesService {
         }
 
         return readNames(null,
-                uuid, name, nameEquivalence, systemStructure, deviceStructure, index, description, who,
+                uuid, name, systemStructure, deviceStructure, index, description, who,
                 Boolean.TRUE, orderBy, isAsc, offset, limit);
     }
 
@@ -370,7 +368,7 @@ public class NamesService {
         LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_NAMES_HISTORY, "uuid", uuid));
 
         return readNames(null,
-                uuid, null, null, null, null, null, null, null,
+                uuid, null, null, null, null, null, null,
                 Boolean.TRUE, orderBy, isAsc, offset, limit);
     }
 
@@ -405,15 +403,6 @@ public class NamesService {
 
     // ----------------------------------------------------------------------------------------------------
 
-    public String equivalenceName(String name) {
-        // validation outside method
-        // read equivalence
-
-        LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.EQUIVALENCE_NAME, "name", name));
-
-        return namingConvention.equivalenceClassRepresentative(name);
-    }
-
     public Boolean existsName(String name) {
         // validation outside method
         // read exists
diff --git a/src/main/java/org/openepics/names/util/TextUtil.java b/src/main/java/org/openepics/names/util/TextUtil.java
index 10680cdd..9d1721a6 100644
--- a/src/main/java/org/openepics/names/util/TextUtil.java
+++ b/src/main/java/org/openepics/names/util/TextUtil.java
@@ -142,7 +142,6 @@ public class TextUtil {
     public static final String READ_NAMES_SYSTEM_STRUCTURE        = "Read names system structure";
     public static final String READ_NAMES_DEVICE_STRUCTURE        = "Read names device structure";
     public static final String READ_NAMES_HISTORY                 = "Read names history";
-    public static final String EQUIVALENCE_NAME                   = "Equivalence name";
     public static final String EXISTS_NAME                        = "Exists name";
     public static final String IS_LEGACY_NAME                     = "Is legacy name";
     public static final String IS_VALID_TO_CREATE_NAME            = "Is valid to create name";
diff --git a/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java b/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java
index b2c12f38..0ee609f4 100644
--- a/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java
+++ b/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java
@@ -67,7 +67,6 @@ public class ValidateNameElementUtil {
      * @param deleted deleted
      * @param uuid uuid
      * @param name name
-     * @param nameEquivalence name equivalence
      * @param systemStructure system structure mnemonic
      * @param deviceStructure device structure mnemonic
      * @param index index
@@ -80,7 +79,7 @@ public class ValidateNameElementUtil {
      * @param limit limit
      */
     public static void validateNamesInputRead(Boolean deleted,
-            String uuid, String name, String nameEquivalence, String systemStructure, String deviceStructure, String index, String description, String who,
+            String uuid, String name, String systemStructure, String deviceStructure, String index, String description, String who,
             Boolean includeHistory, FieldName orderBy, Boolean isAsc, Integer offset, Integer limit) {
 
         // validate input
diff --git a/src/test/java/org/openepics/names/docker/ITUtilNames.java b/src/test/java/org/openepics/names/docker/ITUtilNames.java
index b9e1d47e..391c2045 100644
--- a/src/test/java/org/openepics/names/docker/ITUtilNames.java
+++ b/src/test/java/org/openepics/names/docker/ITUtilNames.java
@@ -378,23 +378,6 @@ public class ITUtilNames {
         }
     }
 
-    /**
-     * Utility method to get name equivalence of a mnemonic or name.
-     *
-     * @param name name
-     * @param expected expected response
-     */
-    public static void assertEquivalence(String name, String expected) {
-        try {
-            String[] response = ITUtil.doGetJson(ITUtil.HTTP_IP_PORT_NAMING_API_V1_NAMES + "/equivalence/" + name);
-            ITUtil.assertResponseLength2CodeOKContent(response, expected);
-        } catch (IOException e) {
-            fail();
-        } catch (Exception e) {
-            fail();
-        }
-    }
-
     /**
      * Utility method to check if name exists.
      *
diff --git a/src/test/java/org/openepics/names/docker/NamesIT.java b/src/test/java/org/openepics/names/docker/NamesIT.java
index 343c7bde..1c95fd78 100644
--- a/src/test/java/org/openepics/names/docker/NamesIT.java
+++ b/src/test/java/org/openepics/names/docker/NamesIT.java
@@ -193,17 +193,6 @@ class NamesIT {
         }
     }
 
-    @Test
-    void equivalenceName() {
-        // purpose
-        //     test name equivalence
-        //
-        // what
-        //     read        equivalence name
-
-        ITUtilNames.assertEquivalence("A2T-010PRL:RFS-PRLTap-071", "A2T-10PR1:RFS-PR1TAP-71");
-    }
-
     @Test
     void existsName() {
         // purpose
@@ -1094,7 +1083,7 @@ class NamesIT {
 
         try {
             // read & search
-            //     deleted, uuid, name, nameEquivalence, systemStructure, deviceStructure, index, description
+            //     deleted, uuid, name, systemStructure, deviceStructure, index, description
             //     combination
             //     pagination
             //         page, pageSize
@@ -1115,8 +1104,6 @@ class NamesIT {
             ITUtilNames.assertRead("?name=RFQ-010%",                    10, -1);
             ITUtilNames.assertRead("?name=RFQ-10%",                      0);
 
-            ITUtilNames.assertRead("?nameEquivalence=RFQ-10%",          10, -1);
-
             ITUtilNames.assertRead("?systemStructure=RFQ-010",           9, -1);
             ITUtilNames.assertRead("?systemStructure=RFQ-0",             0);
             ITUtilNames.assertRead("?systemStructure=RFQ-0__",           9, -1);
@@ -1146,11 +1133,9 @@ class NamesIT {
             ITUtilNames.assertRead("?who=asdf",                          0);
             ITUtilNames.assertRead("?who=%asdf%",                        0);
 
-            ITUtilNames.assertRead("?nameEquivalence=RFQ-10%&deviceStructure=EMR-FS",   8);
+            ITUtilNames.assertRead("?deviceStructure=EMR-FS&index=003",  1);
 
             // order by
-            //     avoid
-            //         NAMEEQUIVALENCE - not of interest
             response  = ITUtilNames.assertRead("?deviceStructure=EMR-FS&orderBy=UUID&isAsc=true");
             response2 = ITUtilNames.assertRead("?deviceStructure=EMR-FS&orderBy=UUID&isAsc=false");
             assertTrue(response.getList().size() > 0);
@@ -1260,7 +1245,6 @@ class NamesIT {
             //     /history/names?parameter=value
             //         parameter must be available
             ITUtilHistory.assertHistoryNames("?name=%010%",                            14, -1);
-            ITUtilHistory.assertHistoryNames("?nameEquivalence=RFQ-10%",               14, -1);
             ITUtilHistory.assertHistoryNames("?systemStructure=RFQ-0__",               13, -1);
             ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS",                12);
             ITUtilHistory.assertHistoryNames("?index=003",                              1, -1);
@@ -1268,8 +1252,6 @@ class NamesIT {
             ITUtilHistory.assertHistoryNames("?who=test%",                             17, -1);
 
             //     order by
-            //         avoid
-            //             NAMEEQUIVALENCE - not of interest
             response  = ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&orderBy=UUID&isAsc=true");
             response2 = ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&orderBy=UUID&isAsc=false");
             assertTrue(response.getList().size() > 0);
diff --git a/src/test/java/org/openepics/names/util/ValidateUtilTest.java b/src/test/java/org/openepics/names/util/ValidateUtilTest.java
index 68a99527..8f9cf6e7 100644
--- a/src/test/java/org/openepics/names/util/ValidateUtilTest.java
+++ b/src/test/java/org/openepics/names/util/ValidateUtilTest.java
@@ -694,7 +694,7 @@ class ValidateUtilTest {
     @Test
     void validateInputReadNames() {
         ValidateNameElementUtil.validateNamesInputRead(
-                null, null, null, null, null, null, null, null, null,
+                null, null, null, null, null, null, null, null,
                 null, null, null, null, null);
     }
 
-- 
GitLab