Giter Club home page Giter Club logo

bb-fuel's People

Contributors

aleksanderobb avatar andriybackbase avatar bear8yte avatar cansutoprak avatar danielavelinovska avatar darynabackbase avatar denyso-bb avatar dependabot[bot] avatar dvelinovska avatar eliasnogueira avatar goutama avatar kfolwarczny avatar kwoding avatar maephisto666 avatar maithree113 avatar marcelheemskerk avatar maryna-bb avatar mikhailchurakov avatar oleksandribb avatar polarfish avatar pranjaldayama avatar pranjalgaud avatar r-l-davies avatar richard-blank avatar sianw avatar sjaakball avatar vinibackbase avatar viveksyadav avatar wendybackbase avatar ytsygakova avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bb-fuel's Issues

Healthcheck using wrong endpoints

The /actuator/health endpoint is used when -Dhealthcheck.timeout.in.minutes=10 -Dhealthcheck.use.actuator=true

It's calling the wrong endpoint. The called URL has either /client-api or /integration-api in it's path. It should be e.g. /api/access-control/actuator/health and not /api/access-control/client-api/actuator/health

Creation of BaaS spring profile

Based on the infra setup we have application-k8s.yml, application-k8s-beta.yml, etc. These files (i.e. spring profiles) represent different combinations of URLs when dealing with different setups (i.e. lean/triangular, etc.).

The typical pattern for the URLs is the following

...
approvals: http://approvals.${environment.name}.${environment.domain}/integration-api
arrangements: http://arrangement.${environment.name}.${environment.domain}/integration-api
...

On BaaS, since as of September 2020 we have ONE gateway giving you access to multiple services, the suggested way of dealing with such URLs would be

...
approvals: https://app.${environment.name}.${environment.domain}/approvals/integration-api
arrangements: https://app.${environment.name}.${environment.domain}/arrangement/integration-api
...

As you can see the name of the service/capability is not part of the domain but of the context path.

My proposal is to create a new profile that would represent a good base for the typical BaaS setup.

Support ingesting data for environments with Identity

Create lean environment with Identity Enabled.
Add following paramters:
INGEST_ACCESS_CONTROL
INGEST_CUSTOM_SERVICE_AGREEMENTS
INGEST_TRANSACTIONS
INGEST_APPROVALS_FOR_PAYMENTS
INGEST_PAYMENTS
IDENTITY_FEATURE_TOGGLE : Enable

and build.

The build always fails with following error :

Request method: POST Request URI: http://edge.9455.dbs.backbase.test/api/accessgroup-presentation-service/client-api/v2/accessgroups/usercontext?_csrf Proxy: <none> Request params: <none> Query params: _csrf Form params: <none> Path params: <none> Headers: Accept=*/* Content-Type=application/json; charset=UTF-8 Cookies: Authorization=eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJoWHhHQm9SNUtSdW0ybFhNcnRaUGFxNF9GRWNISnBpM0dFS0pnd21pbWRBIn0.eyJleHAiOjE1OTMxNjg4MzUsImlhdCI6MTU5MzE2ODUzNSwianRpIjoiNmRhYmMyZTEtYTNkYS00OWY2LTljODgtZTJjNTc5OTIxMmQ4IiwiaXNzIjoiaHR0cDovL2lkZW50aXR5Ljk0NTUuZGJzLmJhY2tiYXNlLnRlc3QvYXV0aC9yZWFsbXMvYmFja2Jhc2UiLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiNjYyOWRhNmQtMzY5Zi00OWEzLTgzZDAtMmFlOGJkNzZkZTRiIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiYmItdG9vbGluZy1jbGllbnQiLCJzZXNzaW9uX3N0YXRlIjoiYTU4ZWZlZmEtNTMwOS00ZDhkLTliODctNjJjM2VjMzJiNDFmIiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyIqIl0sInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJST0xFX0FDVFVBVE9SIiwiUk9MRV9BRE1JTiIsIlJPTEVfZ3JvdXBfYWRtaW4oQURNSU4pIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnsiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwidXNlcl9uYW1lIjoiYWRtaW4iLCJuYW1lIjoiQWRtaW4gdXNlciBhZG1pbmlzdHJhdG9yIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiYWRtaW4iLCJnaXZlbl9uYW1lIjoiQWRtaW4gdXNlciIsImZhbWlseV9uYW1lIjoiYWRtaW5pc3RyYXRvciIsImF1dGhvcml0aWVzIjpbIlJPTEVfQUNUVUFUT1IiLCJST0xFX0FETUlOIiwiUk9MRV9ncm91cF9hZG1pbihBRE1JTikiXX0.aRh_SpPDKndkUvRHcjHulUT-C9IO2gPzPha1oU2OtWoCi5xegYNvcde9QwATZYeQtAa9_dfHUP6qV6u7Y2K3_8IdCvI2EHCGzqV-enn-kf86S8I6HDte198Ln09CzL0GK2AuxsH-RhYPaANgrk9gX-cBh7BTMkEmNWIUfVe718O2Rk94GZiOWdYpUHUqmRlN-jcwcd2gOJVv9sXmoV6WphLVS8WQZPojsElMzUrDefmQ1hl3eq2CKblV4ePL3DaeUF9G7EzKi7mTU6zUyS-KvZUKYQKcP8aHAPdkk0y_B_clYltpfx_TLRGbDVVn1XdVfcXQmKK_OlQT1xcgU055SA KEYCLOAK_LOCALE= KC_RESTART= Multiparts: <none> Body: { "serviceAgreementId": "8a49b7eb72f0329e0172f03e337f0001" } HTTP/1.1 403 Forbidden Server: nginx/1.17.8 Date: Fri, 26 Jun 2020 10:48:57 GMT Content-Type: application/json Transfer-Encoding: chunked Connection: keep-alive Vary: Accept-Encoding X-Xss-Protection: 1 ; mode=block Strict-Transport-Security: max-age=31536000; includeSubDomains X-Frame-Options: SAMEORIGIN X-Content-Type-Options: nosniff Referrer-Policy: no-referrer X-Download-Options: noopen X-Permitted-Cross-Domain-Policies: none X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Set-Cookie: XSRF-TOKEN=f6d5d91f-3596-46ab-b4b1-6d4fec006f62; Path=/ Content-Encoding: gzip { "timestamp": "2020-06-26T10:48:57.869+0000", "status": 403, "error": "Forbidden", "message": "Forbidden", "path": "/client-api/v2/accessgroups/usercontext" } 2020-06-26 12:48:57.948 ERROR [bb-fuel,,,] 24801 --- [ main] o.s.boot.SpringApplication : Application run failed java.lang.AssertionError: 1 expectation failed. Expected status code <204> but was <403>.

