Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Data Structure for Mirror Balance

Jira Legacy
serverSystem Jira
serverId08c95066-e26d-357f-9c44-10e77235956c
keySPMS-6

This document contains the Balance Collection (MongoDB) definition. We could see java objects and JSON schema for MongoDB.

Sources

Account Balance Endpoint

  • Fiserv ednpoint: /accounts/balance

  • Class: FiservRepository

  • Service: getAccountBalance

Request DTO properties

Code Block
languagejava
  @Builder.Default
  protected String organizationNumber = "950";

  protected String accountNumber;

Responses DTO

Code Block
languagejava
public class AccountBalanceResponseDTO {

    private String accountOrCardNumber;

    private Double currentBalance;

    private Double availableCreditLimit;

    private Double frozenBalance;

}

FL-Balance Endpoint

  • Fiserv ednpoint: /account/FL-balance

  • Class: FiservRepository

  • Service: transferBalanceFL

Request DTO

Code Block
languagejava
package com.spin.banking.common.fiserv.request;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.spin.banking.common.domain.FalconIdentifier;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
@Builder
@JsonInclude(JsonInclude.Include.NON_NULL)
public class TransactionDataFLDTO {

    private Long transactionAmount;

    private String actionCode;

    private String authorizationCode;

    private String effectiveDate;

    private String description;

    private String paidConcept;

    private String memoPostedIndicator;

    private String suppressMonetaryTransaction;

    private String n1n2ByPass;

    private FalconIdentifier identifier;

    private String box;

    private String crPlaza;

    private String crStore;

    private String keyTracking;

    private String beneficiaryAccount;

    private String senderAccount;

    private String counterpartInstitution;

    private String operatingInstitution;

    private String frcUprkBeneficiary;

    private String orderingFrcUprk;

    private String device;

    private String ip;

    private Double latitude;

    private Double longitude;

    private String recipientName;

    private String orderingName;

    private String paymentSourceId;

}

Response DTO

Code Block
languagejava
public class BalanceTransferResponseDTO {

    private String historyDate;

    private String historyTime;

    private BalanceTransferDetailsResponseDTO transactionData;

} 

Target (MongoDB)

...

Collection Name: balances

Schema:

