diff --git a/NEWS.md b/NEWS.md
index 605624b01..e126c59c8 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -9,6 +9,10 @@
### Features
* Modify endpoint for bulk instances upsert with publish events flag ([MODINVSTOR-1283](https://folio-org.atlassian.net/browse/MODINVSTOR-1283))
* Change Kafka event publishing keys for holdings and items ([MODINVSTOR-1281](https://folio-org.atlassian.net/browse/MODINVSTOR-1281))
+* Merge custom ECS TLR feature branch into master ([MODINVSTOR-1262](https://folio-org.atlassian.net/browse/MODINVSTOR-1262))
+* Service points synchronization: implement processors ([MODINVSTOR-1246](https://folio-org.atlassian.net/browse/MODINVSTOR-1246))
+* Service points synchronization: create a verticle ([MODINVSTOR-1245](https://folio-org.atlassian.net/browse/MODINVSTOR-1245))
+* Do not return routing service points by default ([MODINVSTOR-1219](https://folio-org.atlassian.net/browse/MODINVSTOR-1219))
### Bug fixes
* Description ([ISSUE](https://folio-org.atlassian.net/browse/ISSUE))
@@ -52,6 +56,7 @@
### Features
* Add floating collection flag in location schema ([MODINVSTOR-1250](https://issues.folio.org/browse/MODINVSTOR-1250))
* Implement domain event production for location create/update/delete ([MODINVSTOR-1181](https://issues.folio.org/browse/MODINVSTOR-1181))
+* Add a new boolean field ecsRequestRouting to the service point schema ([MODINVSTOR-1179](https://issues.folio.org/browse/MODINVSTOR-1179))
* Implement domain event production for library create/update/delete ([MODINVSTOR-1216](https://issues.folio.org/browse/MODINVSTOR-1216))
* Implement domain event production for campus create/update/delete ([MODINVSTOR-1217](https://issues.folio.org/browse/MODINVSTOR-1217))
* Implement domain event production for institution create/update/delete ([MODINVSTOR-1218](https://issues.folio.org/browse/MODINVSTOR-1218))
diff --git a/README.MD b/README.MD
index 2aeee5343..a4b8f3a63 100644
--- a/README.MD
+++ b/README.MD
@@ -186,6 +186,7 @@ These environment variables configure the module interaction with S3-compatible
* `S3_ACCESS_KEY_ID`
* `S3_SECRET_ACCESS_KEY`
* `S3_IS_AWS` (default value - `false`)
+* `ECS_TLR_FEATURE_ENABLED` (default value - `false`)
# Local Deployment using Docker
diff --git a/descriptors/ModuleDescriptor-template.json b/descriptors/ModuleDescriptor-template.json
index 14dd4ccad..07d017494 100755
--- a/descriptors/ModuleDescriptor-template.json
+++ b/descriptors/ModuleDescriptor-template.json
@@ -1120,28 +1120,33 @@
},
{
"id": "service-points",
- "version": "3.3",
+ "version": "3.4",
"handlers": [
{
"methods": ["GET"],
"pathPattern": "/service-points",
- "permissionsRequired": ["inventory-storage.service-points.collection.get"]
+ "permissionsRequired": ["inventory-storage.service-points.collection.get"],
+ "modulePermissions": ["user-tenants.collection.get"]
}, {
"methods": ["GET"],
"pathPattern": "/service-points/{id}",
- "permissionsRequired": ["inventory-storage.service-points.item.get"]
+ "permissionsRequired": ["inventory-storage.service-points.item.get"],
+ "modulePermissions": ["user-tenants.collection.get"]
}, {
"methods": ["POST"],
"pathPattern": "/service-points",
- "permissionsRequired": ["inventory-storage.service-points.item.post"]
+ "permissionsRequired": ["inventory-storage.service-points.item.post"],
+ "modulePermissions": ["user-tenants.collection.get"]
}, {
"methods": ["PUT"],
"pathPattern": "/service-points/{id}",
- "permissionsRequired": ["inventory-storage.service-points.item.put"]
+ "permissionsRequired": ["inventory-storage.service-points.item.put"],
+ "modulePermissions": ["user-tenants.collection.get"]
}, {
"methods": ["DELETE"],
"pathPattern": "/service-points/{id}",
- "permissionsRequired": ["inventory-storage.service-points.item.delete"]
+ "permissionsRequired": ["inventory-storage.service-points.item.delete"],
+ "modulePermissions": ["user-tenants.collection.get"]
}
]
},
@@ -2900,7 +2905,8 @@
{ "name": "S3_BUCKET", "value": "marc-migrations" },
{ "name": "S3_ACCESS_KEY_ID", "value": "" },
{ "name": "S3_SECRET_ACCESS_KEY", "value": "" },
- { "name": "S3_IS_AWS", "value": "true" }
+ { "name": "S3_IS_AWS", "value": "true" },
+ { "name": "ECS_TLR_FEATURE_ENABLED", "value": "false"}
]
}
}
diff --git a/pom.xml b/pom.xml
index 8ddbb6658..51bd97fde 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,6 +37,7 @@
5.5.0
4.2.2
3.26.3
+ 2.1.7
3.13.0
3.6.0
@@ -273,6 +274,12 @@
log4j-slf4j2-impl
test
+
+ uk.org.webcompere
+ system-stubs-junit4
+ ${system-stubs-junit4.version}
+ test
+
diff --git a/ramls/service-point.raml b/ramls/service-point.raml
index 7f04a4ddd..4037caf71 100644
--- a/ramls/service-point.raml
+++ b/ramls/service-point.raml
@@ -1,6 +1,6 @@
#%RAML 1.0
title: Service Points API
-version: v3.3
+version: v3.4
protocols: [ HTTP, HTTPS ]
baseUri: http://localhost
@@ -34,6 +34,12 @@ resourceTypes:
searchable: { description: "with valid searchable fields", example: "name=aaa"},
pageable
]
+ queryParameters:
+ includeRoutingServicePoints:
+ description: "Should ECS request routing service points be included in the response"
+ default: false
+ required: false
+ type: boolean
description: Return a list of service points
post:
description: Create a new service point
diff --git a/ramls/servicepoint.json b/ramls/servicepoint.json
index 1590139dc..292538d8c 100644
--- a/ramls/servicepoint.json
+++ b/ramls/servicepoint.json
@@ -72,6 +72,11 @@
]
}
},
+ "ecsRequestRouting": {
+ "type": "boolean",
+ "description": "Indicates a service point used for the ECS functionality",
+ "default" : false
+ },
"metadata": {
"type": "object",
"$ref": "raml-util/schemas/metadata.schema",
diff --git a/src/main/java/org/folio/rest/impl/InitApiImpl.java b/src/main/java/org/folio/rest/impl/InitApiImpl.java
index 134fec4e9..bfa05628d 100644
--- a/src/main/java/org/folio/rest/impl/InitApiImpl.java
+++ b/src/main/java/org/folio/rest/impl/InitApiImpl.java
@@ -6,11 +6,13 @@
import io.vertx.core.Future;
import io.vertx.core.Handler;
import io.vertx.core.Promise;
+import io.vertx.core.ThreadingModel;
import io.vertx.core.Vertx;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.folio.rest.resource.interfaces.InitAPI;
import org.folio.services.caches.ConsortiumDataCache;
+import org.folio.services.consortium.ServicePointSynchronizationVerticle;
import org.folio.services.consortium.ShadowInstanceSynchronizationVerticle;
import org.folio.services.consortium.SynchronizationVerticle;
import org.folio.services.migration.async.AsyncMigrationConsumerVerticle;
@@ -25,6 +27,7 @@ public void init(Vertx vertx, Context context, Handler> han
initAsyncMigrationVerticle(vertx)
.compose(v -> initShadowInstanceSynchronizationVerticle(vertx, getConsortiumDataCache(context)))
.compose(v -> initSynchronizationVerticle(vertx, getConsortiumDataCache(context)))
+ .compose(v -> initServicePointSynchronizationVerticle(vertx, getConsortiumDataCache(context)))
.map(true)
.onComplete(handler);
}
@@ -76,6 +79,22 @@ private Future