No matching business function for P2P Transfer

The problem

When the bb-fuel tries to ingest the P2P Transfer business function an exception is thrown

java.lang.IllegalStateException: Failed to execute ApplicationRunner
Caused by: java.lang.IllegalArgumentException: No matching business function for P2P Transfer
	at com.backbase.ct.bbfuel.data.AccessGroupsDataGenerator.lambda$detectBusinessFunction$2(AccessGroupsDataGenerator.java:54)

Full stack trace

java.lang.IllegalStateException: Failed to execute ApplicationRunner
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:778)
	at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:765)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:322)
	at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:140)
	at com.backbase.ct.bbfuel.BbFuelApplication.main(BbFuelApplication.java:20)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
	at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52)
Caused by: java.lang.IllegalArgumentException: No matching business function for P2P Transfer
	at com.backbase.ct.bbfuel.data.AccessGroupsDataGenerator.lambda$detectBusinessFunction$2(AccessGroupsDataGenerator.java:54)
	at java.util.Optional.orElseThrow(Optional.java:290)
	at com.backbase.ct.bbfuel.data.AccessGroupsDataGenerator.detectBusinessFunction(AccessGroupsDataGenerator.java:54)
	at com.backbase.ct.bbfuel.data.AccessGroupsDataGenerator.lambda$createPermissionsForJobProfile$3(AccessGroupsDataGenerator.java:62)
	at java.util.Arrays$ArrayList.forEach(Arrays.java:3880)
	at com.backbase.ct.bbfuel.data.AccessGroupsDataGenerator.createPermissionsForJobProfile(AccessGroupsDataGenerator.java:61)
	at com.backbase.ct.bbfuel.configurator.AccessGroupsConfigurator.ingestFunctionGroup(AccessGroupsConfigurator.java:57)
	at com.backbase.ct.bbfuel.setup.AccessControlSetup.lambda$ingestFunctionGroups$15(AccessControlSetup.java:303)
	at java.util.Arrays$ArrayList.forEach(Arrays.java:3880)
	at com.backbase.ct.bbfuel.setup.AccessControlSetup.ingestFunctionGroups(AccessControlSetup.java:287)
	at com.backbase.ct.bbfuel.setup.AccessControlSetup.lambda$assembleFunctionDataGroupsAndPermissions$8(AccessControlSetup.java:206)
	at java.lang.Iterable.forEach(Iterable.java:75)
	at com.backbase.ct.bbfuel.setup.AccessControlSetup.assembleFunctionDataGroupsAndPermissions(AccessControlSetup.java:199)
	at com.backbase.ct.bbfuel.setup.AccessControlSetup.setupBankWithEntitlementsAdminAndProducts(AccessControlSetup.java:156)
	at com.backbase.ct.bbfuel.setup.AccessControlSetup.initiate(AccessControlSetup.java:133)
	at com.backbase.ct.bbfuel.Runner.setupAccessControl(Runner.java:96)
	at com.backbase.ct.bbfuel.Runner.ingestEnvironment(Runner.java:83)
	at com.backbase.ct.bbfuel.Runner.doIt(Runner.java:62)
	at com.backbase.ct.bbfuel.Runner.run(Runner.java:42)
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:775)
	... 12 common frames omitted

`Failed assigning data groups to service agreement` error is logged as INFO without scripts termination

When running script any failure of assigning data groups to service agreement for specific user is not stopping execution but only INFO is logged e.g.

2023-05-08 11:24:03.604  INFO [bb-fuel,,,] 14953 --- [           main] c.b.c.b.c.PermissionsConfigurator        : Failed assigning data groups to service agreement [21ab247e-6228-4c72-8bd5-fb208cc22228], user [paddy_brian], function group [com.backbase.integration.accessgroup.rest.spec.v2.accessgroups.IntegrationIdentifier@73da92fa[idIdentifier=8a54137887fb11500187fb1aac7e005e,nameIdentifier=<null>,additions={}]], with data group ids [8a54137887fb11500187fb1aa27a0059, 8a54137887fb11500187fb1aa51e005a, 8a54137887fb11500187fb1aa725005b, 8a54137887fb11500187fb1aaa47005c, 8a54137887fb11500187fb1aa27a0059, 8a54137887fb11500187fb1aa51e005a, 8a54137887fb11500187fb1aa725005b, 8a54137887fb11500187fb1aaa47005c]
2023-05-08 11:24:03.604  INFO [bb-fuel,,,] 14953 --- [           main] c.b.c.b.c.PermissionsConfigurator        : Failed assigning data groups to service agreement [21ab247e-6228-4c72-8bd5-fb208cc22228], user [paddy_brian], function group [com.backbase.integration.accessgroup.rest.spec.v2.accessgroups.IntegrationIdentifier@75cc2981[idIdentifier=8a54137887fb11500187fb1aad48005f,nameIdentifier=<null>,additions={}]], with data group ids [8a54137887fb11500187fb1aa27a0059, 8a54137887fb11500187fb1aa51e005a, 8a54137887fb11500187fb1aa725005b, 8a54137887fb11500187fb1aaa47005c, 8a54137887fb11500187fb1aa27a0059, 8a54137887fb11500187fb1aa51e005a, 8a54137887fb11500187fb1aa725005b, 8a54137887fb11500187fb1aaa47005c]