Code Block
languagejs
db.createCollection("balances",{
  validator: {
    $jsonSchema: {
      bsonType: "object",
      description: "Balance bject collection",
      required: [
        "accountOrCardNumber",
        "availableCreditLimit",
        "organizationNumber",
        "accountNumber"
      ],
      properties: {
        "organizationNumber": {
          bsonType: "string",
          description: "organization Number must be a string and is required"
        },
        "accountNumber": {
          bsonType: "string",
          description: "account Number must be a string and is required"
        },
        "accountOrCardNumber": {
          bsonType: "string",
          description: "account or card number must be a string and is required"
        },
        "availableCreditLimit": {
          bsonType: "double",
          description: "available credit limit must be a number and is required"
        }
        "currentBalance": {
          bsonType: "double",
          description: "current balance must be a number"
        },
        "frozenBalance": {
          bsonType: "double",
          description: "frozen balance must be a number"
        },
        "historyDate": {
          bsonType: "string",
          description: "history Date must be a string"
        },
        "historyTime": {
          bsonType: "string",
          description: "history Time must be a string"
        },
        "transactionData": {
          bsonType: "object",
          description: "transaction data",
          required: [
            "transactionCode",
            "currentBalance",
            "openToBuy"
          ],
          properties: {
            "transactionCode": {
                bsonType: "string",
                description: "transaction code is required"
            },
            "transactionDescription": {
                bsonType: "string",
                description: "describe a transaction"
            },
            "currentBalance": {
                bsonType: "long",
                description: "current balance must be a long number and is required"
            },
            "openToBuy": {
                bsonType: "long",
                description: "open to Buy must be a long number and is required"
            },
            "transactionAmount": {
                bsonType: "long",
                description: ""
            },
            "actionCode": {
                bsonType: "string",
                description: "action Code"
            },
            "authorizationCode": {
                bsonType: "string",
                description: "authorization Code"
            },
            "effectiveDate": {
                bsonType: "string",
                description: "effective Date"
            },
            "description": {
                bsonType: "string",
                description: "description"
            },
            "paidConcept": {
                bsonType: "string",
                description: "paid Concept"
            },
            "memoPostedIndicator": {
                bsonType: "string",
                description: "memo Posted Indicator"
            },
            "suppressMonetaryTransaction": {
                bsonType: "string",
                description: "suppress Monetary Transaction"
            },
            "n1n2ByPass": {
                bsonType: "string",
                description: "n1 n2 by Pass"
            },
            "identifier": {
                bsonType: "string",
                description: "identifier"
            },
            "box": {
                bsonType: "string",
                description: "box"
            },
            "crPlaza": {
                bsonType: "string",
                description: "cr Plaza"
            },
            "crStore": {
                bsonType: "string",
                description: "cr Store"
            },
            "keyTracking": {
                bsonType: "string",
                description: "key Tracking"
            },
            "beneficiaryAccount": {
                bsonType: "string",
                description: "beneficiary Account"
            },
            "senderAccount": {
                bsonType: "string",
                description: "sender Account"
            },
            "counterpartInstitution": {
                bsonType: "string",
                description: "counterpart Institution"
            },
            "operatingInstitution": {
                bsonType: "string",
                description: "operating Institution"
            },
            "frcUprkBeneficiary": {
                bsonType: "string",
                description: "frc Up rk Beneficiary"
            },
            "orderingFrcUprk": {
                bsonType: "string",
                description: "ordering Frc Up rk"
            },
            "device": {
                bsonType: "string",
                description: "device"
            },
            "ip": {
                bsonType: "string",
                description: "ip"
            },
            "latitude": {
                bsonType: "double",
                description: "latitude"
            },
            "longitude": {
                bsonType: "double",
                description: "longitude"
            },
            "recipientName": {
                bsonType: "string",
                description: "recipient Name"
            },
            "orderingName": {
                bsonType: "string",
                description: "ordering Name"
            },
            "paymentSourceId": {
                bsonType: "string",
                description: "payment Source Id"
            }
          }
        }
      }
    }
  }
});

Target (Java)

Code Block
languagejava
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Email;
import org.springframework.data.mongodb.core.mapping.Document;
// import org.springframework.data.mongodb.core.index.Indexed;

@Getter
@Setter
@Document(collection = "balances")
public class Balance {
  @Id
  private String id;

  @NotNull(message="account or card number is mandatory")
  private String accountOrCardNumber;

  private Double currentBalance;

  @NotNull(message="available credit limit is mandatory")
  private Double availableCreditLimit;

  private Double frozenBalance;

  private String historyDate;

  private String historyTime;

  private TransactionData transactionData;

  private Long transactionAmount;

  private String actionCode;

  private String authorizationCode;

  private String effectiveDate;

  private String description;

  private String paidConcept;

  private String memoPostedIndicator;

  private String suppressMonetaryTransaction;

  private String n1n2ByPass;

  private FalconIdentifier identifier;

  private String box;

  private String crPlaza;

  private String crStore;

  private String keyTracking;

  private String beneficiaryAccount;

  private String senderAccount;

  private String counterpartInstitution;

  private String operatingInstitution;

  private String frcUprkBeneficiary;

  private String orderingFrcUprk;

  private String device;

  private String ip;

  private Double latitude;

  private Double longitude;

  private String recipientName;

  private String orderingName;

  private String paymentSourceId;

}
Code Block
languagejava
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document
public class TransactionData {

  @NotNull(message="transaction Code is mandatory")
  private String transactionCode;

  private String transactionDescription;

  @NotNull(message="current Balance is mandatory")
  private Long currentBalance;

  @NotNull(message="open to Buy limit is mandatory")
  private Long openToBuy;

}

Data Structure for Account Mirror

This section presents the Fiserv endpoints of the Account domain and proposes the MongoDB data structure for Mirror Account based on the corresponding request/response.

Fiserv - Account endpoint list

Account Details

Source

  • Fiserv endpoint: GET /account/details

  • Class: FiservRepository

  • Service: getAccountDetails

