diff --git a/CHANGELOG.md b/CHANGELOG.md
index b5798dc74..6534e4e1c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,11 +1,13 @@
# Changelog
All notable changes to this project will be documented in this file.
-## [8.8.1](https://github.com/Backbase/stream-services/compare/8.8.0...8.8.1)
+## [9.1.0](https://github.com/Backbase/stream-services/compare/9.0.0...9.1.0)
### Changed
- added partitioning to a batch permission update request
-### Changed
+ - fix update data group items request to access-control (use externalDataItemIds instead of internal)
+
## [9.0.0](https://github.com/Backbase/stream-services/compare/8.8.0...9.0.0)
+### Changed
- Upgraded to bb bom 2025.10.2
## [8.8.0](https://github.com/Backbase/stream-services/compare/8.7.0...8.8.0)
diff --git a/pom.xml b/pom.xml
index 71d63a6c7..94b85aaa3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
com.backbase.stream
stream-services
- 8.11.1
+ 9.1.0
pom
Stream :: Services
diff --git a/stream-access-control/access-control-core/pom.xml b/stream-access-control/access-control-core/pom.xml
index 9dd9287a3..a2a60cdb9 100644
--- a/stream-access-control/access-control-core/pom.xml
+++ b/stream-access-control/access-control-core/pom.xml
@@ -5,7 +5,7 @@
com.backbase.stream
stream-access-control
- 8.11.1
+ 9.1.0
access-control-core
diff --git a/stream-access-control/access-control-core/src/main/java/com/backbase/stream/configuration/AccessControlConfiguration.java b/stream-access-control/access-control-core/src/main/java/com/backbase/stream/configuration/AccessControlConfiguration.java
index 7b21e2d66..4842ee72a 100644
--- a/stream-access-control/access-control-core/src/main/java/com/backbase/stream/configuration/AccessControlConfiguration.java
+++ b/stream-access-control/access-control-core/src/main/java/com/backbase/stream/configuration/AccessControlConfiguration.java
@@ -7,6 +7,7 @@
import com.backbase.accesscontrol.permissioncheck.api.service.v1.PermissionCheckApi;
import com.backbase.accesscontrol.serviceagreement.api.service.v1.ServiceAgreementApi;
import com.backbase.accesscontrol.usercontext.api.service.v1.UserContextApi;
+import com.backbase.dbs.arrangement.api.service.v3.ArrangementsApi;
import com.backbase.dbs.user.api.service.v2.IdentityManagementApi;
import com.backbase.dbs.user.api.service.v2.UserManagementApi;
import com.backbase.dbs.user.profile.api.service.v2.UserProfileManagementApi;
@@ -82,6 +83,7 @@ public CustomerAccessGroupService customerAccessGroupService(CustomerAccessGroup
@Bean
public AccessGroupService accessGroupService(
UserManagementApi usersApi,
+ ArrangementsApi arrangementsApi,
DeletionProperties configurationProperties,
BatchResponseUtils batchResponseUtils,
AccessControlConfigurationProperties accessControlConfigurationProperties,
@@ -95,7 +97,7 @@ public AccessGroupService accessGroupService(
AssignPermissionsApi assignPermissionsApi,
com.backbase.accesscontrol.assignpermissions.api.integration.v1.AssignPermissionsApi assignPermissionsIntegrationApi,
UserContextApi userContextApi) {
- return new AccessGroupService(usersApi, batchResponseUtils, configurationProperties,
+ return new AccessGroupService(usersApi, arrangementsApi, batchResponseUtils, configurationProperties,
accessControlConfigurationProperties,
permissionCheckApi, dataGroupServiceApi, dataGroupIntegrationApi, functionGroupServiceApi,
functionGroupIntegrationApi,
diff --git a/stream-access-control/access-control-core/src/main/java/com/backbase/stream/service/AccessGroupService.java b/stream-access-control/access-control-core/src/main/java/com/backbase/stream/service/AccessGroupService.java
index 2bcc23380..913a4e289 100644
--- a/stream-access-control/access-control-core/src/main/java/com/backbase/stream/service/AccessGroupService.java
+++ b/stream-access-control/access-control-core/src/main/java/com/backbase/stream/service/AccessGroupService.java
@@ -42,6 +42,10 @@
import com.backbase.accesscontrol.serviceagreement.api.service.v1.model.ServiceAgreementParticipants;
import com.backbase.accesscontrol.serviceagreement.api.service.v1.model.ServiceAgreementUpdateRequest;
import com.backbase.accesscontrol.usercontext.api.service.v1.UserContextApi;
+import com.backbase.dbs.arrangement.api.service.v3.ArrangementsApi;
+import com.backbase.dbs.arrangement.api.service.v3.model.ArrangementItem;
+import com.backbase.dbs.arrangement.api.service.v3.model.ArrangementSearchesListResponse;
+import com.backbase.dbs.arrangement.api.service.v3.model.ArrangementsSearchesPostRequest;
import com.backbase.dbs.user.api.service.v2.UserManagementApi;
import com.backbase.dbs.user.api.service.v2.model.GetUser;
import com.backbase.stream.configuration.AccessControlConfigurationProperties;
@@ -78,6 +82,7 @@
import java.util.Collection;
import java.util.Collections;
import java.util.EnumMap;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -126,6 +131,8 @@ public class AccessGroupService {
@NonNull
private final UserManagementApi usersApi;
@NonNull
+ private final ArrangementsApi arrangementsApiService;
+ @NonNull
private final BatchResponseUtils batchResponseUtils;
@NonNull
private final DeletionProperties deletionProperties;
@@ -195,7 +202,6 @@ public Mono getServiceAgreementByExternalId(String externalId)
}
/**
- *
* @param streamTask
* @param serviceAgreement
* @return Service Agreement
@@ -971,65 +977,105 @@ public Mono setupProductGroups(ProductGroupTask streamTask) {
public Mono updateExistingDataGroupsBatch(BatchProductGroupTask task,
List existingDataGroups, List productGroups) {
List batchUpdateRequest = new ArrayList<>();
- final Set affectedArrangements = Stream.concat(
- productGroups.stream().map(StreamUtils::getInternalProductIds).flatMap(List::stream),
- productGroups.stream().map(BaseProductGroup::getCustomDataGroupItems).flatMap(List::stream)
- .map(CustomDataGroupItem::getInternalId))
- .collect(Collectors.toSet());
- if (task.getIngestionMode().isDataGroupsReplaceEnabled()) {
+ final Map affectedArrangementsInternalToExternalIds = Stream.concat(
+ productGroups.stream()
+ .flatMap(StreamUtils::getAllProducts)
+ .filter(Objects::nonNull)
+ .map(p -> new java.util.AbstractMap.SimpleEntry<>(p.getInternalId(), p.getExternalId())),
+ productGroups.stream()
+ .map(BaseProductGroup::getCustomDataGroupItems)
+ .filter(Objects::nonNull)
+ .flatMap(List::stream)
+ .map(i -> new java.util.AbstractMap.SimpleEntry<>(i.getInternalId(), i.getExternalId())))
+ .filter(e -> e.getKey() != null && e.getValue() != null)
+ .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> a));
+
+ Mono