so user is not aware that something went wrong.

If transaction signing is enabled, the creation of new payments fails

In case you are ingesting data to an environment where Transaction Signing is enabled, the creation of the payments via the POST API call will fail returning a 401 error that will consequently trigger an exception.

The body of the response in this case is something like the following

{
    "challenges": [
        {
            "challengeType": "reauth",
            "acrValues": "txn-signature-silver txn-signature-gold",
            "scope": "confirmation:826ab759-4b09-4a04-9c32-2fca4c78fa9e"
        }
    ],
    "data": {
        "payment-order-id": "8faf435f-8924-40a9-958f-bfa5ae3811fb",
        "amount": "72605.20",
        "paymentAmount": "72605.20",
        "currency": "EUR",
        "counter-party-account": "GB50HPZT11731526136460",
        "counter-party-name": "Dominique Rogahn Sr.",
        "confirmation-type": "initiate-payment"
    }
}

It would be ideal to enable the support for transaction signing via bb-fuel, enabling bb-fuel to generate the required OTP for the payments to be ingested.

Warning for edge service and failed the local dbs set up

Version:

12.1

Problem

The transaction is response is '[]' for all accounts.
There is some warnings when I run the edge service and ingest local DBS, not sure which is the one causing the issue.

Command

First error for edge service
mvn -f platform/pom.xml -pl edge package -Prun-edge
Second error for bb-fuel
sh dbs/bb-fuel/download-bb-fuel.sh java -Dspring.profiles.active=local -Denvironment.domain=backbase.eu -Dingest.access.control=true -Dingest.custom.service.agreements=false -Dingest.balance.history=false -Dingest.transactions=true -Duse.pfm.categories.for.transactions=true -Dingest.approvals.for.payments=false -Dingest.approvals.for.contacts=false -Dingest.approvals.for.notifications=false -Dingest.approvals.for.batches=false -Dingest.limits=false -Dingest.contacts=false -Dingest.notifications=false -Dingest.payments=true -Dingest.messages=false -Dingest.actions=false -Dtransactions.min=100 -Dtransactions.max=101 -Didentity.feature.toggle=true -Didentity.realm=backbase -Didentity.client=bb-tooling-client -jar bb-fuel.jar

Exception

1.When I run the edge service I got below warning:

2022-01-07 14:34:32.339 WARN [default,,,] 75112 --- [ main] ubernetesProfileEnvironmentPostProcessor : Not running inside kubernetes. 2022-01-12 11:46:26.172 WARN [default,,,] 21763 --- [ main] ubernetesProfileEnvironmentPostProcessor : Not running inside kubernetes. Skipping 'kubernetes' profile activation.
2022-01-12 11:46:27.041 WARN [edge,,,] 21763 --- [ main] c.c.c.ConfigServicePropertySourceLocator : Could not locate PropertySource: I/O error on GET request for "http://localhost:8888/edge/default": Connection refused (Connection refused); nested exception is java.net.ConnectException: Connection refused (Connection refused)
2022-01-12 11:46:29.857 WARN [edge,,,] 21763 --- [ main] o.s.security.core.userdetails.User : User.withDefaultPasswordEncoder() is considered unsafe for production and is only intended for sample applications.
2022-01-12 11:46:31.932 WARN [edge,,,] 21763 --- [ main] iguration$LoadBalancerCaffeineWarnLogger : Spring Cloud LoadBalancer is currently working with the default cache. You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.

2. After platform and cx6 is up: I got error for mvn bb:provision:

[ERROR] Could not import package '/Users/zcui/.m2/repository/com/backbase/cxp/editorial-collection/2.23.0-b21/editorial-collection-2.23.0-b21.zip'
[ERROR] I/O error on POST request for "http://localhost:8180/auth/realms/backbase/protocol/openid-connect/token": Connect to localhost:8180 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused (Connection refused); nested exception is org.apache.http.conn.HttpHostConnectException: Connect to localhost:8180 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused (Connection refused)
[ERROR] Import failed as there was at least one package that failed.
[ERROR] Terminating with status: FAILED[ERROR] Failed to execute goal com.backbase.maven.plugins:bb-maven-plugin:1.7.0:provision (default-cli) on project collection-experience-manager: Execution default-cli of goal com.backbase.maven.plugins:bb-maven-plugin:1.7.0:provision failed: java.lang.RuntimeException: Import failed as there was at least one package that failed. -> [Help 1]

3. So I skip the static service errors since it's optional for mobile service and keep follow the README until I try to ingest DBS to the environment, I got the below errors:

HTTP/1.1 500
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json
Transfer-Encoding: chunked
Date: Wed, 12 Jan 2022 20:59:01 GMT
Connection: close{
"message": "Internal Server Error"
}
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.vmplugin.v9.Java9 (jar:file:/Users/zcui/BlueFcu-Mobile/blue-12.1/service/maven/retail-banking-usa-maven/bb-fuel.jar!/BOOT-INF/lib/groovy-3.0.7.jar!/) to constructor java.lang.AssertionError(java.lang.String)
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.vmplugin.v9.Java9
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2022-01-12 15:59:01.334 ERROR [bb-fuel,,,] 30886 --- [ main] o.s.boot.SpringApplication : Application run failedjava.lang.AssertionError: null
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
..