Response:

Code Block
languagejava
public class AccountDetailsResponseDTO {

    private AccountDataDTO accountData; 
} 
Code Block
languagejava
public class AccountDataDTO {

    private String accountNumber;

    private String customerNumber;

    private String blockCode1;

    private String blockCode1Date;

    private String blockCode2;

    private String blockCode2Date;

    private String accountMakerDateOfBirth;

    //this comes in pesos
    private Double availableCredit;

    //daily posted average balance
    private Double userAmounts9;

    //daily memo average balance
    private Double userAmounts10;

    //Total current memo balance
    private Double userAmounts7;

    public Double getAvailableCredit() {
      return availableCredit * 100;
    }

    public Double getUserAmounts9() {
      return userAmounts9 * 100;
    }

    public Double getUserAmounts7() {
      return userAmounts7 * 100;
    }

    public Double getUserAmounts10() {
      return userAmounts10 * 100;
    }
}

Request

Code Block
languagejava
public class AccountDetailsRequestDTO {
  
    private String organizationNumber;
  
    private String accountNumber;
}

Target (MongoDB)

  • Collection name: accountDetails

  • Schema:

    Code Block
    languagejson
    db.createCollection("accountDetails", {
      validator: {
        $jsonSchema: {
          bsonType: "object",
          title: "Account Details Object Validation",
          required: [ "accountDataKey.accountNumber","accountDataKey.organizationNumber"],
          properties: {
            accountDataKey: {
              bsonType: "object",
              properties: {
                accountNumber: {
                  bsonType: "string",
                  description: "'accountNumber' must be a string and is required"
                },
                organizationNumber: {
                  bsonType: [ "string" ],
                  description: "'organizationNumber' must be a string and is required"
                }
              }
            },
            accountData: {
              bsonType: "object",
              properties: {
                customerNumber: {
                  bsonType: "string",
                  description: "'customerNumber' must be a string"
                },
                blockCode1: {
                  bsonType: "string",
                  description: "'blockCode1' must be a string"
                },
                blockCode1Date: {
                  bsonType: "string",
                  description: "'blockCode1Date' must be a string"
                },
                blockCode2: {
                  bsonType: "string",
                  description: "'blockCode2' must be a string"
                },
                blockCode2Date: {
                  bsonType: "string",
                  description: "'blockCode2Date' must be a string"
                },
                accountMakerDateOfBirth: {
                  bsonType: "string",
                  description: "'accountMakerDateOfBirth' must be a string"
                },
                availableCredit: {
                  bsonType: [ "double" ],
                  description: "'availableCredit' must be a double"
                },
                userAmounts9: {
                  bsonType: [ "double" ],
                  description: "'userAmounts9' must be a double"
                },
                userAmounts10: {
                  bsonType: [ "double" ],
                  description: "'userAmounts10' must be a double"
                },
                userAmounts7: {
                  bsonType: [ "double" ],
                  description: "'userAmounts7' must be a double"
                }
              }
            }
          }
        }
      }
    });
  • Index

    Code Block
    languagejson
    db.accountDetails.createIndex({accountDataKey: 1});
    db.accountDetails.createIndex({"accountDataKey.accountNumber": 1});

Target (Java)

Code Block
languagejava
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document(collection = "accountDetails")
public class AccountDetail {

  @Id
  private String id;

  private AccountDataKey accountDataKey;

  private AccountData accountData;
}
Code Block
languagejava
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document
public class AccountData {

  private String customerNumber;

  private String blockCode1;

  private String blockCode1Date;

  private String blockCode2;

  private String blockCode2Date;

  private String accountMakerDateOfBirth;

  //this comes in pesos
  private Double availableCredit;

  //daily posted average balance
  private Double userAmounts9;

  //daily memo average balance
  private Double userAmounts10;

  //Total current memo balance
  private Double userAmounts7;

  public Double getAvailableCredit() {
    return availableCredit * 100;
  }

  public Double getUserAmounts9() {
    return userAmounts9 * 100;
  }

  public Double getUserAmounts7() {
    return userAmounts7 * 100;
  }

