Changelog
All notable changes to this project will be documented in this file.
Fixed
- Performance improvement on retrieving the user information by calling getUserById (8 ms) Vs getUserByExternalId (50 ms)
- Update ArrangementUpdateException Logger to handle PII data
Fixed
- LegalEntitySaga: Fix periodic limits bounds setQuarterly
Changed
- fix the logic of setting the job role type for ingestion - see Maint 32629 for more details
Changed
- update ssdk version to 18.1.0 - see Maint 32324 for more details
Fixed
- Fixed setting internal id for creatorLE in reactive chain
Fixed
- Fixed invocation of putArrangementById in
ArrangementService
to pass in the arrangement’s internalId.
The arrangement’s externalId was erroneously being provided to this method.
-
Fixed
- Fixed productTypeName mapping when ingesting Product data into arrangement-manager
Fixed
- Fixed setting internal id for creatorLE before creating SA
Fixed
- Fixed missing explicit state mappings for BaseProduct related classes
Changed
- update ssdk version to 18.0.1
Changed
- Updated to 2024.10 bb bom, and plan-manager to v1
Changed
- Updated legal entities specs for service agreement to include purpose field
Changed
- Updated arrangement-manager service-api from v2 to v3
Changed
- Bumping Backbase BOM to 2024.09-LTS
- Upgraded SSDK to 17.1.0
Added
- Adding additional pmts mappings
Changed
- Updated plan-manager service api from 0.5.0 to 0.9.0
Changed
- feature - improved payment ingestion to allow for joint owner accounts to be shared.
Added
Fixed
- Update data groups with custom data items
Added
- Added plan-manager for TVP (Tailored Value Proposition)
Changed
- make ContactsSaga use continueOnError flag
Changed
- bug fixed - missing stream-starter module in stream-sdk
Changed
- Removed the service-sdk-starter-reactive since it will be removed soon and created stream-starter with all the dependencies in service-sdk-starter-reactive
Changed
- Fix the logic for creating Template type job roles only for MSA
Added
- Add CUSTOMERS product group type to OpenAPI contract
Added
- Adding login-based ingestion for product composition. Disabled by default, to enable:
backbase.stream.compositions.product.login-event.enabled=true
.
- Upgrade stream composition to 2024.04
Changed
- Upgrade stream composition to 2024.03.10-LTS
Changed
- Use pagination to query Payment Orders
Changed
- Bumping Service SDK to 17.0.0
- Bumping Banking Services clients to 2024.04
Changed
- update with fixes from 3.72.4
- Upgrade to Backbase version
2024.03-LTS
Changed
- Bumping Service SDK to 16.1.5
Changed
- Bumping Service SDK to 16.0.1
- Multiple breaking changes were introduced as part of this upgrade, including Spring Boot 3 upgrade, replacing Spring Sleuth by Micrometer and modules structure for the Composition Events.
- Bumping Banking Services clients to 2023.12
- Enhancing Multi-tenancy support by removing the concurrency limitation from
v3.70.0
using the new reactor’s context propagation.
Added
- Change name of transaction cursor mapper bean so that it does not clash with dependencies.
Added
- A flag to skip updates to user in Identity
backbase.stream.user.management.update-identity
.
Added
- Added new models for LE and SA to cover requirements in the new bootstrap. In the new structure, LE supports just master service agreement and custom service agreement has been dropped. Product groups, job profile users, reference job roles, contacts were moved from LE to new SA model. In the new bootstrap, LE and SA are now separated and can be defined in the different JSON files and independently ingested.
Added
- A flag to skip updates to user in Identity
backbase.stream.user.management.update-identity
.
Added
- Support to Events via Azure Service Bus for the Stream Composition Services
- Product Composition now supports transaction-manager’s out-of-the-box pulling mechanism, via the
transaction-pull-integration-service
. A separate chain was created for that, enabled via: backbase.stream.compositions.product.chains.transaction-manager.enabled
- Only one of the transaction chains can be enabled, either the
transaction-manager
or transaction-composition
.
- The purpose of this new chain is to create better support for the OOTB implementation and enable ModelBank projects.
- The refresh supports fine graining the pulling requests per arrangement, or a bulk request for all arrangements at once via configuring
splitPerArrangement
and concurrency
properties.
- Multi-tenancy support to SSDK message broker Events
- Only supported for
spring.cloud.stream.default.consumer.concurrency=1
- Will be enhanced when upgraded to Service SDK 16
- Breaking Change: Property
backbase.stream.client.headersToForward
is now replaced by backbase.stream.context.headersToForward
Changed
- Bumping Service SDK to 15.2.4
- Bumping Banking Services clients to 2023.09.17-LTS
- Breaking Change: Stream Composition services Async chains will now use SSDK message broker Events instead of relying in Reactive Subscriptions.
- This will bring better isolation during events processing and more control in terms of throughput and concurency.
- Enhancing Api Client logs when
logging.level.reactor.netty.http.client=DEBUG
Added
- Add customer category to service agreement spec
Changed
- Add AccountArrangementItemPut mapping in ProductMapper
Changed
- Add CardsReference to legal-entity openapi spec
Changed
- Fix transaction-cursor k8 deployment failure issue:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.backbase.stream.compositions.transaction.cursor.core.mapper.TransactionCursorMapper' available
- Fix transaction-cursor
application-local.yaml
config
Changed
- Always check cursor and create if it does not exist.
- If
DateRangeEnd
is passed in the composition request set that as lastTxnDate instead of system date.
Changed
- Adding additional mapping attributes, reservedAmount, to Credit card.
Changed
- Query for existing payments by using arrangement IDs instead of user IDs. This will eliminate duplicate payments from being ingested when joint owners are added.
Changed
- Move call to processAudiencesSegmentation after setupUsers
Changed
- Return error when transaction composition failed.
Changed
- Enabling service discovery for stream composition components, direct endpoint urls were removed.
- To use static uri settings, configure it as the following example:
backbase:
communication:
services:
stream:
legal-entity:
integration:
direct-uri: http://legal-entity-integration:8080
product:
integration:
direct-uri: http://product-integration:8080
composition:
direct-uri: http://product-composition:8080
product-catalog:
integration:
direct-uri: http://product-catalog-ingestion-integration:8080
payment-order:
integration:
direct-uri: http://payment-order-integration:8080
composition:
direct-uri: http://payment-order-composition:8080
transaction:
composition:
direct-uri: http://transaction-composition:8080
cursor:
direct-uri: http://transaction-cursor:8080
integration:
direct-uri: http://transaction-integration:8080
To keep it retro-compatible you also need to set: spring.cloud.loadbalancer.enabled=false
Added
- Secondary Service Agreement update
Changed
- Enhance Legal Entity level Limit Object to set Limit based on Privilege, Business Function and Legal Entity
Changed
- Fix formatting of StreamTask error messages
- Fix message placeholders of
AccessGroupService
Added
- Add populating the user manager cache with user profile data.
Added
- Adding the ability to retrieve the arrangement a payment belongs to.
Changed
- updated application-local configurations to be aligned with the new Backbase Local env.
Added
- Add update identity user attributes in case it’s previously created.
Changed
- Avoiding race condition when assigning a realm to a legal entity when ingesting multiple subsidiaries at the same time.
Changed
- For the IMPORT_FROM_IDENTIY strategy use the user manager importIdentity API call
Added
- Add feature flag for limits ingestion default is true,
backbase.stream.limits.worker.enabled
Changed
- Fix missing portfolio aggregation model attribute
externalId
Changed
- Removed the no-scs tag used during the docker image build. The latest baas use service bus and these libraries will be required.
Changed
- Fixed a bug that was causing the Product Composition integration with Transaction Composition to fail due to a missing required request parameter (
arrangementId
)
Changed
- Fixed two small bugs caused by introduction of UserKindSegmentationSage
add check for LE not having users before processing. (should fix error when LE is empty)
add AudiencesSegmentationConfiguration to LegalEntitySagaConfiguration
Changed
- Upgrading Stream from
2023.06
to 2023.06.2
-
Changed
- Upgrading Stream from
2023.02-LTS
to 2023.06
- Updated Portfolio’s position stream contract to include new fields
Added
- Added Support for ingesting LE customers into audiences user-kind segments (for both Retail and Business banking)
- The customer category is taken from the LE and if not present the default property will be used.
- UserKindSegmentationSage Needs to be enabled explicitly through these properties:
backbase.stream.audiences.segmentation.user-kind.enabled=true|false
backbase.stream.audiences.segmentation.user-kind.default-customer-category=RETAIL|BUSINESS
Changed
- Updated UserService.createOrImportIdentityUser to populate user’s additions to DBS with IMPORT_FROM_IDENTITY linking strategy
Changed
- Removed unused parameter from Payment Orders filter request.
The
from
parameter was set to Integer.MAX_VALUE and that was causing errors on newer Backbase versions.
Added
-
Ingestion mode configuration for legal-entity and product compositions
New properties for legal-entity-composition
:
backbase.stream.compositions.legal-entity.ingestion-mode.function-groups=UPSERT|REPLACE
backbase.stream.compositions.legal-entity.ingestion-mode.data-groups=UPSERT|REPLACE
backbase.stream.compositions.legal-entity.ingestion-mode.arrangements=UPSERT|REPLACE
New properties for product-composition
:
backbase.stream.compositions.product.ingestion-mode.function-groups=UPSERT|REPLACE
backbase.stream.compositions.product.ingestion-mode.data-groups=UPSERT|REPLACE
backbase.stream.compositions.product.ingestion-mode.arrangements=UPSERT|REPLACE
Defaults stay the same as before (UPSERT
for all)
Added
- Added support for loans ingestion into DBS.
- Included the ingestion of loans to BatchProductIngestionSage where productGroups are being processed.
- After related arrangements were created in Products capability the loans part is ingested to Loans.
Added
- Added Pull request body(description and checklist) validation workflow
Changed
- Upgraded Access-Control service-api from v2 to v3
Added
- Added Pull Request template for Stream contributors.
Added
- Added additions to
DebitCardItem
openapi schema.
Added
- Add support for propagating additions from the legal entity ingestion request.
Changed
- Propagate additions returned by the Product and Transaction integration Response to the Product and Transaction composition Response.
Changed
- Bugfix for putAssignUserPermissions error
Data groups cannot be duplicated in scope of a single function group during assigning permissions
Added
- Add PermissionSetApi to stream-dbs-clients for APS ingestion scenarios
Added
- Updated Product Mapper to map panSuffix to all product types
panSuffix
to number
Added
- Adds
bankBranchCode
field to TermDeposit
openapi schema
Added
- Adds
bankBranchCode
field to term-deposits.json
events
Added
- Support for creating data group of type
CUSTOM
.
Changed
- Upgraded SSDK to 15.2.0
- Upgraded Banking Services to 2023.02-LTS
- Fix some breaking changes introduced by 2023.02-LTS
Changed
- Updated stream
InvestmentAccount
schema to include accountHolderNames
,accountHolderCountry
,BIC
Changed
- Updated stream
portfolio.yaml
schema to include arrangementId
. from 2023.03 it’s mandatory for portfolio
Changed
- A fix for when zipkin is enabled preventing the boostrap tasks to stop running.
Added
- Added ‘Update arrangement’ functionality (new dedicated endpoint: /service-api/v2/ingest/arrangement/pull and
/service-api/v2/ingest/arrangement/push).
Added
- Skipping product ingestion for legal entities without products
Changed
- Updated stream
product-catalog/openapi.yaml
schema to include accountHolderName
Added
- Included property to override the validation of atomic batch responses coming from DBS: When a single item is not successful in the batch response it fails the entire saga.
Keeping validation enabled for backwards compatibility:
backbase.stream.dbs.batch.validate-atomic-response=true
.
- Enhancing logs for legal entity composition subsidiaries processing.
- Updating the e2e tests images version.
Added
- Included support to chain products to all subsidiaries when using legal entity composition.
Disabled by default for compatibility reasons:
backbase.stream.compositions.legal-entity.chains.include-subsidiaries=false
- Adjusting default services ports to 8080 to avoid misconfiguration when compositions services are invoking sagas:
backbase.communication.http.default-service-port=8080
Fixed
- Fix portfolio not to stop processing on error
Changed
- Updated stream
instrument.yaml
schema to include iconUrl
Added
- Fixed
currentInvestment
mapping to currentInvestmentValue
for InvestmentAccount.
Added
- Add the population of optional user additions to the service used by user ingestion in identity integration mode.
User additions are result of data extension to the OOTB user manager service.
Added
- Fixed current investment field mapping for the InvestmentAccount
Added
- Adds new parameter
source
to ProductIngestPullRequest
, ProductIngestPushRequest
& ProductIngestResponse
.
source
field can be useful to understand from where this ingestion process was triggered & can be useful in many ways to identify the source of the request.
- Adds different products to
ProductCompletedEvent
. I.e Loan, Term Deposit, Credit Card & Current Account on top of Savings Account.
- Adds
source
field to ProductCompletedEvent
& populate it with value sent from the request.
- Adds key fields relate to User ID, Legal Entity ID & Service Agreement ID to
ProductCompletedEvent
& populate it from the ProductIngestPullRequest
for the ingestion mode Pull.
- These fields are
userExternalId
, userInternalId
, legalEntityExternalId
, legalEntityInternalId
, serviceAgreementExternalId
, serviceAgreementInternalId
.
- These can be useful on event handler side to identify user & service agreement for which this ingestion was triggered.
- Pass
additions
from ProductIngestPullRequest
to ProductIngestResponse
& then to ProductCompletedEvent
which can be useful to pass any extra information from request & can be captured on event handler.
Added
- Additional groups added as attribute to User model and will be passed to legal-entity-integration service within Legal Entity Saga execution
Added
- Added MySQL Dependency to fix cursor execution in local env
- Added local profile for Approval Task
- Fixed cursor port number
- Set payment order composition config to false
Added
- Added ingestion mode config for product-composition-service
Changed
- Upgraded to SSDK 15.1.0 (pinned spring-cloud-kubernetes version to 2.1.13)
- Upgraded to Banking Services 2022.10.3
Changed
- Adding null checks for ingesting legal entity, service agreement and arrangements with no users - User pre enrolment scenario.
Added
- Add portfolio-http
- Add
POST /portfolios/regions/batch
endpoint to portfolio
- Add
POST /portfolios/asset-classes/batch
endpoint to portfolio
- Add
POST /portfolios/batch
endpoint to portfolio
- Add
POST /portfolios/sub-portfolios/batch
endpoint to portfolio
- Add
POST /portfolios/allocations/batch
endpoint to portfolio
- Add
POST /portfolios/valuations/batch
endpoint to portfolio
- Add
POST /portfolios/transaction-categories/batch
endpoint to portfolio
- Add
POST /portfolios/instruments/batch
endpoint to portfolio
- Add
POST /portfolios/hierarchies/batch
endpoint to portfolio
- Add
POST /portfolios/positions/batch
endpoint to portfolio
- Add
POST /portfolios/transactions/batch
endpoint to portfolio
Changed
- Cherry-picking fixes from 3.7.1 for stream composition payment order mapping.
Added
- Adding ReDoc documentation for Stream Compositions APIs
Changed
- Replaced BatchProductGroupTask.IngestionMode with more flexible BatchProductIngestionMode class.
New class keeps ingestion modes separately for each main resource involved in BatchProductIngestionSaga processing:
function groups, data groups and arrangements. Two preset modes have been created: BatchProductIngestionMode.UPSERT and
BatchProductIngestionMode.REPLACE (equivalents of previous UPDATE and REPLACE, respectively), but new ones can be
composed of any “sub modes” combination.
Changed
- Adjusting property
backbase.stream.client.headers-to-forward
to take precedence over backbase.stream.client.additional-headers
.
- Fixing Identity m10y configuration on e2e-tests with properly separated realms.
Added
- Zip layout to composition services. This allows the addition of external jars to the classpath using
loader.path
property.
- Fix memory leak with UnitOfWorkExecutor
Added
- End-to-end tests for the Bootstrap Task
Changed
Adding SSDK service discovery mechanism to the Stream Task and Http applications.
All the service url properties prefixed by backbase.stream.dbs.*
and backbase.stream.identity.*
are now removed
and replaced by the service discovery mechanism of your choice, where the Banking Services will be discovered automatically.
Using Eureka/Registry (Enabled by default):
eureka.client.serviceUrl.defaultZone=http://registry:8080/eureka
eureka.instance.non-secure-port=8080
Using Kubernetes:
eureka.client.enabled=false
spring.cloud.kubernetes.enabled=true
If you don’t want to user a service discovery mechanism, the following configuration below needs to be replaced. e.g.
backbase:
stream:
dbs:
access-control-base-url: http://non-discoverable-host:8080/access-control
identity:
identity-integration-base-url: http://non-discoverable-host:8080/identity-integration-service
Similar behaviour can be achieved with:
eureka:
client:
enabled: false
spring:
cloud:
discovery:
client:
simple:
instances:
access-control:
- uri: http://non-discoverable-host:8080
metadata:
contextPath: /access-control
identity-integration-service:
- uri: http://non-discoverable-host:8080
metadata:
contextPath: /identity-integration-service
Heads Up!: The Stream Composition services still don’t support client load balancing, hence service discovery isn’t available for the moment then you can’t configure the spring cloud discovery simple instances. In the scenario where your service don’t support, or you want to disable client side load balancers (e.g. spring.cloud.loadbalancer.enabled=false
), you can override the default DBS services addresses using the direct-uri
property. e.g.
backbase.communication.services.access-control.direct-uri=http://non-discoverable-host:8080/access-control
backbase.communication.services.identity.integration.direct-uri=http://non-discoverable-host:8080/identity-integration-service
All configuration properties prefixes can be found at stream-dbs-clients module, and they are compliant to SSDK configuration properties.
Fixed
- Added InterestDetails to BaseProduct
Changed
- Upgraded to SSDK 15.0.1
- Upgraded to Java 17
- Creating the
stream-bootstrap-task
for deployment of boostrap task Jobs on Kubernetes.
Added
- Add support for Entitlement Wizard Metadata.
Added
- Added support for push ingestion mode for product and transactions
Added
- Enable Multi architecture docker images: arm64 and amd64
Changed
- Tech Debt: Make portfolio saga idempotent #172
Changed
Added
Fixed
- Added qualifier for WebClient in ContactsServiceConfiguration.
Fixed
- Custom Job Role Mapping Issue is fixed by adding missing mapping of BusinessFunction object of BusinessFunctionGroupMapper class
Added
- Deploying task executables and http services as docker images using
repo.backbase.com/backbase-stream-images
registry.
e.g. repo.backbase.com/backbase-stream-images/legal-entity-bootstrap-task:2.85.0
Fixed
- Logging configuration was broken in some modules given wrong dependency scope for
stream-test-support
.
Changed
- Segregating
moustache-bank
profile in moustache-bank-subsidiaries
to support ingesting the root legal entity without any dependency on product service.
Added
[2.82.0]
Fixed
- Adding fallback to default settings for services endpoints.
[2.81.0]
Fixed
- 176: Update Job Role does not consider the 207 multi-status response
[2.80.0]
Added
- Support for creating data group of type
REPOSITORIES
.
```yaml
referenceJobRoles:
- name: Custom Engagement Template Viewer
description: View Custom Engagement Default Templates
functionGroups:
- name: Custom Engagement Template Viewer
functions:
- functionId: ‘1100’
name: Manage Content
privileges:
- privilege: view
productGroups:
- name: Repository_Group_Template_Custom
description: Repository group that provides view access to the repository where custom engagement default templates are stored
productGroupType: REPOSITORIES
customDataGroupItems:
- internalId: template-custom
users:
- user:
externalId: emp-john
fullName: John Doe
referenceJobRoleNames:
- Custom Engagement Template Viewer
```
[2.78.0]
Added
[2.76.0]
Added
- Support for LE limits
name: Bory Breweries Ltd
legalEntityType: CUSTOMER
limit:
currencyCode: USD
transactional: 10000
daily: 250000
weekly: 500000
monthly: 2000000
quarterly: 600000
yearly: 1200000
- Support for SA limits
name: Bory Breweries Ltd
legalEntityType: CUSTOMER
masterServiceAgreement:
limit:
currencyCode: USD
transactional: 10000
daily: 250000
weekly: 500000
monthly: 2000000
quarterly: 600000
yearly: 1200000
- Support for LE in SA limits
```yaml
name: Bory Breweries Ltd
legalEntityType: CUSTOMER
masterServiceAgreement:
participants:
- externalId: bory-brew-ltd
limit:
currencyCode: USD
transactional: 10000
daily: 250000
weekly: 500000
monthly: 2000000
quarterly: 600000
yearly: 1200000
yaml
name: Bory Breweries Ltd
legalEntityType: CUSTOMER
customServiceAgreement:
participants:
- externalId: bory-brew-ltd
limit:
currencyCode: USD
transactional: 10000
daily: 250000
weekly: 500000
monthly: 2000000
quarterly: 600000
yearly: 1200000
```
- Support for Job role limits
```yaml
jobRoles:
- name: Custom Accounts and Payments
description: Custom Accounts and Payments
functionGroups:
- name: Products, payments, txn, contacts, actions, user profile, devices
functions:
- functionId: ‘1017’
name: US Domestic Wire
privileges:
- privilege: create
supportsLimit: true
limit:
currencyCode: USD
daily: 100000
weekly: 400000
transactional: 10000
yaml
referenceJobRoles:
- name: admin
description: Admin
functionGroups:
- name: admin
functions:
- functionId: ‘1017’
name: US Domestic Wire
privileges:
- privilege: create
supportsLimit: true
limit:
currencyCode: USD
daily: 100000
weekly: 400000
transactional: 10000
```
- Support for User Job role limits
```yaml
referenceJobRoles:
- name: Domestic Payments
description: Domestic Payments
functionGroups:
- name: Products, payments, txn, contacts, actions, user profile, devices
functions:
- functionId: ‘1017’
name: US Domestic Wire
privileges:
- privilege: approve
limit:
currencyCode: USD
transactional: 15000
productGroups:
- internalId: bblicdag1
name: My business salary account
description: The account of my business I use for salary payments
users:
- user:
externalId: hhsa01
fullName: Henk Hurry
supportsLimit: true
referenceJobRoleNames:
Clean up of many old components and replaced Stream SDK with Service SDK 14
By moving to Service SDK, pipelines can now be configured like any other Backbase service using the Service SDK
Migrate your CICD pipelines to the Service SDK standards
Removed
- Old Legal Entity Open API definitions
- Stream Transactions Open API Spec
- Removed Spring Cloud Data Flow components as nobody uses it
- Stream Cursor Source
- Legal Entity Sink
- Product Sink
- Transactions Sink
- Transactions HTTP
- Removed Stream SDK Starters
stream-aio-starter-parent
(replaced by service-sdk-core-starter
)
stream-batch-starter-parent
(replaced by service-sdk-starter-core
+ spring-boot-starter-batch
)
stream-generated-client-starter-parent
stream-processor-starter-parent
stream-sdk-starter-core
(replaced by service-sdk-starter-core
)
stream-sink-starter-parent
stream-source-starter-parent
- Removed
stream-dbs-web-client
(replaced by service-sdk-web-client
)
- The OAuth2 client (provider and registration) initially defined as
dbs
is now called bb
, hence the token converter configuration should to be updated (e.g. spring.security.oauth2.client.provider.bb.token-uri=http://token-converter:8080/oauth/token
).
Changed
- Replaced Stream SDK with Service SDK 14.1.0.
- Upgrade Spring Boot 2.6.6
[2.74.0]
Fixed
- Fix allowing empty product-groups to be created.
[2.73.0]
Fixed
- Fix to add an arrangement in more than one product group
[2.72.0]
Changed
- Update Spring Boot to 2.5.14
- Update Swagger Core to 2.2.0
- Update bcprov-jdk15on to 1.70
[2.71.0]
Added
- Support for updating Legal Entity data (name and additional fields)
- Support for updating User data
Fixed
- Fix for issue https://github.com/Backbase/stream-services/issues/138
[2.71.0]
Changed
- Upgraded to DBS 2022.04
- Upgrade Spring Boot to 2.15.13
[2.69.0]
Added
- Ability to configure what Function Group type needs to be deleted. This can be configured through
backbase.stream.deletion.functionGroupItemType
. With values NONE
(default) or TEMPLATE
.
Fixed
- When deleting a legal entity, it now will iterate over all found users to be deleted.
[2.68.0]
Added
- Added debitCards to Savings Account in LegalEntity spec.
[2.67.0]
Added
- Added cardDetails to Credit Card in LegalEntity spec.
[2.66.0]
Changed
- Order of product group stream task processing within legal entity saga is changed to sequential. This is due to the fact that in some
circumstances user permissions update loosing previously assigned permissions during ingestion process (due to the nature of reactive processing)
Fixed
- Additional headers propagation to several calls within legal entity saga
[2.65.2]
Changed
[2.65.1]
Changed
- Administrative changes: Updating documentation and cleaning specs.
[2.65.0]
Added
- Additional realm roles added as attribute to User model and will be passed to legal-entity-integration service within Legal Entity Saga execution
Fixed
- JUnit and Hibernate Validator dependency update to address security vulnerabilities.
Fixed
- Legal Entity Saga: linkLegalEntityToRealm method executed multiple times ( when multiple users are ingested):
unique constraint (PK_LE_ASSIGN_REALM) violated
Fixed
- Legal Entity Saga: referenceJobRoleNames are mixed up between users ( when multiple users are ingested)
Removed
- Audit Core & Http Service. Created as a demo, never to be used.
- Erroneous log message removed when assigning permissiosn without datagroups which is not an exception anymore.
Changed
- UserService
- Failed operations in User Service now generally return StreamTaskExceptions allowing for better control and handling of failures.
- Stream Task
- Added last error message for easier logging down stream
- LIngesting a Flux of Customers / Transaction will not cause a thread mayhem and can be controlled through configuration. For Legal Entity Http Serivce, set the
backbase.stream.legalentity.sink.task-executors
property to control. When processing a Flux of Legal Entities, provide the concurrency parameter when invoking the com.backbase.stream.LegalEntitySaga.executeTask
method. For example :
Flux<LegalEntity> flux = legalEntity
.map(LegalEntityTask::new)
.flatMap(legalEntitySaga::executeTask, legalEntitySagaConfiguration.getTaskExecutors())
.map(LegalEntityTask::getData)
.doOnNext(actual -> log.info("Finished Ingestion of Legal Entity: {}", actual.getExternalId()));
Maintenance
- Update to 2021.10
- Update Spring Boot to 2.5.5
- Update Spring Cloud to 2020.0.4
- Aligned versions across project
Changed
- Update to
2021.09
release (DBS 2.21.2
and Identity 1.9.2
)
- Optional parameter (
xTransactionsServiceAgreementId
) added to TransactionPresentationServiceApi.postTransactions.
- Optional parameter (
xTransactionsServiceAgreementId
) added to TransactionPresentationServiceApi.getTransactions.
- Optional parameter (
xTransactionsServiceAgreementId
) added to TransactionPresentationServiceApi.patchTransactions.
- Optional parameter (
xTransactionsServiceAgreementId
) added to TransactionPresentationServiceApi.postDelete.
- Optional parameter (
xTransactionsServiceAgreementId
) added to TransactionPresentationServiceApi.postRefresh.
Maintenance
- Updated boat-maven-plugin to
0.15.0
Added
- Added support for json logging via logstash-logback-encoder. (could be replaced by service-sdk-starter-logging later on)
In order to have logging in json format it’s possible to provide logback.xml config from the external app
via jvm option
-Dlogging.config=file:logback.xml
or specify in the application.yml
like logging.config=file:logback.xml
Changed
- Added support for Spring Configuration Server in Tasks and Batch starters
- Added support for Distributed Tracing (sleuth, micrometer) in Task and Batch starters
- Improved exception management on Identity operations
- Fixed Spring Cloud Function definition in Transactions Sink
Changed
- Non existing Business function groups from the request should be persisted.
Changed
- Setting consistent DBS default values for access control token used by delete operations.
Fixed
- Fix for issue https://github.com/Backbase/stream-services/issues/74 : Reference Job Roles updated in LegalEntitySaga
with empty functions.
- Exclude old snakeyaml dependency
- UserService: improved Exception management
Added
- SCDF plugin to Transactions Sink
- Functional programming for Transaction Sink
Fixed
- Legal Entity Saga
- Errors happening in the user profile manager must now correctly be dealt with.
- Ensure reactive immutability on user service operations.
Changed
- Use backbase bom pom instead of banking-service and identity boms
- Update to 2021.07 release (DBS 2.21.0 and Identity 1.9.0)
- Optional parameter (
includeSubscriptions
) added to ArrangementsApi.getArrangementById.
- Optional parameter (
xTransactionsUserId
) added to TransactionPresentationServiceApi.postTransactions.
- Optional parameter (
xTransactionsUserId
) added to TransactionPresentationServiceApi.getTransactions.
- Optional parameter (
xTransactionsUserId
) added to TransactionPresentationServiceApi.patchTransactions.
- Optional parameter (
xTransactionsUserId
) added to TransactionPresentationServiceApi.postDelete.
- Optional parameter (
xTransactionsUserId
) added to TransactionPresentationServiceApi.postRefresh.
Maintenance
- Upgrade Spring Boot 2.5.3
Maintenance
- Cleaned up versions for boat-maven-plugin
- Added spring-boot-configuration-processors to modules that have configuration classes
- Moved Product Catalog Model to own package to prevent deep transitive dependencies
- Removed scdf-maven-plugin. This is now a configuration per project if required
Fixed
- bugfix NPE for AccessGroupService.getUpdatePermissions
Fixed
- Permissions assignment for user marked as admin was working incorrectly due to fact that System Function Group was returned when no assigned groups expected
Changed
- Add filter to forward
X-TID
headers
Fixed
- Fix upserting existing Business function
Note: The field name
is mandatory for the object function
is required for the update - alongside the functionId
.
e.g.
jobRoles:
- name: SUUS
description: Manager of the online helpdesk and processing teams, able to set up/edit contracts, add accounts etc. Also able to set up Broadcast messages
functionGroups:
- name: Manage Product Summary
functions:
- functionId: 1006
name: Product Summary
privileges:
- privilege: view
- privilege: create
- privilege: edit
Changed
- For access-control-core exclusion of system function group was added in order to avoid DB constraint triggering during permissions PUT
Fixed
- For legal-entity-bootstrap-task fix case when link le to realm task could end the flow because empty returned instead of chaining stream task
Added
- For legal-entity-bootstrap-task, in case of no users/administrators is specified and identity integration enabled, provided realm will be created (if not exists) and linked to legal entity
Removed
- Spring Config Server. Superseded by standardized Spring Kubernetes Configuration
Upgraded
- Spring Boot from 2.3.3.RELEASE to 2.5.0
- Spring Cloud 2020.0.2
Added
- Included a new approvals saga implemented by the Approvals Bootstrap Task.
Please be aware that this saga is not idempotent due to some product limitations.
Mor information in the wiki page
an example on how to configure it is found below
bootstrap:
approvals:
- name: 4 eye approval policy
approvalTypes:
- name: Supervisor
description: Supervisor approval level
rank: 1
- name: HelpDesk
description: Digital helpdesk and Operations User
rank: 2
policies:
- name: 4 eye policy
description: Policy that requires approval from supervisor
logicalItems:
- rank: 1
items:
- approvalTypeName: Supervisor
numberOfApprovals: 1
- rank: 2
operator: OR
items:
- approvalTypeName: HelpDesk
numberOfApprovals: 2
policyAssignments:
- externalServiceAgreementId: sa_backbase-bank
policyAssignmentItems:
- functions:
- Assign Permissions
bounds:
- policyName: 4 eye policy
- functions:
- Manage Data Groups
bounds:
- policyName: 4 eye policy
approvalTypeAssignments:
- approvalTypeName: Supervisor
jobProfileName: SUUS
- approvalTypeName: HelpDesk
jobProfileName: Digital helpdesk and Operations User
Added
- Add ‘build-helper-maven-plugin’ for adding the generated sources (i.e. Openapi) as project’s source directories.
Added
- added lock identity user on creation flag.
New conditionally mandatory property added in legal entity stream: backbase.stream.identity.identity-integration-base-url
to indicate BackBase Identity base URL for clients that integrate with it. This property must be defined when: backbase.stream.legalentity.sink.use-identity-integration=true
Changed
- Fixing the function group delete to only happen when it is not template type (this is when using referenceJobRoles )
Changed
- Fixing NullPointerException while creating data group using products i.e. without custom data group id
Changed
- Checking the response recieved from Legal entity api , user api to is2xxSuccessful as it returns 207 response for success.
Changed
- Add “Custom Data Group Items” to Product Groups, require either Products or Custom Data Group Items (previously just Products)
Fixed
- Fix for issue https://github.com/Backbase/stream-services/issues/46
While deleting a legal entity , we are trying to get user information by sending an internal id to
service-api/v2/users/externalids/{externlaIId}?skipHierarchyCheck=true instead of /service-api/v2/users/{internalId}.
The service-api/v2/users/externalids/{externlaIId}?skipHierarchyCheck=true returns 404 user not found as it is an internal ID and the deleting of the user fails.
Changed
- Fix for null point exception when no users are informed during the legal entity bootstrap.
- Enhancements in utility for aggregating all products of a product group.
- Enhanced the documentation for Service Agreements endpoints.
Added
- Included possibility to use Custom Service Agreements. From now on, if a custom service agreement is declared, and a master service agreement is not explicitly declared, that legal entity will have a custom service agreement only. If none are declared a default master service agreement is created. e.g.:
bootstrap:
legalEntity:
name: "Backbase Bank"
realmName: "backbase"
externalId: "backbase-bank"
legalEntityType: "BANK"
customServiceAgreement:
name: "backbase-bank"
description: "backbase bank custom service agreement"
externalId: "sa_backbase-bank"
jobRoles:
- name: SUUS
description: Manager of the online helpdesk and processing teams, able to set up/edit contracts, add accounts etc. Also able to set up Broadcast messages
functionGroups:
- name: "Manage Entitlements"
functions:
- functionId: "1019"
functionCode: "manage.data.groups"
privileges:
- privilege: "view"
- privilege: "create"
- privilege: "edit"
- privilege: "delete"
- privilege: "approve"
- Created Service Agreement endpoint do updated an existing service agreement. e.g. add more participants to it.
- PUT /service-agreement
- PUT /async/service-agreement
- GET /async/service-agreement/{unitOfWorkId}
Fixed
- Add missing mapping for
accountHolderNames
in Product Ingestion SAGA
Changed
- Replace DBS RAML specs (converted to OpenAPI with BOAT) to OOB OpenAPI specs for DBS 2.20.0
- Fix all the mismatches and changes for generated code from new specs
- Upgrade jib base image to distroless java 11
- Upgrade to BOAT 0.14.0
- Wrong commit that was reverted later
Fixed
- Add missing ‘User’ schema to the ‘additions’ transformer in DBS clients
Fixed
- Make
upsertArrangements(ProductGroupTask streamTask)
in ProductIngestionSaga
public
Changed
- Including user preferences in arrangements data
Changed
- Upgrade plugins
maven-surefire-plugin
and maven-failsafe-plugin
Fixed
- Fix for issue Product Catalog creation fails when either kinds or types are nullCLOSED (Product Catalog null pointer when either kinds or types are null)
- Fix for issue Dependency conflict for org.yaml.snakeyamlCLOSED (dependency conflicts)
- Fix for null pointer in UserProfileMapper when additional emails/phones are null
Fixed
- Fix in pipelines (Github Actions) and compile with JDK 11
Added
- Added UserProfile support (for DBS service user-profile-manager) in Legal Entity SAGA.
It’s disabled by default and can be enabled by setting flag backbase.stream.legalentity.sink.userProfileEnabled to true.
It’s implemented as a nested object under User model, and it will use some of its properties (like fullName, email and phoneNumber) when constructing the UserProfile DBS resource.
It performs an upsert so it supports both creation and update.
Example:
- user:
externalId: sara
fullName: Sara Jones
identityLinkStrategy: CREATE_IN_IDENTITY
emailAddress:
address: [email protected]
mobileNumber:
number: '1234567890'
userProfile:
title: Miss
personalInformation:
gender: female
dateOfBirth: '1995-12-30'
countryOfBirth: Netherlands
locale: nl-NL
additionalEmails:
- value: [email protected]
- value: [email protected]
additionalPhoneNumbers:
- value: '012121212'
- value: '01313713'
addresses:
- streetAddress: Fake Street 123
locality: Utrecht
country: Netherlands
type: home
primary: 'true'
Fixed
- Fixed implementation of Reference Job Roles where we can assign a list of reference job roles to a specific user.
- Example with legal-entity-bootstrap-task on how to create a Reference Job Role in the root legal entity and assign it to a user below the hierarchy (example with a subsidiary):
```yaml
bootstrap:
legalEntity:
name: “Backbase Bank”
realmName: “backbase”
externalId: “backbase-bank”
legalEntityType: “BANK”
referenceJobRoles:
- name: “Entitlements - Manager”
description: “Full Entitlements administration.”
functionGroups:
- name: “Manage Entitlements”
functions:
- functionId: “1019”
functionCode: “manage.data.groups”
privileges:
- privilege: “view”
- privilege: “create”
- privilege: “edit”
- privilege: “delete”
- privilege: “approve”
- functionId: “1020”
functionCode: “manage.function.groups”
privileges:
- privilege: “view”
- privilege: “create”
- privilege: “edit”
- privilege: “delete”
- privilege: “approve”
administrators:
- externalId: “bbadmin”
fullname: “Backbase Root Admin”
identityLinkStrategy: “CREATE_IN_IDENTITY”
emailAddress:
address: “[email protected]”
mobileNumber:
number: “1234567890”
users:
- user:
externalId: “bbadmin”
referenceJobRoleNames:
- “Entitlements - Manager”
subsidiaries:
- name: “Backbase Subsidiary”
realmName: “backbase”
externalId: “backbase-sub”
legalEntityType: “BANK”
administrators:
- externalId: “bbsubadmin”
fullname: “Backbase Subsidiary Admin”
identityLinkStrategy: “CREATE_IN_IDENTITY”
emailAddress:
address: “[email protected]”
mobileNumber:
number: “1234567890”
users:
- user:
externalId: “bbsubadmin”
referenceJobRoleNames:
- “Entitlements - Manager”
```
Fixed
- Fix ingestion of arrangements with child/parent relation by ordering and sequencing DBS requests
Added
- Add debit and credit indicator for CustomProduct
Added
- Enabling Sleuth trace ids to be propagated to the api response headers
Added
- Packaging the Saga’s OpenAPI specs in a zip module:
```xml
com.backbase.stream
stream-models
2.11.0
specs
zip
## [2.10.0]
### Fixed
- Fixed object mapper to not serialize null values
- BUGFIX: Product Ingestion Saga was replacing all permissions assigned to users and adding new ones, now they are merged: #14
### Changed
- Upgraded Spring Boot to the version in SSDK
- Upgraded BOAT and renamed lots of generated API operationIds that now make more sense (most of them)
### Added
- Added lots and more sensible logging and pretty-printing functions to keep track on what's happening
## [2.9.0]
### Changed
- The master service agreement now can be manipulated during the creation of the Legal Entity, so we can add Assignable Permission Sets to it.
## [2.8.0]
### Added
- Added BBAN to TermDeposit in LegalEntity spec
## [2.7.0]
### Fixed
- Fixed configuration for Loan Mapping
## [2.6.0]
### Added
- DBS 2.19 support
- DBS Lean Services
- Included spring configuration properties support
### Removed
- Removal of MongoDB dependencies
### Changed
- Removing Job Profile Templates
- Upgrade Spring Boot to 2.3.x
- Stream SDK part of Stream Services repository
- DBS Clients generated with Boat
- DBS Endpoints changed, defaults are now set to the defaults setup in Kubernetes.
* Before:
```yaml
spring:
security:
oauth2:
client:
provider:
dbs:
token-uri: https://stream-demo.proto.backbasecloud.com/api/token-converter/oauth/token
backbase:
stream:
dbs:
access-control-pandp-base-url: https://stream-api.proto.backbasecloud.com/accesscontrol-pandp-service/service-api/v2
access-group-presentation-base-url: https://stream-api.proto.backbasecloud.com/accessgroup-presentation-service/service-api/v2
account-presentation-base-url: https://stream-api.proto.backbasecloud.com/account-presentation-service/service-api/v2
legal-entity-presentation-base-url: https://stream-api.proto.backbasecloud.com/legalentity-presentation-service/service-api/v2
user-presentation-base-url: https://stream-api.proto.backbasecloud.com/user-presentation-service/service-api/v2
transaction-presentation-base-url: https://stream-api.proto.backbasecloud.com/transaction-presentation-service/service-api/v2
- After:
spring:
security:
oauth2:
client:
provider:
dbs:
token-uri: http://token-converter:8080/oauth/token
backbase:
stream:
dbs:
user-manager-base-url: http://user-manager:8080
access-control-base-url: http://access-control:8080
arrangement-manager-base-url: http://arrangement-manager:8080
transaction-manager-base-url: http://transaction-manager:8080
limit-manager-base-url: http://limits-manager:8080