Pasted Graphic
So I run the profiler in Android studio to check the response of transaction, both complete and uncomplete transaction return ‘[]’ an empty array.

Add the possibility to ingest data in the lean beta services

The problem

When the internal teams released the lean beta services, which means the service is not fully ready yet for the lean architecture, there's no way to ingest data when the service name change.

Possible solution

Create a new spring profile for the lean beta services, with the correct lean service names.
A file called application-k8s-beta can be created to apply this solution

Missing permissions for Batches

Context

We use bb-fuel to ingest all the testing/demo data into an environment.

The Quality Engineers uses bb-fuel to ingest data to do frontend tests during the Release Waves and it configures everything we need to do the test/checks.

Current problem

bb-fuel also ingests all the permissions for a given business function. Most of the permissions vs business function are being ingested by default and we are currently facing two problems from the Batch Payments perspective:

Batch - SEPA CT permissions are not being ingested, and it was being ingested in the past,

Batch - ACH Credit, Batch - ACH Debit, and Batch - Internal Transfers are not present.

Solution

The solution is to add the following permissions for the following job roles/profiles into the job-profiles.json file on bb-fuel:

Job Profiles Permissions
Manager (roles: admin, manager) * Batch - SEPA CT (view, create, edit, delete, approval, cancel) * Batch - ACH Debit (view, create, edit, delete, approval, cancel) * Batch - ACH Credit (view, create, edit, delete, approval, cancel) * Batch - Intracompany Payments (view, create, edit, delete, approval, cancel) * Batch Templates (view, create, edit, delete, approval)
Finance Employee (roles: admin, employee) * Batch - SEPA CT (view, create, edit, delete, approval, cancel) * Batch - ACH * Debit (view, create, edit, delete, approval, cancel) * Batch - ACH Credit (view, create, edit, delete, approval, cancel) * Batch - Intracompany Payments (view, create, edit, delete, approval, cancel) * Batch Templates (view, create, edit, delete, approval)
Job Role Template with all business functions (roles: admin) * Batch - SEPA CT (view, create, edit, delete, approval, cancel) * Batch - ACH Debit (view, create, edit, delete, approval, cancel) * Batch - ACH Credit (view, create, edit, delete, approval, cancel) * Batch - Intracompany Payments (view, create, edit, delete, approval, cancel) * Batch Templates (view, create, edit, delete, approval)
Job Role Template with payments business functions (roles: admin) * Batch - SEPA CT (view) * Batch - ACH Debit (view) * Batch - ACH Credit (view) * Batch - Intracompany Payments (view) * Batch Templates (view)

Unable to use clients repository proxy for the 'hardcoded' specs path

When using a client repo proxy (which is normal on customer projects not sharing the master credentials) the wagon urls will not work:

                    <configuration>
                        <url>https://repo.backbase.com/specs/accessgroup-integration-service</url>
                        <fromFile>accessgroup-integration-inbound-api-v2.2.0.yaml</fromFile>
                    </configuration>

the /specs path is not a repository (under /repo/specs)

Possible fixes:

  1. Add the specs to the repo to make https://repo.backbase.com/repo/specs/accessgroup-integration-service/accessgroup-integration-inbound-api-v2.2.0.yaml work.

  2. Use the bom and uzip all specs from a bom version to the downloaded-api folder:

                             <artifactItem>
                                 <groupId>com.backbase.dbs</groupId>
                                 <artifactId>banking-services-bom</artifactId>
                                 <version>${dbs-bom.version}</version>
                                 <classifier>api</classifier>
                                 <type>zip</type>
                                 <outputDirectory>${project.build.directory}/specs</outputDirectory>
                             </artifactItem>
    

Option 2 makes way more sense because then fuel is in sync with a BB release.

Improvement for managing the password of the admin user

In the current setup, inside the LoginRestClient class there is a strong assumption

public void loginBankAdmin() {
        String admin = legalEntityService.getRootAdmin();
        login(admin, admin);
    }

that the password of the admin user is his username (admin:admin).

On BaaS, for example, this is not true, since all these passwords are generated randomly.

My suggestion is to externalize this configuration in a setting like

root.entitlements.admin.password=password

Improvement for managing https endpoints

At the moment all the endpoints listed in the various application-*.yml files are based on plain http. There is a growing need to run bb-fuel against the same secured endpoints (using https).

It would be nice to have an option to force https on

  • all the endpoints
  • or at least a subset of them (specifically the ones that are meant to be publicly exposed. See below).

In a typical setup you have indeed 2 different kinds of endpoints:

  • the ones which are meant to be consumed by the outside world (i.e. identity, gateway, auth);
  • the ones which are meant to be consumed from within the bank/organization, therefore usually exposed on http (e.g. registry, tokenconverter, accessgroup, etc.).

Exhibit A in LICENSE

Hi guys,

I saw your license file and have one question to you. Its text ends as "[Exhibit A– THIRD PARTY COMPONENTS]", but there is no data in this exhibit.

If it is empty, why do you specify this exhibit as existing?

Thanks for explanations.

Move from travis to GHA

We intend to remove travis support from our organization, we need to migrate this one (the only one still depending on it) to GitHub actions.

Update the k8s-beta application file with lean services

The problem

The current application-k8s-beta.yml profile has the triangular version for the remaining services that should be on lean.

Action

Replace the following services by the following lean reference

  dbs-service-names:
    accessgroup: access-control
    actions: action-service
    arrangements: arrangements-manager
    billpay: billpay-integrator
    legalentity: access-control
    limits: limit
    messages: messages-service
    notifications: notifications-service
    payments: payment-order-service
    pfm: transaction-category-collector
    user: user-manager
    products: arrangement-manager