  public Double getUserAmounts10() {
    return userAmounts10 * 100;
  }
}
Code Block
languagejava
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document
public class AccountDataKey {

  @NotNull(message="account number is mandatory")
  private String accountNumber;

  @NotNull(message="organization number is mandatory")
  private String organizationNumber;
}  

Account Block Code

Source

  • Fiserv endpoint: POST /account/block-code

  • Class: FiservRepository

  • Service: setAccountBlockCode

Response:

Code Block
languagejava
public class AccountBlockUnblockResponseDTO {

  private String functionCode;

  private String accountNumber;

  private String blockCode1Local;

  private Integer localOrganization;
}

Request

Code Block
languagejava
public class AccountBlockUnblockRequestDTO extends AbstractAccountFiservBaseRequest {

  private String blockCode;

  private Integer blockCodeIndicator;

  private Integer foreignUse;

  private String functionCode;
}
Code Block
languagejava
public abstract class AbstractAccountFiservBaseRequest extends AbstractFiservBaseRequest {

  protected String accountNumber;
}
Code Block
languagejava
public abstract class AbstractFiservBaseRequest {

  @Builder.Default
  protected String organizationNumber = "950";
}

Target (MongoDB)

  • Collection name: blockUnblockAccounts

  • Schema:

    Code Block
    languagejson
    db.createCollection("blockUnblockAccounts", {
      validator: {
        $jsonSchema: {
          bsonType: "object",
          title: "Block Unblock Accounts Object Validation",
          required: ["accountBlockUnblockKey.accountNumber","accountBlockUnblockKey.blockCode"
          ,"accountBlockUnblockKey.blockCodeIndicator","accountBlockUnblockKey.foreignUse","accountBlockUnblockKey.functionCode","accountBlockUnblockKey.organizationNumber"],
          properties: {
            accountBlockUnblockKey: {
              bsonType: "object",
              properties: {
                accountNumber: {
                  bsonType: "string",
                  description: "'accountNumber' must be a string and is required"
                },
                blockCode: {
                  bsonType: "string",
                  description: "'blockCode' must be a string and is required"
                },
                blockCodeIndicator: {
                  bsonType: "int",
                  description: "'blockCodeIndicator' must be a int and is required"
                },
                foreignUse: {
                  bsonType: "int",
                  description: "'foreignUse' must be a int and is required"
                },
                functionCode: {
                  bsonType: "string",
                  description: "'functionCode' must be a string and is required"
                },
                organizationNumber: {
                  bsonType: [ "string" ],
                  description: "'organizationNumber' must be a string and is required"
                }
              }
            },
            blockCode1Local: {
              bsonType: "string",
              description: "'blockCode1Local' must be a string"
            },
            localOrganization: {
              bsonType: "int",
              description: "'localOrganization' must be a int"
            }
          }
        }
      }
    });
  • Index

    Code Block
    languagejson
    db.blockUnblockAccounts.createIndex({accountBlockUnblockKey: 1});
    db.blockUnblockAccounts.createIndex({"accountBlockUnblockKey.accountNumber": 1});

Target (Java)

Code Block
languagejava
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document(collection = "blockUnblockAccounts")
public class AccountBlockUnblock {

  @Id
  private String id;

  private AccountBlockUnblockKey accountBlockUnblockKey;

  private String blockCode1Local;

  private Integer localOrganization;
}
Code Block
languagejava
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document
public class AccountBlockUnblockKey {

  @NotNull(message="account number is mandatory")
  private String accountNumber;

  @NotNull(message="organization number is mandatory")
  private String organizationNumber;

  @NotNull(message="block is mandatory")
  private String blockCode;

  @NotNull(message="block code indicator is mandatory")
  private Integer blockCodeIndicator;

  @NotNull(message="foreign use is mandatory")
  private Integer foreignUse;

  @NotNull(message="function code is mandatory")
  private String functionCode;
}  

Customer

Source

  • Fiserv endpoint: POST /customer

  • Class: FiservRepository

  • Service: createCustomer

Response:

Code Block
languagejava
public class AddCustomerResponseDTO {

  private String customerNumber;
}

Request

