Drogi użytkowniku,
w tym artykule zgłębimy wiedzę dotyczącą ponownej agregacji transakcji klienta do tabeli [transaction].StatementTransaction. Ponowna agregacja jest możliwa tylko dla okresu z którego możemy jeszcze zaciągnąć dane od banku.
Przykład, dla banku AXA jest możliwe pobranie transakcji na 180 dni wstecz z udziałem klienta i ponownym SCA!! Inne banki mogą oferować historię tylko z 90 dni, nawet po wykonaniu SCA przez klienta.
Do dzieła!
Krok 1. Skomunikuj się z zespołami i potwierdźcie istniejący problem. Może transakcje są już w bazie danych, a nie wysłały się poprawnie do innych odbiorców np PXG. W takim przypadku odbiorca danych powinien ponownie pobrać od nas transakcje.
Krok 2. Potwierdźcie działanie i poszczególne kroki. Ustalcie czy do odświeżania danych będzie potrzebny klient czy nie. Może się okazać, że brakuje transakcji z przed 30 dni i wtedy klient nie będzie potrzebny. Sprawdzenie ile transakcji można pobrać bez udziału klienta można zweryfikować w Purposach.
"historyLimit": {
"afterSca": 180,
"withoutSca": 90
},
"multiTenantHistoryLimit": {
"afterSca": 180,
"withoutSca": 90
}
}Krok 3. Jeżeli jest wymagany udział klienta to ustalcie termin ponownego pobrania danych wraz z klientem. Warto w PXG i w ApiHub zinvalidować consent, żeby po wyczyszczeniu danych systemy same nie pobrały transakcji automatycznymi jobami.
Krok 4. Przygotowanie środowiska do pobrania danych. Poniżej znajduje się kod który należy uzupełnić o zmienne:
@cleanDate - data od której zostaną wyczyszczone statementy
@accountId - GUID konta, dla którego jest wykonywane czyszczenie
@userId - GUID usera, dla którego jest wykonywane czyszczenie
declare @newAccId Varchar(50) set @newAccId = NEWID() declare @cleanDate datetime2 set @cleanDate = '' declare @accountId varchar(50) set @accountId = '' declare @accountLegacyId int set @accountLegacyId = (select legacyId from [account].Account where id = @accountId) declare @userID varchar(50) set @userId = '' declare @tempUserId varchar(50) set @tempUserId = NEWID()--czyszczenie statementów update [transaction].StatementTransaction set userId = @tempUserId, accountId = @newAccId where accountId = @accountId and AccountingDate >= @cleanDate update [transaction].statementBatch set accountId = @newAccId where accountId = @accountId and CreatedAt >= @cleanDate update [transaction].statementDay set accountId = @newAccId where accountId = @accountId and Date >= @cleanDate update [account].Account set SyncDate = @cleanDate, TransactionSyncDate = @cleanDate, LatestStatementDate = @cleanDate where Id = @accountId update BankAccount set SyncLastDate = @cleanDate where id = @accountLegacyId update BankAccountSync set LastSuccessfulSyncDate = @cleanDate, LastTransactionDate = @cleanDate where BankAccountId = @accountLegacyId--trzeba zapisać do rollbacka select @newAccId select @tempUserId
Po uzupełnieniu danych, należy się skontaktować z DevOps w celu wykonania skryptu na bazie produkcyjnej.
Krok 5. Weryfikacja danych, czy zostały prawidłowo nadpisane.
Krok 6. Wykonanie ponownego SCA przez klienta
Krok 7. Weryfikacja poprawnego zapisania się danych w SQL, oraz zwracania danych w POSTMAN
Krok 8. Poinformowanie zespołu PXG o możliwości ponownego pobrania statementów.
Rollback
declare @newAccId Varchar(50) set @newAccId = NEWID() declare @cleanDate datetime2 set @cleanDate = '' declare @accountId varchar(50) set @accountId = '' declare @userID varchar(50) set @userId = ''
declare @tempUserId varchar(50)
set @tempUserId = NEWID()--czyszczenie statementów update [transaction].StatementTransaction set userId = @tempUserId, accountId = @newAccId where accountId = @accountId and AccountingDate >= @cleanDate update [transaction].statementBatch set accountId = @newAccId where accountId = @accountId and CreatedAt >= @cleanDate update [transaction].statementDay set accountId = @newAccId where accountId = @accountId and Date >= @cleanDate
A potem
--rollback prev transaction declare @accountId varchar(50) set @accountId = '' declare @userID varchar(50) set @userId = '' declare @tempAccId varchar(50) set @tempAccId = 'Wartość z 1 czyszczenia!!!!'
update [transaction].StatementTransaction set userId = @userId, accountId = @accountId where accountId = @tempAccId update [transaction].statementBatch set accountId = @accountId where accountId = @tempAccId update [transaction].statementDay set accountId = @accountId where accountId = @tempAccId
elo