User full name is added twice

During the bb-fuel data ingestion the full name of the user full_name_up is added twice in the field

Example of data in the en_user table

+--------------+-----------------------------+
|external_id   |full_name_up                 |
+--------------+-----------------------------+
|U0001005      |U0001005 U0001005            |
|U0001031      |U0001031 U0001031            |
|U0001037      |U0001037 U0001037            |
|U0001011      |U0001011 U0001011            |
|U0001030      |U0001030 U0001030            |
|U0001025      |U0001025 U0001025            |
|U0001022      |U0001022 U0001022            |
|U0001028      |U0001028 U0001028            |
|U0001024      |U0001024 U0001024            |
|paddy_brian   |PADDY_BRIAN PADDY_BRIAN      |
|user          |USER USER                    |
|U0001013      |U0001013 U0001013            |
|admin         |ADMIN USER ADMINISTRATOR     |
|U0000010      |U0000010 U0000010            |
|manager       |MANAGER MANAGER USER         |
|iris_schipper |IRIS_SCHIPPER IRIS_SCHIPPER  |
|U0001001      |U0001001 U0001001            |
|U0001003      |U0001003 U0001003            |
|U0001021      |U0001021 U0001021            |
|U0001012      |U0001012 U0001012            |
|U0001023      |U0001023 U0001023            |
|U0001034      |U0001034 U0001034            |
|U0001004      |U0001004 U0001004            |
|U0001002      |U0001002 U0001002            |
|U0001033      |U0001033 U0001033            |
|U0000011      |U0000011 U0000011            |
|U0001027      |U0001027 U0001027            |
|U0001035      |U0001035 U0001035            |
|designer      |DESIGNER DESIGNER USER       |
|alex_wong     |ALEX_WONG ALEX_WONG          |
|U0001015      |U0001015 U0001015            |
|U0001036      |U0001036 U0001036            |
|jan_verschoor |JAN_VERSCHOOR JAN_VERSCHOOR  |
|U0001032      |U0001032 U0001032            |
|joe_santorelli|JOE_SANTORELLI JOE_SANTORELLI|
|sarah_lee     |SARAH_LEE SARAH_LEE          |
|robin_green   |ROBIN_GREEN ROBIN_GREEN      |
|U0001029      |U0001029 U0001029            |
|U0001014      |U0001014 U0001014            |
|U0001026      |U0001026 U0001026            |
+--------------+-----------------------------+

java.net.UnknownHostException: user-manager.9019.dbs.backbase.test: No address associated with hostname

Description

When the user runs the basic data setup [1] an exception is thrown:

java.net.UnknownHostException: user-manager.9019.dbs.backbase.test: No address associated with hostname

Possible cause

The application-k8s.yml has changed on the user service, where they were updated to the lean version, but it's not ready yet on the regular environment creation.

Possible solution

We must revert back the changes for the user service, where the new values should be:

bb-fuel:
  dbs:
    user: http://user.${environment.name}.${environment.domain}/client-api
  dbs-service-names:
    user: user-presentation-service

Additional information

It happens in the latest version.
A possible workaround is to use the 2.6.13

Failed setting up access

The problem

When the user tries to ingest data using the local profile the execution fails.
It's happening in the 2.6.45 version.

Command

java -Dspring.profiles.active=local -Denvironment.domain=backbase.eu \
-Dingest.access.control=true -Dingest.custom.service.agreements=false \
-Dingest.balance.history=false -Dingest.transactions=true \
-Duse.pfm.categories.for.transactions=true -Dingest.approvals.for.payments=false \
-Dingest.approvals.for.contacts=false -Dingest.approvals.for.notifications=false \
-Dingest.approvals.for.batches=false -Dingest.limits=false -Dingest.contacts=false \
-Dingest.notifications=false -Dingest.payments=true -Dingest.messages=false \
-Dingest.actions=false -Dtransactions.min=100 -Dtransactions.max=101 \
-Didentity.feature.toggle=true -Didentity.realm=backbase -Didentity.client=bb-tooling-client -Dlegal.entities.with.users.json=data/legal-entities-with-users-retail.json \
-Dproduct.group.seed.json=data/product-group-seed-retail.json \
-Dservice.agreements.json=data/service-agreements-retail.json \
-jar ./bb-fuel.jar

Exception

2021-03-10 14:31:50.622  INFO [bb-fuel,,,] 43406 --- [onPool-worker-5] .b.c.p.ArrangementsIntegrationRestClient : Product [Savings Account] ingested
2021-03-10 14:31:50.643  INFO [bb-fuel,,,] 43406 --- [nPool-worker-11] .b.c.p.ArrangementsIntegrationRestClient : Product [Debit Card] ingested
2021-03-10 14:31:50.644  INFO [bb-fuel,,,] 43406 --- [onPool-worker-9] .b.c.p.ArrangementsIntegrationRestClient : Product [Term Deposit] ingested
2021-03-10 14:31:52.809 ERROR [bb-fuel,,,] 43406 --- [           main] com.backbase.ct.bbfuel.Runner            : Failed setting up access