Code Block
languagejava
public class CustomerRequestDTO {

  private String org;

  private String logo;

  private String address;

  private String houseNumber;

  private String externalNumber;

  private String colony;

  private String city;

  private String state;

  private String postalCode;

  private String dateOfBirth;

  private String stateOfBirth;

  private String email;

  private int genderCode;

  private String firstName;

  private String lastName;

  private String maternalLastName;

  private String mobilePhoneNumber;

  private String identificationNumberFlag;

  private String identificationNumber;

  private String ine;

  private String occupation;
}

Target (MongoDB)

  • Collection name: customers

  • Schema:

    Code Block
    languagejson
    db.createCollection("customers", {
      validator: {
        $jsonSchema: {
          bsonType: "object",
          title: "Customers Object Validation",
          required: ["customerKey.customerNumber","org","logo","address","houseNumber","externalNumber","colony","city","state","postalCode","dateOfBirth","stateOfBirth","email","genderCode","firstName","lastName","maternalLastName","mobilePhoneNumber","identificationNumberFlag","identificationNumber","ine","occupation"],
          properties: {
            customerKey: {
              bsonType: "object",
              properties: {
                customerNumber: {
                  bsonType: "string",
                  description: "'customerNumber' must be a string and is required"
                },
              }
            },
            org: {
              bsonType: "string",
              description: "'org' must be a string and is required"
            },
            logo: {
              bsonType: "string",
              description: "'logo' must be a string and is required"
            },
            address: {
              bsonType: "string",
              description: "'address' must be a string and is required"
            },
            houseNumber: {
              bsonType: "string",
              description: "'houseNumber' must be a string and is required"
            },
            externalNumber: {
              bsonType: "string",
              description: "'externalNumber' must be a string and is required"
            },
            colony: {
              bsonType: "string",
              description: "'colony' must be a string and is required"
            },
            city: {
              bsonType: "string",
              description: "'city' must be a string and is required"
            },
            state: {
              bsonType: "string",
              description: "'state' must be a string and is required"
            },
            postalCode: {
              bsonType: "string",
              description: "'postalCode' must be a string and is required"
            },
            dateOfBirth: {
              bsonType: "string",
              description: "'dateOfBirth' must be a string and is required"
            },
            stateOfBirth: {
              bsonType: "string",
              description: "'stateOfBirth' must be a string and is required"
            },
            email: {
              bsonType: "string",
              description: "'email' must be a string and is required"
            },
            genderCode: {
              bsonType: "int",
              description: "'genderCode' must be a int and is required"
            },
            firstName: {
              bsonType: "string",
              description: "'firstName' must be a string and is required"
            },
            lastName: {
              bsonType: "string",
              description: "'lastName' must be a string and is required"
            },
            maternalLastName: {
              bsonType: "string",
              description: "'maternalLastName' must be a string and is required"
            },
            mobilePhoneNumber: {
              bsonType: "string",
              description: "'mobilePhoneNumber' must be a string and is required"
            },
            identificationNumberFlag: {
              bsonType: "string",
              description: "'identificationNumberFlag' must be a string and is required"
            },
            identificationNumber: {
              bsonType: "string",
              description: "'identificationNumber' must be a string and is required"
            },
            ine: {
              bsonType: "string",
              description: "'ine' must be a string and is required"
            },
            occupation: {
              bsonType: "string",
              description: "'occupation' must be a string and is required"
            }
          }
        }
      }
    });
  • Index

    Code Block
    languagejson
    db.customers.createIndex({customerKey: 1});

Target (Java)

Code Block
languagejava
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document(collection = "customers")
public class Customer {

  @Id
  private String id;

  private CustomerKey customerKey;

  @NotNull(message="org is mandatory")
  private String org;

  @NotNull(message="logo is mandatory")
  private String logo;

  @NotNull(message="address is mandatory")
  private String address;

  @NotNull(message="house number is mandatory")
  private String houseNumber;

  @NotNull(message="external number is mandatory")
  private String externalNumber;

  @NotNull(message="colony is mandatory")
  private String colony;

  @NotNull(message="city is mandatory")
  private String city;

  @NotNull(message="state is mandatory")
  private String state;

  @NotNull(message="postal code is mandatory")
  private String postalCode;

  @NotNull(message="date of birth is mandatory")
  private String dateOfBirth;

  @NotNull(message="state of birth is mandatory")
  private String stateOfBirth;

  @NotNull(message="email is mandatory")
  private String email;

  @NotNull(message="gender code is mandatory")
  private int genderCode;

  @NotNull(message="first name is mandatory")
  private String firstName;

  @NotNull(message="last name is mandatory")
  private String lastName;

  @NotNull(message="maternal last name is mandatory")
  private String maternalLastName;

  @NotNull(message="mobile phone number is mandatory")
  private String mobilePhoneNumber;

  @NotNull(message="identification number flag is mandatory")
  private String identificationNumberFlag;

  @NotNull(message="identification number is mandatory")
  private String identificationNumber;

  @NotNull(message="ine is mandatory")
  private String ine;

  @NotNull(message="occupation number is mandatory")
  private String occupation;
}
Code Block
languagejava
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document
public class CustomerKey{

  @NotNull(message="customer number is mandatory")
  private String customerNumber;
}

Account Customer Linking

Source

  • Fiserv endpoint: POST /account/customer

  • Class: FiservRepository

  • Service: linkAccountToCustomer

Response:

Code Block
languagejava
public class AccountToCustomerLinkingResponseDTO {

  private String customerNumber;

  private String accountNumber;
}

Request

Code Block
languagejava
public class AccountToCustomerLinkingRequestDTO {

  private String accountNumber;

  private AlternateCustomerRequestDTO alternateCustomer = new AlternateCustomerRequestDTO();

  private String customerNumber;

  private String qualification;

  private String organizationNumber;

  private Integer customerTypeIndicator;

  private Integer foreignUseIndicator;

  @Getter
  static class AlternateCustomerRequestDTO {

      private String expirationDate;

      private String status;

  }
}

Target (MongoDB)

  • Collection name: accountCustomerLinks

  • Schema:

    Code Block
    languagejson
    db.createCollection("accountCustomerLinks", {
      validator: {
        $jsonSchema: {
          bsonType: "object",
          title: "Account Customer Links Object Validation",
          required: ["customerNumber","accountNumber","qualification","organizationNumber","customerTypeIndicator","foreignUseIndicator"],
          properties: {
            customerNumber: {
              bsonType: "string",
              description: "'customerNumber' must be a string and is required"
            },
            accountNumber: {
              bsonType: "string",
              description: "'accountNumber' must be a string and is required"
            },
            qualification: {
              bsonType: "string",
              description: "'qualification' must be a string and is required"
            },
            organizationNumber: {
              bsonType: "string",
              description: "'organizationNumber' must be a string and is required"
            },
            customerTypeIndicator: {
              bsonType: "int",
              description: "'customerTypeIndicator' must be a int and is required"
            },
            foreignUseIndicator: {
              bsonType: "int",
              description: "'foreignUseIndicator' must be a int and is required"
            },
            expirationDate: {
              bsonType: "string",
              description: "'expirationDate' must be a string"
            },
            status: {
              bsonType: "string",
              description: "'status' must be a string"
            }
          }
        }
      }
    });
  • Index

    Code Block
    languagejson
    db.accountCustomerLinks.createIndex({customerNumber: 1});
    db.accountCustomerLinks.createIndex({accountNumber: 1});
    db.accountCustomerLinks.createIndex({"customerNumber,accountNumber": 1});
    db.accountCustomerLinks.createIndex({"customerNumber,accountNumber,organizationNumber": 1});

Target (Java)

Code Block
languagejava
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document(collection = "accountCustomerLinks")
public class AccountToCustomerLinking {

  @Id
  private String id;

  @NotNull(message="account number is mandatory")
  private String accountNumber;

  @NotNull(message="customer number is mandatory")
  private String customerNumber;

  @NotNull(message="qualification is mandatory")
  private String qualification;

  @NotNull(message="organization number is mandatory")
  private String organizationNumber;

  @NotNull(message="customer type indicator is mandatory")
  private Integer customerTypeIndicator;