java.net.SocketException: Connection reset
	at java.base/java.net.SocketInputStream.read(SocketInputStream.java:186)
	at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
	at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:161)
	at org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:82)
	at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:276)
	at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:138)
	at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)
	at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)
	at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:294)
	at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:257)
	at org.apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:207)
	at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)
	at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
	at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:679)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:481)
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
	at org.apache.http.client.HttpClient$execute$0.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.apache.http.client.HttpClient$execute$0.call(Unknown Source)
	at io.restassured.internal.RequestSpecificationImpl$RestAssuredHttpBuilder.doRequest(RequestSpecificationImpl.groovy:2055)
	at io.restassured.internal.http.HTTPBuilder.doRequest(HTTPBuilder.java:494)
	at io.restassured.internal.http.HTTPBuilder.request(HTTPBuilder.java:451)
	at io.restassured.internal.http.HTTPBuilder$request$3.call(Unknown Source)
	at io.restassured.internal.RequestSpecificationImpl.sendHttpRequest(RequestSpecificationImpl.groovy:1451)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1268)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1035)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:819)
	at io.restassured.internal.RequestSpecificationImpl.invokeMethod(RequestSpecificationImpl.groovy)
	at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
	at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:55)
	at io.restassured.internal.RequestSpecificationImpl.sendRequest(RequestSpecificationImpl.groovy:1200)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1268)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1035)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:819)
	at io.restassured.internal.RequestSpecificationImpl.invokeMethod(RequestSpecificationImpl.groovy)
	at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:166)
	at io.restassured.internal.filter.SendRequestFilter.filter(SendRequestFilter.groovy:30)
	at io.restassured.filter.Filter$filter$0.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at io.restassured.filter.Filter$filter.call(Unknown Source)
	at io.restassured.internal.filter.FilterContextImpl.next(FilterContextImpl.groovy:72)
	at io.restassured.filter.time.TimingFilter.filter(TimingFilter.java:56)
	at io.restassured.filter.Filter$filter.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at io.restassured.filter.Filter$filter.call(Unknown Source)
	at io.restassured.internal.filter.FilterContextImpl.next(FilterContextImpl.groovy:72)
	at io.restassured.filter.log.StatusCodeBasedLoggingFilter.filter(StatusCodeBasedLoggingFilter.java:112)
	at io.restassured.filter.log.ResponseLoggingFilter.filter(ResponseLoggingFilter.java:31)
	at io.restassured.filter.Filter$filter.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at io.restassured.filter.Filter$filter.call(Unknown Source)
	at io.restassured.internal.filter.FilterContextImpl.next(FilterContextImpl.groovy:72)
	at io.restassured.filter.log.RequestLoggingFilter.filter(RequestLoggingFilter.java:140)
	at io.restassured.filter.Filter$filter.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at io.restassured.filter.Filter$filter$0.call(Unknown Source)
	at io.restassured.internal.filter.FilterContextImpl.next(FilterContextImpl.groovy:72)
	at io.restassured.filter.FilterContext$next.call(Unknown Source)
	at io.restassured.internal.RequestSpecificationImpl.applyPathParamsAndSendRequest(RequestSpecificationImpl.groovy:1655)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1268)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1035)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:819)
	at io.restassured.internal.RequestSpecificationImpl.invokeMethod(RequestSpecificationImpl.groovy)
	at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
	at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:55)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:203)
	at io.restassured.internal.RequestSpecificationImpl.applyPathParamsAndSendRequest(RequestSpecificationImpl.groovy:1661)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1268)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1035)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:819)
	at io.restassured.internal.RequestSpecificationImpl.invokeMethod(RequestSpecificationImpl.groovy)
	at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:45)
	at org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.callCurrent(PogoInterceptableSite.java:55)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:203)
	at io.restassured.internal.RequestSpecificationImpl.get(RequestSpecificationImpl.groovy:171)
	at io.restassured.internal.RequestSpecificationImpl.get(RequestSpecificationImpl.groovy)
	at com.backbase.ct.bbfuel.client.accessgroup.UserContextPresentationRestClient.getServiceAgreementsForUserContext(UserContextPresentationRestClient.java:63)
	at com.backbase.ct.bbfuel.client.accessgroup.UserContextPresentationRestClient.getMasterServiceAgreementForUserContext(UserContextPresentationRestClient.java:67)
	at com.backbase.ct.bbfuel.client.accessgroup.UserContextPresentationRestClient.selectContextBasedOnMasterServiceAgreement(UserContextPresentationRestClient.java:38)
	at com.backbase.ct.bbfuel.setup.AccessControlSetup.createLegalEntitiesUserContextMap(AccessControlSetup.java:171)
	at com.backbase.ct.bbfuel.setup.AccessControlSetup.assembleFunctionDataGroupsAndPermissions(AccessControlSetup.java:192)
	at com.backbase.ct.bbfuel.setup.AccessControlSetup.setupBankWithEntitlementsAdminAndProducts(AccessControlSetup.java:156)
	at com.backbase.ct.bbfuel.setup.AccessControlSetup.initiate(AccessControlSetup.java:133)
	at com.backbase.ct.bbfuel.Runner.setupAccessControl(Runner.java:96)
	at com.backbase.ct.bbfuel.Runner.ingestEnvironment(Runner.java:83)
	at com.backbase.ct.bbfuel.Runner.doIt(Runner.java:62)
	at com.backbase.ct.bbfuel.Runner.run(Runner.java:42)
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:786)
	at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:776)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:322)
	at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:140)
	at com.backbase.ct.bbfuel.BbFuelApplication.main(BbFuelApplication.java:20)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:109)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
	at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)

[2.5.12] The ingestion of messages fails during the Topics creation

I am using bb-fuel version 2.5.12 (for DBS 2.17.3). When ingesting the messages for Message Center, I get the error below