  @NotNull(message="foreign use indicator is mandatory")
  private Integer foreignUseIndicator;

  private String expirationDate;

  private String status;
}

Account Card Linking

Source

  • Fiserv endpoint: POST /account/prepaid

  • Class: FiservRepository

  • Service: linkCardToAccount

Response:

Code Block
languagejava
public class CardToAccountLinkingResponseDTO {

  private String cardNumber;

  private String customerOrAccountNumber;
}

Request

Code Block
languagejava
public class CardToAccountLinkingRequestDTO {

  private String cardNumber;

  private Integer cardholderType;

  private String customerOrAccountNumber;
}

Target (MongoDB)

  • Collection name: accountCardLinks

  • Schema:

    Code Block
    languagejson
    db.createCollection("accountCardLinks", {
      validator: {
        $jsonSchema: {
          bsonType: "object",
          title: "Account Card Links Object Validation",
          required: ["cardNumber","cardholderType","customerOrAccountNumber"],
          properties: {
            cardNumber: {
              bsonType: "string",
              description: "'cardNumber' must be a string and is required"
            },
            cardholderType: {
              bsonType: "int",
              description: "'cardholderType' must be a int and is required"
            },
            customerOrAccountNumber: {
              bsonType: "string",
              description: "'customerOrAccountNumber' must be a string and is required"
            }
          }
        }
      }
    });
  • Index

    Code Block
    languagejson
    db.accountCardLinks.createIndex({cardNumber: 1});
    db.accountCardLinks.createIndex({cardholderType: 1});
    db.accountCardLinks.createIndex({customerOrAccountNumber: 1});
    db.accountCardLinks.createIndex({"cardNumber,cardholderType,customerOrAccountNumber": 1});

Target (Java)

...

languagejava

...

El código se encuentra alojado en el Github y clúster de Genesys / Spin en ambientes de DEV + QA + Stage/Staging​

Table of Contents
minLevel1
maxLevel6
outlinefalse
typeflat
separatorbrackets
printablefalse

 Mirror

Balance Mirror

Tecnología

Maven

Pipeline

Genesys

Lenguaje

Java 17

Spring boot

3.0.8

Interfaz

gRPC

Clúster

Genesys

Account Mirror

Tecnología

Maven

Pipeline

Genesys

Lenguaje

Java 17

Spring boot

3.0.8

Interfaz

gRPC

Clúster

Genesys

Card Mirror

Tecnología

Gradle

Pipeline

Spin

Lenguaje

Java 8

Spring boot

2.5

Interfaz

Rest

Clúster

Spin

Gateway

Fiserv Gateway

Tecnología

Gradle

Pipeline

Spin

Lenguaje

Java 8

Spring boot

2

Interfaz

Rest

Clúster

Spin

Account Gateway

Tecnología

Maven

Pipeline

Genesys

Lenguaje

Java 17

Spring boot

3.0.8

Interfaz

gRPC

Clúster

Genesys

Customer Gateway

Tecnología

Maven

Pipeline

Genesys

Lenguaje

Java 17

Spring boot

3.0.8

Interfaz

gRPC

Clúster

Genesys

Aggregation

Account Aggregation

Tecnología

Maven

Pipeline

Genesys

Lenguaje

Java 17

Spring boot

3.0.8

Interfaz

gRPC / Rest

Clúster

Genesys

Customer Aggregation

Tecnología

Maven

Pipeline

Genesys

Lenguaje

Java 17

Spring boot

3.0.8

Interfaz

gRPC / Rest

Clúster

Genesys

Card Aggregation

Tecnología

Gradle

Pipeline

Spin

Lenguaje

Java 8

Spring boot

2

Interfaz

Rest

Clúster

Spin

Librerías

Common API

Tecnología

Maven

Pipeline

Genesys

Lenguaje

Java 17

Spring boot

3.0.8

Interfaz

gRPC

Clúster

Genesys

Core Chassis

Tecnología

Maven

Pipeline

Genesys

Lenguaje

Java 17

Spring boot

2.7.12

Interfaz

gRPC

Clúster

Genesys