Request method:	POST
Request URI:	https://localhost/api/messages-presentation-service/v4/message-center/topics?_csrf=d81fd1c3-d91b-4234-8ab5-8c8e4f71f019
Proxy:			<none>
Request params:	<none>
Query params:	_csrf=d81fd1c3-d91b-4234-8ab5-8c8e4f71f019
Form params:	<none>
Path params:	<none>
Headers:		Accept=*/*
				Content-Type=application/json; charset=UTF-8
Cookies:		Authorization=eyJraWQiOiJNYmV1VmVVWlhVT2FJcDgwYmx1XC9sanFOQjNKZE9aSDgxQ3JGU0tpMmVcL2M9IiwiY3R5IjoiSldUIiwiZW5jIjoiQTEyOENCQy1IUzI1NiIsImFsZyI6ImRpciJ9..UBI7-aBKE0hWnWnTugATuw.BmTobQi7qdB58MFI0CJb4s_3R6kXKOenRpYOSEg18CbpWBw6podVqAjS-VrzDRQQQUcqzFEaXXihmWBLNI_mhizaZfKvLXyNkvYZTJqidp7j7jZnw6axME4LRV0j9XaEyaLYcIDGGQfoVY8FeS1X_qwkDeVLjaeBpYbvsRUUpV-u2bouMIPGnk5tcShA9KVMuNcveIUD1kVO4xTO6kGn2nG5nl2UFKkZNw2VkCCYnCvWDqxwmXYU5aM1aY6N81dujZFrHovYAeJwTzLP-gE23yJeU2VlMdlNy0KsZjcA0ubQ5tVDMqnC4zipSgptlPIsHbKBzCkhaubmW3lNbjIedOZjtrtY_694pQaJPFregYZa9NksLGp_eMbdOwcRFIBKgCVqyDpDLTHrILJhqDm6j_FDmGhgIQ_gbOqFhx7S1kpP4AocKWZfBLUPUBZcouFM7xvcD9Sd_fozIGX_jpJnuTWdkJTvQYqzJFkgAazSrPTZk5iDfetsd8Mo3t3mU3R1uVeIWpsh0044YEBWMWINOYI5zvw4vSz6r7XnIkVzHjYiutFzbTzZJSQZp1ggnEnGlgHruowX7nYQaWOdBc-nML7Sr1tXyEwHcTts0CO5ZOf9PqinGWnzJxuteJrMS3EL.Mn_rVy6IvEl4s3Io8fTZgQ
				XSRF-TOKEN=d81fd1c3-d91b-4234-8ab5-8c8e4f71f019
				USER_CONTEXT=eyJraWQiOiJaNXB5dkxcL3FMYUFyR3ZiTkY3Qm11UGVQU1Q4R0I5UHBPR0RvRnBlbmIxOD0iLCJjdHkiOiJKV1QiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiZGlyIn0..i7-kzN_QUBMjEKeSUN4FwA.aFJH_cLqSDMuIBqRa8-3RTCbXTOXwJA2uXsFKnWxokug5VO63rsTsgkwaiR8c6qQgztl6-6aAsWrEtPwdfOZpMPNRgLOaxF3eOyEKOvpsca-oSC6gwbXSQM88M5wQpeEwA1Uk73iSas4n5JUY2mYOsYkTXQuUWxXKPtDs8jqSqVa8_22NonpHZZjfLbsokfqyLPisltKNEgeOiVtCL1Asum1ZhOy1Oh3e0kKX6KuIn7dHPT62QiOdhTMfkRFE_XKhipVUtCh3HF9UJmduqQ0pvzurMmQ8JLP2C8SFvSPvPcsPEGl6Kp-UH9aEi2SySaS.J4kqVxk0Q8y1nLKASop4Ew
Multiparts:		<none>
Body:
{
    "name": "Odit saepe.",
    "subscribers": [
        "admin"
    ]
}

HTTP/1.1 400 
Server: nginx/1.17.8
Date: Mon, 04 May 2020 13:26:57 GMT
Content-Type: application/json;charset=UTF-8
Content-Length: 141
Connection: keep-alive
Set-Cookie: XSRF-TOKEN=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/
Set-Cookie: XSRF-TOKEN=72a1d0cd-d032-404d-a9f3-04ecd91bdb20; Path=/
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Referrer-Policy: no-referrer
Strict-Transport-Security: max-age=15724800; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block

{
    "message": "Not all users were found.",
    "errors": [
        {
            "message": "Not all users were found.",
            "key": "user.get.error.message.ALL_USERS_NOT_FOUND"
        }
    ]
}
2020-05-04 15:26:57.819 ERROR [bb-fuel,,,] 78834 --- [           main] o.s.boot.SpringApplication               : Application run failed

java.lang.AssertionError: 1 expectation failed.
Expected status code <202> but was <400>.

	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:80)
	at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:74)
	at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrap.callConstructor(ConstructorSite.java:84)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:237)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:249)
	at io.restassured.internal.ResponseSpecificationImpl$HamcrestAssertionClosure.validate(ResponseSpecificationImpl.groovy:483)
	at io.restassured.internal.ResponseSpecificationImpl$HamcrestAssertionClosure$validate$1.call(Unknown Source)
	at io.restassured.internal.ResponseSpecificationImpl.validateResponseIfRequired(ResponseSpecificationImpl.groovy:655)
	at sun.reflect.GeneratedMethodAccessor300.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43)
	at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:190)
	at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:58)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:168)
	at io.restassured.internal.ResponseSpecificationImpl.statusCode(ResponseSpecificationImpl.groovy:123)
	at io.restassured.specification.ResponseSpecification$statusCode$2.callCurrent(Unknown Source)
	at io.restassured.internal.ResponseSpecificationImpl.statusCode(ResponseSpecificationImpl.groovy:131)
	at io.restassured.internal.ValidatableResponseOptionsImpl.statusCode(ValidatableResponseOptionsImpl.java:119)
	at com.backbase.ct.bbfuel.configurator.MessagesConfigurator.lambda$ingestConversations$0(MessagesConfigurator.java:58)
	at java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Streams.java:110)
	at java.util.stream.IntPipeline$Head.forEach(IntPipeline.java:559)
	at com.backbase.ct.bbfuel.configurator.MessagesConfigurator.ingestConversations(MessagesConfigurator.java:54)
	at java.util.ArrayList.forEach(ArrayList.java:1257)
	at com.backbase.ct.bbfuel.setup.CapabilitiesDataSetup.ingestConversationsPerUser(CapabilitiesDataSetup.java:158)
	at com.backbase.ct.bbfuel.setup.CapabilitiesDataSetup.initiate(CapabilitiesDataSetup.java:66)
	at com.backbase.ct.bbfuel.Runner.ingestCapabilityData(Runner.java:101)
	at com.backbase.ct.bbfuel.Runner.ingestEnvironment(Runner.java:84)
	at com.backbase.ct.bbfuel.Runner.doIt(Runner.java:62)
	at com.backbase.ct.bbfuel.Runner.run(Runner.java:42)
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:772)
	at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:762)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:319)
	at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:140)
	at com.backbase.ct.bbfuel.BbFuelApplication.main(BbFuelApplication.java:20)

The reason is that the api POST /messages-presentation-service/v4/message-center/topics can only accept a list of internal user ids, while bb-fuel is sending admin that is an external user id (specifically as subscriber of the topic).

I have a fix for it, using the userPresentationRestClient to translate the external user id into an internal user id. How can I be sure I follow the right process to submit the fix in the appropriate version bb-fuel?

Contacts are being ingested only with BBAN

The problem

During contact ingestion, the BBAN is being ingested instead of IBAN (the should be the default).

Root cause

Part 1
The data.properties file has the contacts.account.types as IBAN and BBAN values, like this

# Available account types for user: BBAN/IBAN
# This is a comma (,) separated value
contacts.account.types=BBAN,IBAN

It should be one or another. It can be set either changing the file or set the property during the bb-fuel execution.

Part 2
The ContactsDataGenerator class has an if statement that will always ingest the BBAN as an account instead of IBAN.

The first if checks if the contacts.account.types property contains the value IBAN and set the IBAN. It's true when you have the IBAN,BBAN.
The second if checks if the contacts.account.types property contains the value BBAN and set the BBAN. It's true when you have the IBAN,BBAN.
So, in this case, the BBAN will always be set.

The approach was made to support both, but currently, we can not support data ingestion for both.

Suggested changes

Change 1
Use either IBAN or BBAN value on contacts.account.types, not both separated by comma (current approach). We can add a comment describing that we can only support one or another.

** Change 2**
Replace the two if statement by an if-else statement, so we can support one or another

Failed to execute ApplicationRunner when k8s-beta is selected

The problem

When the user tries to ingest data using the Kubernetes beta services profile (k8s-beta) the execution fails.
It's happening in the 2.6.18 version.

Impact

It prevents all the user to ingest data in an environment that has lean beta services,

Command example

java -Dspring.profiles.active=k8s-beta -Denvironment.name=10221.dbs -Dbb-fuel.platform.infra=http://10221.dbs-backbase.test -Dingest.access.control=true -Dingest.custom.service.agreements=true -Dingest.balance.history=false -Dingest.transactions=false -Duse.pfm.categories.for.transactions=false -Dingest.approvals.for.payments=false -Dingest.approvals.for.contacts=false -Dingest.approvals.for.notifications=false -Dingest.approvals.for.batches=false -Dingest.limits=false -Dingest.contacts=false -Dingest.notifications=false -Dingest.payments=false -Dingest.messages=false -Dingest.actions=false -Dingest.billpay=false -Didentity.feature.toggle=false -Didentity.realm=backbase -Didentity.client=bb-tooling-client -Dmulti.tenancy.environment=false -Dhealthcheck.use.actuator=true -jar target/bb-fuel-2.6.19-SNAPSHOT-boot.jar

Exception

java.lang.IllegalStateException: Failed to execute ApplicationRunner
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:778)
	at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:765)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:322)
	at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:140)
	at com.backbase.ct.bbfuel.BbFuelApplication.main(BbFuelApplication.java:20)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
	at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52)
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
	at java.util.ArrayList.rangeCheck(ArrayList.java:657)
	at java.util.ArrayList.get(ArrayList.java:433)
	at com.backbase.ct.bbfuel.util.ResponseUtils.getBadRequestMessage(ResponseUtils.java:19)
	at com.backbase.ct.bbfuel.util.ResponseUtils.isBadRequestExceptionMatching(ResponseUtils.java:24)
	at com.backbase.ct.bbfuel.service.LegalEntityService.ingestLegalEntity(LegalEntityService.java:36)
	at com.backbase.ct.bbfuel.configurator.LegalEntitiesAndUsersConfigurator.ingestRootLegalEntityAndEntitlementsAdmin(LegalEntitiesAndUsersConfigurator.java:39)
	at com.backbase.ct.bbfuel.configurator.LegalEntitiesAndUsersConfigurator.ingestLegalEntityWithUsers(LegalEntitiesAndUsersConfigurator.java:31)
	at com.backbase.ct.bbfuel.setup.AccessControlSetup.setupBankWithEntitlementsAdminAndProducts(AccessControlSetup.java:154)
	at com.backbase.ct.bbfuel.setup.AccessControlSetup.initiate(AccessControlSetup.java:133)
	at com.backbase.ct.bbfuel.Runner.setupAccessControl(Runner.java:96)
	at com.backbase.ct.bbfuel.Runner.ingestEnvironment(Runner.java:83)
	at com.backbase.ct.bbfuel.Runner.doIt(Runner.java:62)
	at com.backbase.ct.bbfuel.Runner.run(Runner.java:42)
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:775)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.