model10.ppt

436 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
436
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

model10.ppt

  1. 1. <ul><li>Structures </li></ul><ul><li>Consists of service enabler and service delivery parts </li></ul><ul><li>service enabler ( green drawings ) = information management </li></ul><ul><ul><li>include base «BusinessInstance» : service enabling ( search; create; modify; close; view) </li></ul></ul><ul><li>refinement of service enabler ( blue drawings ) </li></ul><ul><ul><li>influenced by «BusinessUnit» i.e. orgUnit : privateBanking; corporateBanking; investmentBanking; retailBanking and the unitLocation : location (country where business unit is located). </li></ul></ul><ul><li>refinement by agreement consolidation ( purple drawings ) </li></ul><ul><li>service delivery ( red drawings ) = business processes </li></ul><ul><ul><li>include base «BusinessInstance» : service delivery (consolidate; compute; post; settle; verify; track; audit; ) as extensions of service enabler </li></ul></ul><ul><li>refinement of service delivery ( orange drawings ) </li></ul><ul><ul><li>influenced by «BusinessUnit» i.e. orgUnit : privateBanking; corporateBanking; investmentBanking; retailBanking and the unitLocation : location (country where business unit is located). </li></ul></ul><ul><li>Base concept of model bank: </li></ul><ul><li>Base = single products are usually sold to clients (need for cash management, buy checking account; need for investing money, buy savings account) </li></ul><ul><li>Wholesale = clients require solutions to their specific requirements and buy product packages tailored to meet their needs </li></ul>Model Bank Street side purchase product purchase products or services purchase product shares Base Wholesale base offers refinement of base offers Investment Banking Private Banking Corporate Banking Asset Management Retail Banking
  2. 2. Model Bank National Bank (etc.) Exchange (stock, merchantile; commodities, foreign) Street side Regulatory side <ul><li>MetaDomains </li></ul><ul><li>market (client) facing e.g. orgRoleType(clientSales) = clientAdvisor </li></ul><ul><li>street facing (i.e. Wall Street) e.g. orgRoleType(treasury; trading) = interbanking transactions </li></ul><ul><li>regulatory facing e.g. orgRoleType(board; executive) = governments and regulatory bodies </li></ul>Logistics BANK Core Competence Asset Management Investment Banking Corporate Banking Wealth Management Logistics BANK Core Competence Asset Management Investment Banking Corporate Banking Wealth Management Logistics Asset Management Investment Banking Corporate Banking Wealth Management BANK Core Competence Clients ) Market side
  3. 3. Model Bank - role and status driven system service enabler consolidation service delivery domain information management offering management posting management i adds context of business unit, regulatory (country) Event triggered (Business Instance)
  4. 5. service enabler service delivery 1 method Addressing market operation credit Parties Account Business Unit Position Support Information Risk Business Process Availability Check Instruction Grouping Base Feature Eligibility Check 1..2 1..2 domiciles 1 0..* 1..* portfolio 1 1..* numbers 1 0..* 2..* 1..* 1..* roles 1..* 1 1..* postal 1 domain 1..* 1 offering 1..* 1 OK 1 permit 1 payment requests 1..* balances 0..* postings 1..* 1..* 1 check 1 execute 1..* 1..* activities 1..* 1..* verifies 1 excess Interest Calculation Account Settlement 1 method 1 2..* Business Relation Business Instance consolidation 1 1..* triggers Address Agreement Product
  5. 6. Business Process Work Flow request Business Process Business Instance Agreement Refinement Party Work Flow Activity (2) decision Activities triggers (3) (1) verifies 1..* activityRole Events Contract 1 Base 1 resource Work Flow Business Unit 1 domain Role FullTimeEquivalent Relation OrgUnit EmployeeRole Resources employee Authorization AncillaryDevice EmployeeRole are replaced with actual persons (names) or applications or machines (e.g. ATM has employeeRole of “ teller”) . placeholder EmployeeRole orgUnitRole
  6. 7. «concern» Parties <ul><li>Collaboration Parties </li></ul><ul><li>// partID ()  unique identifier </li></ul><ul><li>// legalForm (individual or corporateBody) </li></ul><ul><li>// domicile ()  corporate bodies can have up to 2 domiciles </li></ul><ul><li>// nationality ()  individuals can have > 1 nationality (e.g. dual citizenship); but one has to be declared as master </li></ul><ul><li>// updateStatus (nonOperational; operational; inClosing; Closed; historical; archived)  “operational” all legal form specific parameters of opposite model have to be captured; “active” one domicile address must be captured in addition. </li></ul><ul><li>// corporateType (incorporated; company; limitedLiabilityCompany; association; partnership; society; foundation) </li></ul><ul><li>// LegalForm (individual or corporateBody) </li></ul><ul><li>// corporateTitle (chief ececutive officer; director of sales; accountant) </li></ul><ul><li>// corporateFunction (executive; officer; authorized signatory) </li></ul><ul><li>// legalCapacity = TRUE [Default] </li></ul><ul><li>= FALSE only by court order [Individual can engage in business relations only with legal representation (guardian)]. </li></ul><ul><li>Remarks </li></ul><ul><li>Corporation can only be represented by individual with specific corporate functions (see corporateFunction) </li></ul>CorporateBody <ul><li>foundation year </li></ul><ul><li>corporate type </li></ul><ul><li>getFoundationYear() </li></ul><ul><li>getCorporateType() </li></ul>Party <ul><li>party ID </li></ul><ul><li>legal form </li></ul><ul><li>name </li></ul><ul><li>domicile </li></ul><ul><li>nationality </li></ul><ul><li>PartyID : int </li></ul><ul><li>getLegalForm() </li></ul><ul><li>getName() </li></ul><ul><li>getDomicile() </li></ul><ul><li>getNationality() </li></ul><ul><li>updateStatus() </li></ul>1 Individual <ul><li>first name </li></ul><ul><li>middle initial </li></ul><ul><li>date of birth </li></ul><ul><li>legal capacity </li></ul><ul><li>getFirstName() </li></ul><ul><li>getMiddleInital() </li></ul><ul><li>getBirthDate : date </li></ul><ul><li>getLegalCapacity : boolean </li></ul>CorporateRepresentative <ul><li>getCorporateTitle </li></ul><ul><li>getCorporateFunction() </li></ul><ul><li>corporate title </li></ul><ul><li>corporate function </li></ul>1..* role officer 0..* representatives
  7. 8. global bank view only (not communicated to outside parties) one geographic and judicial domain (= country) Party A (indiv or corporate) BusinessRelation 1 Portfolio 1.1 Portfolio 1.2 Portfolio 1.3 Account 1.1.1 Account 1.1.2 Account 1.1.3 Account 1.1.4 Account 1.2.1 Account 2.1.2 Account 1.3.1 MetaParty A (indiv or corporate) metaPartyID one geographic and judicial domain (= country) Party A (indiv or corporate) BusinessRelation 1 CONTRACTNUMBER clearingNumber portfolioNumber accountNumber AGREEMENTNUMBER CONTRACTNUMBER clearingNumber portfolioNumber accountNumber AGREEMENTNUMBER «concern» MetaParty ctd.
  8. 9. Collaboration MetaParty // metaPartyID ()  unique identifier Remark // MetaParty structures are used to monitor risk primarily «concern» MetaParty ctd. MetaPartyBase <ul><li>getMetaPartyID() </li></ul><ul><li>meta party ID </li></ul>
  9. 10. «concern» GroupingParties Collaboration GroupingParties // groupID; parentID; childID ()  unique identifier // groupType (holding; group; org chart; family; clan)  Corporate bodies have holding, group and org charts; individuals have family and clan structures // updateStatus (awaiting approval; approved; historical; archived;) // clanLinkClass (parent; in-law; designatedHeir; businessPartner; lawyer; trustee; frontperson;) // clanLinkType (married; divorced; separated;) CorporateLink <ul><li>get%ShareInvestment() </li></ul><ul><li>getCashFlow() </li></ul><ul><li>% share investment </li></ul>2..* PartyRole <ul><li>ParentID : int </li></ul><ul><li>ChildID : int </li></ul><ul><li>parent ID </li></ul><ul><li>child ID </li></ul>1..* child 1 parent Grouping <ul><li>GroupID : int </li></ul><ul><li>getGroupType() </li></ul><ul><li>updateStatus() </li></ul><ul><li>group ID </li></ul><ul><li>group type </li></ul>1..* 1..* IndividualClanLink <ul><li>getCashFlow() </li></ul><ul><li>getClanLinkType() </li></ul><ul><li>getClanLinkClass() </li></ul><ul><li>clan link type </li></ul><ul><li>clan link class </li></ul>1..*
  10. 11. Appendix: Grouping <ul><li>Group Structure Type </li></ul><ul><li>Corporate Bodies </li></ul><ul><li>Holding [h] Consolidation of share of investments based on percentage </li></ul><ul><li>Group [g] Consolidation of cash flows based on percentage share of investment </li></ul><ul><li>Each Link is either [g] or [h]! </li></ul>parent(1) child(1.2) parent(2.2) child(2.2.2) child(1.1) child(2.2.1) parent(2.1) [h] share of investment : 60.5% [h] share of investment : 45% holding asset parent(1) : 973mio. USD [h] [g] [g] [g] parent(3) child(3.1) child(2.1.1) child(2.1.2) [g] share of investment : 70% cash flow child(1.2) : 45mio. USD . cash flow parent(2.2) : 78mio. USD share of investment = 50% share of investment : 35% holding assets parent(2.1) : 618mio. USD (assets parent consider only [h] links)! cash flow child(1.1) : 10 mio. USD cash flow group parent(2.1) : -5mio. USD (cf group parent consider only [g] links)! share of investment : 50% share of investment : 20% cash flow group parent(3) : -30 mio. USD [g] parent (4) child 4.1 share... //Calculation holding asset (ONLY [h] LINKS!) [MarketValue, mv; ShareOfInvestment, soi;].holdingAssets =  child(n) (mv*soi) market value child(1.2) : 1,355mio. USD cash flow child (2.2.2) : 68mio. USD cash flow child(2.2.1/2.1.2) = -31mio. USD //Calculation cash flow parent(n) ONLY [g] LINKS [ShareOfInvestment, soi; CashFlow, cf].cashFlow = cf(parent)+  child(n) (cf*soi) cash flow child(2.1.1/3.1): 5 mio. USD market value child(2.1.1) : 50 mio. USD market value child(2.1.2) : 120mio. USD market value child(1.1) : 600mio. USD cash flow parent(4)...
  11. 12. <ul><li>Group Structure Type </li></ul><ul><li>Individuals </li></ul><ul><li>Family [f] Consolidation of assets and liabilities (at 100% or if otherwise stipulated in prenuptial contract) </li></ul><ul><li>Clan [c] Chart of affiliations with roles of participants </li></ul>Appendix: Grouping business partner heir lawyer parent in-law parent trustee business partner client married divorced married business partner beneficiary mandatory power [c] [c] [c] represents beneficiary [c] [c] lawyer lawyer beneficiary true beneficiary frontperson [c] [black listed] parties owner of assets participant in clan structure parent 1 child 1.2 / 2.2 child 1.1 / 2.1 parent 2 [f] [f] prenuptial agreement : joint liability available assets family : 112m USD secured liabilities : 500m USD legal age : TRUE assets : 150m USD lending value : 70% (105m) unused credit limits: 125m USD unsecured liabilities : 0m USD availability : 130m USD secured liabilities : 250m USD legal age : TRUE assets : 25m USD lending value : 100% (25m) unused credit limits : 145m USD unsecured liabilities : 200m USD availability : -30m USD secured liabilities : 250m USD [f] legal age : FALSE assets : 10m USD lending value : 100% (10m) unused credit limits : n/a unsecured liabilities : n/a availability : 10m USD secured liabilities : n/a legal age : FALSE assets : 2m USD lending value : 100% (10m) unused credit limits : n/a unsecured liabilities : n/a availability : 2m USD secured liabilities : n/a parent or (marital status = married) = legal aged child = underaged : underaged persons have no credits! secured liabilities = mortgage //Calculation available assets! [Availability, a;].familyAssets =  (a party(1) +a party(2) +…a party(n) ) // prenuptial agreement joint liability = all liabilities which structure are shared equally amount parents //Calculation availability [Asset, as; LendingValue. lv; unusedCreditLimit, ucl; unsecuredLiabilities, ul;].Availability =  {(as*lv)+ucl-ul} [c] [c] [c] [c] [c] [c] [c] [c] [c] represents beneficiary [c]
  12. 13. <ul><li>GroupStructureType </li></ul><ul><li>Individuals </li></ul><ul><li>Family </li></ul><ul><ul><li>legal age  BusinessInstance : computation :: computeAge(systemYear - birthDateYear) get Parties : party : Country get SupportInformation : LegalAgeCountry() if age > legalAgeCountry then legalAge = TRUE if age < legalAgeCountry and if martialStatus = single then legalAge = FALSE </li></ul></ul><ul><ul><li>assets  BusinessInstance : computation :: computeAssetsParty, AP([  {  assetsBusinessRelation }] </li></ul></ul><ul><ul><li>lending value  BusinessInstance : computation :: computeLendingValueParty, LV(  {LV position }) </li></ul></ul><ul><ul><li>unused credit limits  BusinessInstance : computation :: computeUnusedCreditParty, UCP(  {creditApproved - creditUtilized}) </li></ul></ul><ul><ul><li>unsecured liabilities  BusinessInstance : computation :: computeUnusecuredLiabilitiesParty, ULP(  {creditApproved; : creditType :: unsecured}) </li></ul></ul><ul><ul><li>availability  BusinessInstance : computation :: computeAvailabilityParty, AVP(AP-ULP) </li></ul></ul><ul><ul><li>secured liabilities  MortgageAccount :: mortgageUtilized </li></ul></ul><ul><li>Clan </li></ul><ul><ul><li>Clan links are assigned based on information received. </li></ul></ul><ul><ul><li>Either a clan link type or a clan link class can be assigned to a clan link. </li></ul></ul>Appendix: Grouping
  13. 14. Base Parties Base Grouping 2..* 0..* Appendix: Grouping Clan Structure refined with lineage information: Within domain “Private Banking” there are no corporate bodies Refinement in concern <Grouping> and <Party> CorporateRepresentative <ul><li>getCorporateTitle </li></ul><ul><li>getCorporateFunction() </li></ul><ul><li>corporate title </li></ul><ul><li>corporate function </li></ul>«concern» PartiesPB in-law in-law parent parent client married divorced married Inheritance Assets: 250mio. USD Mortgage: 2.5mio.USD beneficiary heir [c] [c] [c] [c] [c] [c] [c] [c] domain OrgUnit :: Private Banking enabler FieldOfInterest <ul><li>getAreaOfInterestType() </li></ul><ul><li>getHobby() </li></ul><ul><li>area of interest type </li></ul><ul><li>hobby </li></ul>IndividualProfile <ul><li>getInvestorType() </li></ul><ul><li>investor type </li></ul>IndividualStatus <ul><li>getMaritalStatus() </li></ul><ul><li>marital status </li></ul>CorporateBody <ul><li>foundation year </li></ul><ul><li>corporate type </li></ul><ul><li>getFoundationYear() </li></ul><ul><li>getCorporateType() </li></ul>Individual <ul><li>first name </li></ul><ul><li>middle initial </li></ul><ul><li>date of birth </li></ul><ul><li>legal capacity </li></ul><ul><li>getFirstName() </li></ul><ul><li>getMiddleInitial() </li></ul><ul><li>getLegalCapacity: boolean </li></ul>Party <ul><li>party ID </li></ul><ul><li>legal form </li></ul><ul><li>name </li></ul><ul><li>domicile </li></ul><ul><li>nationality </li></ul><ul><li>getPartyID() </li></ul><ul><li>getLegalForm() </li></ul><ul><li>getName() </li></ul><ul><li>getDomicile() </li></ul><ul><li>getNationality() </li></ul><ul><li>updateState() </li></ul>Inheritance <ul><li>getInheritanceAsset() </li></ul><ul><li>getMortgageDebt() </li></ul><ul><li>assets </li></ul><ul><li>mortgage debt </li></ul>PartyRole <ul><li>getParentID() </li></ul><ul><li>getChildID() </li></ul><ul><li>updateStatus() </li></ul><ul><li>parent ID </li></ul><ul><li>child ID </li></ul>CorporateLink <ul><li>get%ShareInvestment() </li></ul><ul><li>getCashFlow() </li></ul><ul><li>getMarketValue() </li></ul><ul><li>computeAsset() </li></ul><ul><li>computeCashFlow() </li></ul><ul><li>updateStatus() </li></ul><ul><li>% share investment </li></ul>IndividualClanLink <ul><li>getCashFlow() </li></ul><ul><li>getClanLinkType() </li></ul><ul><li>getClanLinkClass() </li></ul><ul><li>clan link type </li></ul><ul><li>clan link class </li></ul>Grouping <ul><li>getGroupID() </li></ul><ul><li>getGroupType() </li></ul><ul><li>create(Group) </li></ul><ul><li>group ID </li></ul><ul><li>group type </li></ul>
  14. 15. «concern» PartiesPB ctd. Refinement in concern <Grouping> and <Party> Collaboration PartiesPB // investorType (conservative; progressive; aggressive;) // areaOfInterestType (politics; economics; sports; culture; others;) // hobby (golf; sailing; gardening; musicClassic; partyMember;)  depending on interest type (sports = golf; sailing; culture = musicClassic; politics = partyMember; others = gardening) // marital status (single; married; divorced; widowed;)  needed for lineage information, if “married”, “divorced” and “widowed” lineage information is sought after in the domain of private banking only domain OrgUnit :: Private Banking enabler
  15. 16. «concern» BusinessUnit Collaboration BusinessUnit Remarks: BusinessUnit is in the domain of the model bank synonym with the Bank Org structures of «business units» influences «PartiesGroupings» by adding the org charting capabilities [Hierarchies :: holding, (1st); group, (2nd); division, (3rd); business area, (4th); sector, (5th); department,(6th); team (8th); support units (can be added at any hierarchy level)] // A “group” does not have to belong to a “holding” Figure 1: Basic Bank Structure (Group) UnitLocation <ul><li>location </li></ul><ul><li>court of law </li></ul><ul><li>local currency </li></ul><ul><li>getLocation() </li></ul><ul><li>getCourtOfLaw </li></ul><ul><li>getLocalCurrency() </li></ul>OrgFunction <ul><li>org function </li></ul><ul><li>getOrgFunction() </li></ul>1..* 1..* FullTimeEquivalent <ul><li>FTE amount </li></ul><ul><li>FTEAmount : int </li></ul>OrgAccountability <ul><li>accounting ID </li></ul><ul><li>AccountingID : int </li></ul>1 1 OrgRole <ul><li>org role type </li></ul><ul><li>authorization </li></ul><ul><li>getOrgType() </li></ul><ul><li>Authorization : boolean </li></ul>1 1..* OrgUnit <ul><li>org type </li></ul><ul><li>org unit ID </li></ul><ul><li>org name </li></ul><ul><li>org clearing number </li></ul><ul><li>getOrgType() </li></ul><ul><li>getOrgUnitID() </li></ul><ul><li>getOrgName() </li></ul><ul><li>getOrgClearingNumber() </li></ul><ul><li>updateStatus() </li></ul>1 Equity Capital Asset Management Bank Investment Banking Private Banking Retail Banking IT Operations Procurement Wealth Management Investment Management Corporate Banking Treasury Risk Compliance&Legal Distribution Financial Audit Pension Funds Group Division Business Area Support Units Human Resources Logistics
  16. 17. Collaboration BusinessUnit // location ()  country for orgType (holding; group; division; businessArea) and city for orgType (sector; department; team;) where orgUnit is stationed // courtOfLaw ()  court at which all legal disputes - arising from any business relation within a specific orgUnit (level branch) - are settled // localCurrency ()  official currency of that location // orgID ()  unique identifier // orgType (holding; group; division; businessArea; sector; department; team) // orgName ()  division : “Wealth Management”; businessArea : “Private Banking”; sector : “Product Management” or “Client Relations” or “Payment Processing”; department : “Credit Products” or “Core Affluent Clients” or “Standing Orders”; etc. // orgClearingNumber ()  8-digit numeric; international standard to allow transactions between banks I.e. uniquely identify banks (or routing number) // updateStatus (non-operational; operational; historical; archived;)  “non-operational” to capture unit information for newly created but not yet operating units // accountingID ()  12-digit alphanumeric for cost or profit center identification, needed for management accounting // orgFunction (administration; sales; processing; marketing; risk; humanResources; development;) // orgRoleType (management; accounting; audit; clientSales; support; ITDevelopment; businessDevelopment; purchasing;) ctd. // authorization  TRUE = this orgUnit represent the bank (i.e. allowed to engage in agreements or contract with outside parties) influences employee roles! Authorization is inherited. // FTEAmount ()  number of full time employees or equivalent of 100% job positions (e.g. FTE 10.5 = 10 full time and one part time positions or any other combination that equals 10.5) influences cost or profit center budgets and human resource management hiring capacities Appendix Remark Tabelle is read as follows: - orgFunction(administration) has orgUnitRole(management) - orgFunction(administration) has no orgUnitRole(support) «concern» BusinessUnit ctd. administration sales processing marketing risk humanResources development management accounting audit clientSales support ITDevelopment BusinessDevelopment purchasing etc. y y y y y y y y n n n n n n y y y y y y y n y n n n n n n y n n y y n n n n n n n y y y y y y y y y n n n n n n .. ... ... ... ... ... ... orgUnitRole orgUnitFunction
  17. 18. «concern» GroupingBU Appendix: Grouping Grouping is expanded with Org Chart capabilities Base BusinessUnit Base Grouping 1 Refinement in concern <grouping> domain OrgUnit enabler 1 PartyRole <ul><li>getParentID() </li></ul><ul><li>getChildID() </li></ul><ul><li>updateStatus() </li></ul><ul><li>parent ID </li></ul><ul><li>child ID </li></ul>CorporateLink <ul><li>get%ShareInvestment() </li></ul><ul><li>getCashFlow() </li></ul><ul><li>getMarketValue() </li></ul><ul><li>computeAsset() </li></ul><ul><li>computeCashFlow() </li></ul><ul><li>updateStatus() </li></ul><ul><li>% share investment </li></ul>IndividualClanLink <ul><li>getCashFlow() </li></ul><ul><li>getClanLinkType() </li></ul><ul><li>getClanLinkClass() </li></ul><ul><li>clan link type </li></ul><ul><li>clan link class </li></ul>Grouping <ul><li>getGroupID() </li></ul><ul><li>getGroupType() </li></ul><ul><li>create(Group) </li></ul><ul><li>group ID </li></ul><ul><li>group type </li></ul>UnitLocation <ul><li>location </li></ul><ul><li>court of law </li></ul><ul><li>local currency </li></ul><ul><li>getLocation() </li></ul><ul><li>getCourtOfLaw </li></ul><ul><li>getLocalCurrency() </li></ul>OrgFunction <ul><li>org function </li></ul><ul><li>getOrgFunction() </li></ul>FullTimeEquivalent <ul><li>FTE amount </li></ul><ul><li>FTEAmount : int </li></ul>OrgAccountability <ul><li>accounting ID </li></ul><ul><li>AccountingID : int </li></ul>OrgUnit <ul><li>org type </li></ul><ul><li>org unit ID </li></ul><ul><li>org name </li></ul><ul><li>org clearing number </li></ul><ul><li>getOrgType() </li></ul><ul><li>getOrgUnitID() </li></ul><ul><li>getOrgName() </li></ul><ul><li>getOrgClearingNumber() </li></ul><ul><li>updateStatus() </li></ul>OrgRole <ul><li>org role type </li></ul><ul><li>authorization </li></ul><ul><li>getOrgRoleType() </li></ul><ul><li>Authorization : boolean </li></ul>
  18. 19. Refinement in concern <Party> Collaboration PartiesPB // tradeRegistry = TRUE corporate body is registered in the trade registry  mandatory for all ( incorporated; company; limitedLiabilityCompany;) influenced by country specific regulation, in certain countries other corporate types are required to be entered in the trade registry // Numbers entered based on balance sheet // cashFlow ()  16-digit numeric // ebit ()  16-digit numeric ( E arnings B efore I ncome T ax) // openCredit ()  16-digit numeric (overall available credits from all banks) // balancingMethod (IAS, SAP)  ISA = I nternational A ccounting S tandards; SAP = S tandard A ccounting P rinciples; denotes accounting principles on which balance sheets are produced // corporateTitle (corporateTitle) base plus (chairperson; viceChairperson; boardMember; secretaryBoard;)  extension of base parties class // corporateFunction (CorporateFunction) base plus (governingBody)  extension of base parties class Base Parties CorporateRepresentative <ul><li>getCorporateTitle </li></ul><ul><li>getCorporateFunction() </li></ul><ul><li>corporate title </li></ul><ul><li>corporate function </li></ul>«concern» PartiesCB CorporateRepresentativeBoard <ul><li>_getCorporateTitle() </li></ul><ul><li>_getCorporateFunctions() </li></ul>TradeRegistry <ul><li>tradeRegistry : boolean </li></ul>BalanceSheet <ul><li>cashFlow : int </li></ul><ul><li>Ebit : int </li></ul><ul><li>openCredit : int </li></ul><ul><li>getBalancingMethod() </li></ul><ul><li>cash flow </li></ul><ul><li>ebit* </li></ul><ul><li>open credit </li></ul><ul><li>balancing method </li></ul>domain OrgUnit :: CorporateBanking enabler CorporateBody <ul><li>foundation year </li></ul><ul><li>corporate type </li></ul><ul><li>getFoundationYear() </li></ul><ul><li>getCorporateType() </li></ul>Individual <ul><li>first name </li></ul><ul><li>middle initial </li></ul><ul><li>date of birth </li></ul><ul><li>legal capacity </li></ul><ul><li>getFirstName() </li></ul><ul><li>getMiddleInitial() </li></ul><ul><li>getLegalCapacity: boolean </li></ul>Party <ul><li>party ID </li></ul><ul><li>legal form </li></ul><ul><li>name </li></ul><ul><li>domicile </li></ul><ul><li>nationality </li></ul><ul><li>getPartyID() </li></ul><ul><li>getLegalForm() </li></ul><ul><li>getName() </li></ul><ul><li>getDomicile() </li></ul><ul><li>getNationality() </li></ul><ul><li>updateState() </li></ul>
  19. 20. «concern» Address AddressBase <ul><li>address ID </li></ul><ul><li>country </li></ul><ul><li>– address type </li></ul><ul><li>– domicile </li></ul><ul><li>getAddressID() </li></ul><ul><li>getCountry() </li></ul><ul><li>– getAddressType() </li></ul><ul><li>– Domicile : boolean </li></ul>CommunicationAddress <ul><li>email address </li></ul><ul><li>web address </li></ul><ul><li>telephone number </li></ul><ul><li>mobile number </li></ul><ul><li>fax number </li></ul><ul><li>getEmailAddress() </li></ul><ul><li>getWebAddress() </li></ul><ul><li>getTelephoneNumber() </li></ul><ul><li>getMobileNumber() </li></ul><ul><li>getFaxNumber() </li></ul>PurposeAddress <ul><li>po box </li></ul><ul><li>post code </li></ul><ul><li>city </li></ul><ul><li>street name </li></ul><ul><li>street number </li></ul><ul><li>apartment number </li></ul><ul><li>POBox : boolean </li></ul><ul><li>getPostCode() </li></ul><ul><li>getCity() </li></ul><ul><li>getStreetName </li></ul><ul><li>getStreetNumber </li></ul><ul><li>getApartmentNumber </li></ul>POAddress <ul><li>_po box number </li></ul><ul><li>po post code add </li></ul><ul><li>_getPOBoxNumber() </li></ul><ul><li>POPostCodeAdd() </li></ul>Collaboration Address // addressID ()  unique identifier // addressType (purpose; po; communication;) // country (e.g. Canada; China; Germany; Greece; Switzerland; USA;)  use ISO country codes; influences // : addressingCountry :: countryFormat (e.g. placement of street number and zip-code) // business relations in domain of : unitLocation parties can maintain i.e. :: relationClass e.g. [country(Singapore), unitLocation(Switzerland)]. relationClass = mandate // productOffering if : unitLocation  country (= off-shore banking) e.g. mortgageProduct are excluded from base ProductOffering // domicile = TRUE : domicileAddress influences [: addressingAgreement : addressingPurpose = domicileAddress]  to ensure the many country specific bank secrecy laws, domicile address are protected so that no correspondence will ever be mailed to that address // if = FALSE : addressingPurpose has to be defined based on Agreement // : addressingFormat of : communicationAddress :: telephoneNumber; mobileNumber and faxNumber are influenced by : domicileAddress :: country
  20. 21. «concern» Product Collaboration Product // Products can only be offered in a domain influenced by «BusinessUnit». Banking products like accounts are sold thru business areas like Private Banking, Corporate Banking, Retail Banking; employment “products” or opportunities are offer thru business area Human Resources, etc. // productID ()  unique identifier // productClass (clientSales :: creditProduct; cashProduct; securitiesProduct)  domain driven ProductBase <ul><li>getProductID() </li></ul><ul><li>getProductClass() </li></ul><ul><li>product ID </li></ul><ul><li>product class </li></ul>
  21. 22. Refinement in concern <product> Base Product 1 orgRole 0..* products «concern» BaseProductOffer domain OrgRoleType :: ClientSales enabler CashProduct <ul><li>getCashProductType() </li></ul><ul><li>updateStatus() </li></ul><ul><li>cash product type </li></ul>CreditProduct <ul><li>getCreditProductType() </li></ul><ul><li>updateStatus() </li></ul><ul><li>credit product type </li></ul>ProductBaseCapability <ul><li>postingCapability : boolean </li></ul><ul><li>computeBalance : boolean </li></ul><ul><li>computeInterest : boolean </li></ul><ul><li>computeFees : boolean </li></ul><ul><li>setCreditFacilities : boolean </li></ul><ul><li>setCreditLimit : boolean </li></ul><ul><li>allowExcess : boolean </li></ul><ul><li>multiCurrency : boolean </li></ul><ul><li>getNoticePeriod : boolean </li></ul><ul><li>settleCapability : boolean </li></ul>ProductBaseOffer <ul><li>list(ProductBase) </li></ul>ProductBase <ul><li>getProductID() </li></ul><ul><li>getProductClass() </li></ul><ul><li>product ID </li></ul><ul><li>product class </li></ul>ProductBaseFeature <ul><li>getBaseEligibilty() </li></ul><ul><li>getCurrency() </li></ul><ul><li>getMasterCurrency() </li></ul><ul><li>getSettlementPeriod() </li></ul><ul><li>getCardType() </li></ul><ul><li>getFacilityType() </li></ul><ul><li>getAccessChannelType() </li></ul><ul><li>getPaymentType() </li></ul><ul><li>getNoticePeriod() </li></ul>Base Business Unit UnitLocation <ul><li>location </li></ul><ul><li>court of law </li></ul><ul><li>local currency </li></ul><ul><li>getLocation() </li></ul><ul><li>getCourtOfLaw </li></ul><ul><li>getLocalCurrency() </li></ul>OrgFunction <ul><li>org function </li></ul><ul><li>getOrgFunction() </li></ul>FullTimeEquivalent <ul><li>FTE amount </li></ul><ul><li>FTEAmount : int </li></ul>OrgAccountability <ul><li>accounting ID </li></ul><ul><li>AccountingID : int </li></ul>OrgUnit <ul><li>org type </li></ul><ul><li>org unit ID </li></ul><ul><li>org name </li></ul><ul><li>org clearing number </li></ul><ul><li>getOrgType() </li></ul><ul><li>getOrgUnitID() </li></ul><ul><li>getOrgName() </li></ul><ul><li>getOrgClearingNumber() </li></ul><ul><li>updateStatus() </li></ul>OrgRole <ul><li>org role type </li></ul><ul><li>authorization </li></ul><ul><li>getOrgRoleType() </li></ul><ul><li>Authorization : boolean </li></ul>Business Instance InstanceTransaction <ul><li>transaction ID </li></ul><ul><li>transaction class </li></ul><ul><li>getTransactionID() </li></ul><ul><li>getTransactionClass() </li></ul><ul><li>createRelation() </li></ul><ul><li>createAgreementConsolidation() </li></ul>
  22. 23. Collaboration BaseProductOffer This refinement leads to the abstract base product offers of the model bank in a given domain i.e. each orgRolesType respectively Offer = products (capabilities) offered to bank’s own business areas for refinement. After refinement = offering (product or services offered to markets) // list(ProductBase)  listing of all base products eligible for particular orgRole :: orgRoleType // creditProductType (moneyLoans; standByLetterOfCredit; marginOnDerivative;) // cashProductType (cash; fixedTerm; funds) // updateStatus (prototype; forSale; historical; archived) // productID ()  unique identifier //Capabilities // postingCapabilities  determines if deposits and withdrawals can be posted on account // computeBalance  determines if daily balance can be computed, regardless of computation method // computeInterest  determines if interest can be computed, regardless of interest type or computation method // computeFees  determines if fees can be computed, regardless of tee type or computation method // setCreditFacilities  determines if credit facilities can be granted on account; if = TRUE :: computeBalance = TRUE // setCreditLimit  determines if balance can be < 0; if = TRUE :: creditFacilities and :: computeBalance must be = TRUE // allowExcess  determines if balance can be < credit limit or < 0; independent of :: creditFacility and :: creditLimit; each excess has to be approved // multiCurrency  determines if deposits and withdrawals can be psoted in more than one currency // getNoticePeriod  determines if a notice period is associated // settleCapability  determines if account can be settled i.e. closed; if = TRUE ::computeBalance; :: computeInterest must be = TRUE //Features // baseEligibility  (privateBanking; corporateBanking; retailBanking; investmentBanking) // currency  (CHF; EUR; GBP; JPY; USD;) Default = localCurrency // masterCurrency  if multiCurrency = TRUE; master currency must be determined to compute account balance; requires method computeExchangeRate (deposits and withdrawals are posted in any of the defined currencies, balance only in masterCurrency) // SettlementPeriod  (none; daily; monthly; quarterly; semi-annual; annual) // NoticePeriod  (none; anytime; daily; week[1]; month[1]; months[3]; months[6];) // CardType  if :: creditFacilities = FALSE(debitCard;); if :: creditFacilities and :: setCreditLimit = TRUE (e.g. debitCard; creditCardStandard; creditCardGold; creditCardBusiness) // FacilityType  if :: creditFacility = TRUE (overdraft; loan; mortgage; securedLoan; unsecuredLoan; letterOfCredit; leasing; factoring; internal;) // AccessChannelType  (bankCounter; ATM; telephone; mail; fax; telex; internet;) Default = bankCounter // PaymentType  (directDebit; standingOrder; debitEntry; paymentOrder; accountAccountTransfer) Default = directDebit «concern» BaseProductOffer ctd.
  23. 24. Collaboration BaseProductOffer Appendix // Features of base product offer CreditProduct postingCapabilities : TRUE computeBalance : TRUE computeInterest : TRUE computeFees : TRUE setCreditFacilities : TRUE setCreditLimit : TRUE allowExcess : FALSE multiCurrency : FALSE getNoticePeriod : TRUE settleCapability : TRUE CreditProduct Currency(localCurrency) [see BusinessUnit] SettlementType(quarterly) FacilityType(moneyLoans) AccessChannelType(bankCounter) PaymentType(directDebit; standingOrder, accountTransfer) NoticePeriod(month[1]) Appendix ctd. // Capabilities of base product offer CashProduct postingCapabilities : TRUE computeBalance : TRUE computeInterest : TRUE computeFees : TRUE setCreditFacilities : FALSE setCreditLimit : TRUE allowExcess : FALSE multiCurrency : FALSE getNoticePeriod : TRUE settleCapability : TRUE CashProduct Currency(localCurrency) [see BusinessUnit] SettlementType(annual) FacilityType(none) AccessChannelType(bankCounter; ATM; mail; telephone) PaymentType(directDebit; standingOrder; debitEntry; accountTransfer) NoticePeriod(month[1]) «concern» BaseProductOffer ctd.
  24. 25. Refinement in concern <productOffer> domain OrgUnit :: Wholesale / OrgRoleType :: ClientSales enabler Base Business Unit Product Offer 1 unit CardAccess <ul><li>getCardType() </li></ul><ul><li>getCardNumber : int </li></ul><ul><li>getContraAccountNumber() </li></ul><ul><li>updateStatus() </li></ul><ul><li>card type </li></ul><ul><li>card number </li></ul><ul><li>contra account number </li></ul>1 contra number 1 contra number «concern» WholeSaleProductOffer CashProduct <ul><li>getCashProductType() </li></ul><ul><li>updateStatus() </li></ul><ul><li>cash product type </li></ul>CreditProduct <ul><li>getCreditProductType() </li></ul><ul><li>updateStatus() </li></ul><ul><li>credit product type </li></ul>ProductBase <ul><li>getProductID() </li></ul><ul><li>getProductClass() </li></ul><ul><li>product ID </li></ul><ul><li>product class </li></ul>ProductBaseOffer <ul><li>list(ProductBase) </li></ul>ProductBase Capability <ul><li>postingCapability : boolean </li></ul><ul><li>computeBalance : boolean </li></ul><ul><li>computeInterest : boolean </li></ul><ul><li>computeFees : boolean </li></ul><ul><li>setCreditFacilities : boolean </li></ul><ul><li>setCreditLimit : boolean </li></ul><ul><li>allowExcess : boolean </li></ul><ul><li>multiCurrency : boolean </li></ul><ul><li>getNoticePeriod : boolean </li></ul><ul><li>settleCapability : boolean </li></ul>ProductBase Feature <ul><li>getEligibilty() </li></ul><ul><li>getCurrency() </li></ul><ul><li>getMasterCurrency() </li></ul><ul><li>getSettlementPeriod() </li></ul><ul><li>getCardType() </li></ul><ul><li>getFacilityType() </li></ul><ul><li>getAccessChannelType() </li></ul><ul><li>getPaymentType() </li></ul><ul><li>getNoticePeriod() </li></ul>WholeSaleSecuritiesProduct <ul><li>getSecuritiesProductClass() </li></ul><ul><li>updateStatus() </li></ul><ul><li>securities product class </li></ul>WholeSaleProductBaseCapability <ul><li>Collateralization : boolean </li></ul>WholeSaleProductBaseFeature <ul><li>getTitlesClass() </li></ul><ul><li>getEligibilityType() </li></ul>UnitLocation <ul><li>location </li></ul><ul><li>court of law </li></ul><ul><li>local currency </li></ul><ul><li>getLocation() </li></ul><ul><li>getCourtOfLaw </li></ul><ul><li>getLocalCurrency() </li></ul>OrgFunction <ul><li>org function </li></ul><ul><li>getOrgFunction() </li></ul>FullTimeEquivalent <ul><li>FTE amount </li></ul><ul><li>FTEAmount : int </li></ul>OrgAccountability <ul><li>accounting ID </li></ul><ul><li>AccountingID : int </li></ul>OrgUnit <ul><li>org type </li></ul><ul><li>org unit ID </li></ul><ul><li>org name </li></ul><ul><li>org clearing number </li></ul><ul><li>getOrgType() </li></ul><ul><li>getOrgUnitID() </li></ul><ul><li>getOrgName() </li></ul><ul><li>getOrgClearingNumber() </li></ul><ul><li>updateStatus() </li></ul>OrgRole <ul><li>org role type </li></ul><ul><li>authorization </li></ul><ul><li>getOrgRoleType() </li></ul><ul><li>Authorization : boolean </li></ul>
  25. 26. Collaboration WholesaleProductOffer This refinement of BaseProductOffer leads to the WholesaleProductOffer. The product assembly tool is for the : orgRoleType :: productManagers exclusively. // securitiesProductClass (manadatedAccount; nonMandatedAccount) Remark mandatedAccount requires mandate management agreement i.e. the advisor receives full authority to manage account in behalf of client nonMandateAccount the account is managed by client himself // updateStatus (non-operational; operational; in-closing; closed; historical; archived;) // titlesClass (exchangeTraded; overTheCounterTraded; commodities) Remark // exchangeTraded: Single products like titlesType (shares; bonds; foreignExchange; tBills; ) // overTheCounterTraded: Structured products like titlesType (derivatives; options;) // commodities like titlesType (preciousMetal; food; oil;)] // eligibilityType (privateBanking, pb; corporateBanking, cb; retailBanking, rb; investmentBanking, ib;) // cardType (credit; debit) // cardNumber  16-digit numeric number // contraAccountNumber  8-digit alphanumeric number (of debited account) // collateralization  determines if assets of securities account can be pledged against a or more loans «concern» WholeSaleProductOffer ctd.
  26. 27. Collaboration ProductOffer Appendix // Features of securities account in domain of Private Banking PBSecuritiesAccount see GroupingAccount // Capabilities of securities account in domain of Private Banking PBSecuritiesAccount see GroupingAccount «concern» WholeSaleProductOffer ctd.
  27. 28. «concern» GroupingAccount SeniorAccount <ul><li>getSeniorAccountID() </li></ul><ul><li>getSeniorAccountNumber() </li></ul><ul><li>getSeniorAccountCurrency() </li></ul><ul><li>getSeniorAcctMarketValueParent() </li></ul><ul><li>getSeniorAcctLendingValueParent() </li></ul><ul><li>senior account number </li></ul><ul><li>senior account currency </li></ul><ul><li>senior acct market value </li></ul><ul><li>senior acct lending value </li></ul>SubordinateAccount <ul><li>getNumberOfTitle() </li></ul><ul><li>getTitle() </li></ul><ul><li>getMarketValue() </li></ul><ul><li>getLendingValue() </li></ul><ul><li>number of title </li></ul><ul><li>titles </li></ul><ul><li>market value </li></ul><ul><li>lending value </li></ul>GroupingAccountBase <ul><li>GroupAccountID : int </li></ul><ul><li>getGroupAccountType() </li></ul><ul><li>updateStatus() </li></ul><ul><li>group account ID </li></ul><ul><li>group account type </li></ul>1 senior AccountRole <ul><li>SeniorID : int </li></ul><ul><li>SubordinateID : int </li></ul><ul><li>senior ID </li></ul><ul><li>subordinate ID </li></ul>1..* subordinates Collaboration GroupingAccount Securities account are grouped accounts, consisting of one senior account (securities account) and of 1 or more subordinate accounts. Each subordinate account holds one specific titles. Within the senior or securities account all subordinate accounts are consolidated. Only senior account contents are visible to clients. // groupAccountType (securitiesAccount) // updateStatus (nonOperational; operational; blocked; inClosing; closed; historical; archived;) // seniorID ()  unique identifier // subordinateID ()  unique identifier // seniorAccountNumber () 8-digit alphanumeric number // seniorAccountCurrency (localCurrency) // seniorAccountMarketValue ()  Computation :: computeSeniorAccountMarketVale // seniorAccountLendingValue ()  Computation :: computeSeniorAccountLendingVale // numberOfTitle ()16-digit numeric // title ()  specific title book within subordinate // marketValue ()  Computation :: computeMarketValue // lendingValue ()  Computation :: computeLendingValue
  28. 29. Product Offer Refinement in concern <productOffering> 0..* products 1 product 1 business area CashProduct <ul><li>getCashProductType() </li></ul><ul><li>updateStatus() </li></ul><ul><li>cash product type </li></ul>ProductBase <ul><li>getProductID() </li></ul><ul><li>getProductClass() </li></ul><ul><li>product ID </li></ul><ul><li>product class </li></ul>ProductBase Capability <ul><li>postingCapability : boolean </li></ul><ul><li>computeBalance : boolean </li></ul><ul><li>computeInterest : boolean </li></ul><ul><li>computeFees : boolean </li></ul><ul><li>setCreditFacilities : boolean </li></ul><ul><li>setCreditLimit : boolean </li></ul><ul><li>allowExcess : boolean </li></ul><ul><li>multiCurrency : boolean </li></ul><ul><li>getNoticePeriod : boolean </li></ul><ul><li>settleCapability : boolean </li></ul>WholeSaleProductBaseCapability <ul><li>Collateralization : boolean </li></ul>WholeSaleProductBaseFeature <ul><li>getTitles() </li></ul><ul><li>getEligibilityType() </li></ul>WholeSaleSecuritiesProduct <ul><li>getSecuritiesProductClass() </li></ul><ul><li>updateStatus() </li></ul><ul><li>securities product class </li></ul>ProductBaseOffer <ul><li>catalogueProductBase() </li></ul>CardAccess <ul><li>getCardType() </li></ul><ul><li>getCardNumber : int </li></ul><ul><li>getContraAccountNumber() </li></ul><ul><li>updateStatus() </li></ul><ul><li>card type </li></ul><ul><li>card number </li></ul><ul><li>contra account number </li></ul>CreditProduct <ul><li>getCreditProductType() </li></ul><ul><li>updateStatus() </li></ul><ul><li>credit product type </li></ul>ProductBase Feature <ul><li>getBaseEligibility() </li></ul><ul><li>getCurrency() </li></ul><ul><li>getMasterCurrency() </li></ul><ul><li>getSettlementPeriod() </li></ul><ul><li>getCardType() </li></ul><ul><li>getFacilityType() </li></ul><ul><li>getAccessChannelType() </li></ul><ul><li>getPaymentType() </li></ul><ul><li>getNoticePeriod() </li></ul>domain OrgUnit :: PrivateBanking / OrgRoleType :: ClientSales enabler «concern» PBProductOffering ctd. PBBaseModalityRange <ul><li>getPBIntersetReceivedRange() </li></ul><ul><li>getPBInterestChargedRange() </li></ul><ul><li>getPBManagementFeesRange() </li></ul><ul><li>PB interest received range </li></ul><ul><li>PB interest charged range </li></ul><ul><li>PB management fees range </li></ul>PBCreditAccount <ul><li>getPBCreditAccountType() </li></ul>PBCashAccount <ul><li>getPBCashAccountType() </li></ul>PBSecuritiesAccount <ul><li>getPBSecuritiesAccountType() </li></ul>PBProductBaseFeature <ul><li>getSegmentEligibilty() </li></ul>Base Business Unit UnitLocation <ul><li>location </li></ul><ul><li>court of law </li></ul><ul><li>local currency </li></ul><ul><li>getLocation() </li></ul><ul><li>getCourtOfLaw </li></ul><ul><li>getLocalCurrency() </li></ul>OrgFunction <ul><li>org function </li></ul><ul><li>getOrgFunction() </li></ul>FullTimeEquivalent <ul><li>FTE amount </li></ul><ul><li>FTEAmount : int </li></ul>OrgAccountability <ul><li>accounting ID </li></ul><ul><li>AccountingID : int </li></ul>OrgUnit <ul><li>org type </li></ul><ul><li>org unit ID </li></ul><ul><li>org name </li></ul><ul><li>org clearing number </li></ul><ul><li>getOrgType() </li></ul><ul><li>getOrgUnitID() </li></ul><ul><li>getOrgName() </li></ul><ul><li>getOrgClearingNumber() </li></ul><ul><li>updateStatus() </li></ul>OrgRole <ul><li>org role type </li></ul><ul><li>authorization </li></ul><ul><li>getOrgRoleType() </li></ul><ul><li>Authorization : boolean </li></ul>Business Instance InstanceTransaction <ul><li>transaction ID </li></ul><ul><li>transaction class </li></ul><ul><li>getTransactionID() </li></ul><ul><li>getTransactionClass() </li></ul><ul><li>createRelation() </li></ul><ul><li>createAgreementConsolidation() </li></ul>PBProductOffering <ul><li>cataloguePBProductOffering() </li></ul>
  29. 30. Refinement in concern <productOffering> domain OrgUnit :: PrivateBanking / OrgRoleType :: ClientSales enabler «concern» PBProductOffering ctd. Collaboration PBProductOffering This refinement leads to the products the model bank offers in a given domain of orgUnit and orgRolesType to its clients. Offer = products (capabilities) offered to bank’s own business areas for refinement. After refinement = offering (product or services offered to markets) // PBProductOfferings ()  contains all products Private Banking is offering // PBSecuritiesAccountType (PBETDAccount; PBOTCAccount; PBPreciousMetalsAccount;) // PBCreditAccountType (PBLombardAccount; PBMortgageAccount;) // PBCashAccountType (PBSavingsAccount; PBCurrentAccount; PBInvestmentAccount;) // collateralization  determines if assets of securities account can be pledged against a or more loans // PBInterestReceivedRange (e.g. 3.250% - 3.500%)  if : productBaseCapability :: computeInterest = TRUE each account has segment and location specific ranges // PBInterestChargedRange (e.g. 4.125% - 4.875%)  if : productBaseCapability :: computeInterest = TRUE each account has segment specific and location ranges // PBManagementFeesRange (e.g. 2.50 - 5.00 USD)  if : productBaseCapability :: computeFees = TRUE each account has segment and location specific ranges; always in : unitLocation :: localCurrency
  30. 31. Collaboration PBProductOffering Appendix // Capabilities of senior securities account in domain of Private Banking PBSecuritiesAccount(Senior) collaterization : TRUE postingCapabilities : TRUE computeBalance : TRUE computeInterest : FALSE computeFees : TRUE setCreditFacilities : FALSE setCreditLimit : FALSE allowExcess : FALSE multiCurrency : FALSE getNoticePeriod : TRUE settleCapability : TRUE // Features of senior securities account in domain of Private Banking and Corporate Banking PBSecuritiesAccount(Senior) Currency(localCurrency;) [see BusinessUnit] SettlementType(monthly; semi-annual; annual;) CardType(none;) FacilityType(none;) AccessChannelType(telephone; mail; bankCounter;) PaymentType(debitEntry; paymentOrder; accountAccountTransfer;) NoticePeriod(anytime;) TitlesType(all;) EligibilityType(pb; cb;) Appendix // Capabilities of subordinate securities account in domain of Private Banking PBSecuritiesAccount(Subordinate) collaterization : FALSE postingCapabilities : TRUE computeBalance : TRUE computeInterest : FALSE computeFees : FALSE setCreditFacilities : FALSE setCreditLimit : FALSE allowExcess : FALSE multiCurrency : FALSE getNoticePeriod : FALSE settleCapability : FALSE // Features of subordinate securities account in domain of Private Banking and Corporate Banking PBSecuritiesAccount(Subordnate) Currency(none;) [see BusinessUnit] SettlementType(none;) CardType(none;) FacilityType(none;) AccessChannelType(all;) PaymentType(debitEntry; paymentOrder; accountAccountTransfer;) NoticePeriod(none;) TitlesType(all;) EligibilityType(pb; cb;) «concern» PBProductOffering ctd.
  31. 32. «concern» PBProductOffering ctd. Collaboration PBProductOffering Appendix // Capabilities of creditAccount :: mortgageAccount in domain of Private Banking MortgageAccount postingCapabilities : TRUE computeBalance : TRUE computeInterest : TRUE computeFees : TRUE setCreditFacilities : TRUE setCreditLimit : TRUE allowExcess : FALSE multiCurrency : FALSE getNoticePeriod : TRUE settleCapability : TRUE // Features of creditAccount :: mortgageAccount in domain of Private Banking MortgageAccount Currency(localCurrency) [see BusinessUnit] SettlementType(annual) FacilityType(mortgage) AccessChannelType(bankCounter; mail) PaymentType(debitEntry; order; accountTransfer) NoticePeriod(month[6])
  32. 33. Refinement in domain of <PB/CBProductOffering> 0..* products 1 product 1 business area domain OrgUnit :: CorporateBanking / OrgRoleType :: ClientSales enabler «concern» CBProductOffering CBBaseModalityRange <ul><li>getCBIntersetReceivedRange() </li></ul><ul><li>getCBInterestChargedRange() </li></ul><ul><li>getCBManagementFeesRange() </li></ul><ul><li>CB interest received range </li></ul><ul><li>CB interest charged range </li></ul><ul><li>CB management fees range </li></ul>CBCreditAccount <ul><li>getCBCreditAccountType() </li></ul>CBCashAccount <ul><li>getCBCashAccountType() </li></ul>CBSecuritiesAccount <ul><li>getCBSecuritiesAccountType() </li></ul>CBProductBaseFeature <ul><li>getSegmentEligibilty() </li></ul>Product Offer CashProduct <ul><li>getCashProductType() </li></ul><ul><li>updateStatus() </li></ul><ul><li>cash product type </li></ul>ProductBase <ul><li>getProductID() </li></ul><ul><li>getProductClass() </li></ul><ul><li>product ID </li></ul><ul><li>product class </li></ul>ProductBase Capability <ul><li>postingCapability : boolean </li></ul><ul><li>computeBalance : boolean </li></ul><ul><li>computeInterest : boolean </li></ul><ul><li>computeFees : boolean </li></ul><ul><li>setCreditFacilities : boolean </li></ul><ul><li>setCreditLimit : boolean </li></ul><ul><li>allowExcess : boolean </li></ul><ul><li>multiCurrency : boolean </li></ul><ul><li>getNoticePeriod : boolean </li></ul><ul><li>settleCapability : boolean </li></ul>WholeSaleProductBaseCapability <ul><li>Collateralization : boolean </li></ul>WholeSaleProductBaseFeature <ul><li>getTitles() </li></ul><ul><li>getEligibilityType() </li></ul>ProductBaseOffer <ul><li>catalogueProductBase() </li></ul>CardAccess <ul><li>getCardType() </li></ul><ul><li>getCardNumber : int </li></ul><ul><li>getContraAccountNumber() </li></ul><ul><li>updateStatus() </li></ul><ul><li>card type </li></ul><ul><li>card number </li></ul><ul><li>contra account number </li></ul>CreditProduct <ul><li>getCreditProductType() </li></ul><ul><li>updateStatus() </li></ul><ul><li>credit product type </li></ul>ProductBase Feature <ul><li>getBaseEligibility() </li></ul><ul><li>getCurrency() </li></ul><ul><li>getMasterCurrency() </li></ul><ul><li>getSettlementPeriod() </li></ul><ul><li>getCardType() </li></ul><ul><li>getFacilityType() </li></ul><ul><li>getAccessChannelType() </li></ul><ul><li>getPaymentType() </li></ul><ul><li>getNoticePeriod() </li></ul>Base Business Unit UnitLocation <ul><li>location </li></ul><ul><li>court of law </li></ul><ul><li>local currency </li></ul><ul><li>getLocation() </li></ul><ul><li>getCourtOfLaw </li></ul><ul><li>getLocalCurrency() </li></ul>OrgFunction <ul><li>org function </li></ul><ul><li>getOrgFunction() </li></ul>FullTimeEquivalent <ul><li>FTE amount </li></ul><ul><li>FTEAmount : int </li></ul>OrgAccountability <ul><li>accounting ID </li></ul><ul><li>AccountingID : int </li></ul>OrgUnit <ul><li>org type </li></ul><ul><li>org unit ID </li></ul><ul><li>org name </li></ul><ul><li>org clearing number </li></ul><ul><li>getOrgType() </li></ul><ul><li>getOrgUnitID() </li></ul><ul><li>getOrgName() </li></ul><ul><li>getOrgClearingNumber() </li></ul><ul><li>updateStatus() </li></ul>OrgRole <ul><li>org role type </li></ul><ul><li>authorization </li></ul><ul><li>getOrgRoleType() </li></ul><ul><li>Authorization : boolean </li></ul>PB/CBSecuritiesProduct <ul><li>getSecuritiesProductClass() </li></ul><ul><li>updateStatus() </li></ul><ul><li>securities product class </li></ul>Business Instance InstanceTransaction <ul><li>transaction ID </li></ul><ul><li>transaction class </li></ul><ul><li>getTransactionID() </li></ul><ul><li>getTransactionClass() </li></ul><ul><li>createRelation() </li></ul><ul><li>createAgreementConsolidation() </li></ul>CBProductOffering <ul><li>_catalogueCBProductOffering() </li></ul>
  33. 34. Collaboration CBProductOffering This refinement leads to the products the model bank offers in a given domain of orgUnit and orgRolesType to its clients. Offer = products (capabilities) offered to bank’s own business areas for refinement. After refinement = offering (product or services offered to markets) // CBProductOfferings ()  contains all products Corporate Banking is offering // CBSecuritiesAccountType (CBETDAccount; CBOTCAccount; CBPreciousMetalsAccount;) // CBCreditAccountType (CBSecuredLoanAccount; CBUnsecuredLoanAccout; CBFixedTermLoanAccount; ; CBLeasingAccount; CBFatoringAccount; CBMortgageAccount;) // CBCashAccountType (CBsavingsAccount; CBCurrentAccount; CBInvestmentAccount;) // collateralization  determines if assets of securities account can be pledged against a or more loans // CBInterestReceivedRange (e.g. 3.250% - 3.500%)  if : productBaseCapability :: computeInterest = TRUE each account has segment and location specific ranges // CBInterestChargedRange (e.g. 4.125% - 4.875%)  if : productBaseCapability :: computeInterest = TRUE each account has segment specific and location ranges // CBManagementFeesRange (e.g. 2.50 - 5.00 USD)  if : productBaseCapability :: computeFees = TRUE each account has segment and location specific ranges; always in : unitLocation :: localCurrency «concern» CBProductOffering ctd.
  34. 35. Collaboration CBProductOffering Appendix // Capabilities of credit account in domain of Corporate Banking CBCreditAccount postingCapabilities : TRUE computeBalance : TRUE computeInterest : TRUE computeFees : TRUE setCreditFacilities : TRUE setCreditLimit : TRUE allowExcess : TRUE multiCurrency : TRUE getNoticePeriod : TRUE settleCapability : TRUE // Features of credit account in domain of Corporate Banking CBCreditAccount Currency(all;) SettlementType(all;) CardType(creditCardBusiness;) FacilityType(all;) AccessChannelType(telephone; mail; bankCounter; fax; telex;) PaymentType(telephone; order;) NoticePeriod(month[1]; [3]:) «concern» CBProductOffering ctd. Appendix // Capabilities of creditAccount :: mortgageAccount in domain of Corporate Banking MortgageAccount postingCapabilities : TRUE computeBalance : TRUE computeInterest : TRUE computeFees : TRUE setCreditFacilities : TRUE setCreditLimit : TRUE allowExcess : FALSE multiCurrency : TRUE (*) getNoticePeriod : TRUE settleCapability : TRUE // Features of creditAccount :: mortgageAccount in domain of Corporate Banking MortgageAccount Currency(localCurrency;) [see BusinessUnit] SettlementType(annual;) FacilityType(mortgage;) AccessChannelType(bankCounter; mail;) PaymentType(debitEntry; order; accountTransfer;) NoticePeriod(month[1]; [3]; [6];) (* e.g. having real estate in USA and mortgage debt in USD but have the account balance in CHF for balance sheet purposes.)
  35. 36. Base Product Offer domain Refinement in concern <ProductOffer> CashProduct <ul><li>getCashProductType() </li></ul><ul><li>updateStatus() </li></ul><ul><li>cash product type </li></ul>ProductBase <ul><li>getProductID() </li></ul><ul><li>getProductClass() </li></ul><ul><li>product ID </li></ul><ul><li>product class </li></ul>ProductBase Capability <ul><li>postingCapability : boolean </li></ul><ul><li>computeBalance : boolean </li></ul><ul><li>computeInterest : boolean </li></ul><ul><li>computeFees : boolean </li></ul><ul><li>setCreditFacilities : boolean </li></ul><ul><li>setCreditLimit : boolean </li></ul><ul><li>allowExcess : boolean </li></ul><ul><li>multiCurrency : boolean </li></ul><ul><li>getNoticePeriod : boolean </li></ul><ul><li>settleCapability : boolean </li></ul>PBProductBaseCapability <ul><li>Collateralization : boolean </li></ul>PB/CBProductBaseFeature <ul><li>getTitles() </li></ul><ul><li>getEligibilityType() </li></ul>CreditProduct <ul><li>getCreditProductType() </li></ul><ul><li>updateStatus() </li></ul><ul><li>credit product type </li></ul>ProductBase Feature <ul><li>getBaseEligibility() </li></ul><ul><li>getCurrency() </li></ul><ul><li>getMasterCurrency() </li></ul><ul><li>getSettlementPeriod() </li></ul><ul><li>getCardType() </li></ul><ul><li>getFacilityType() </li></ul><ul><li>getAccessChannelType() </li></ul><ul><li>getPaymentType() </li></ul><ul><li>getNoticePeriod() </li></ul>PB/CBSecuritiesProduct <ul><li>getSecuritiesProductClass() </li></ul><ul><li>updateStatus() </li></ul><ul><li>securities product class </li></ul>Base Business Unit UnitLocation <ul><li>location </li></ul><ul><li>court of law </li></ul><ul><li>local currency </li></ul><ul><li>getLocation() </li></ul><ul><li>getCourtOfLaw </li></ul><ul><li>getLocalCurrency() </li></ul>OrgFunction <ul><li>org function </li></ul><ul><li>getOrgFunction() </li></ul>FullTimeEquivalent <ul><li>FTE amount </li></ul><ul><li>FTEAmount : int </li></ul>OrgAccountability <ul><li>accounting ID </li></ul><ul><li>AccountingID : int </li></ul>OrgUnit <ul><li>org type </li></ul><ul><li>org unit ID </li></ul><ul><li>org name </li></ul><ul><li>org clearing number </li></ul><ul><li>getOrgType() </li></ul><ul><li>getOrgUnitID() </li></ul><ul><li>getOrgName() </li></ul><ul><li>getOrgClearingNumber() </li></ul><ul><li>updateStatus() </li></ul>OrgRole <ul><li>org role type </li></ul><ul><li>authorization </li></ul><ul><li>getOrgRoleType() </li></ul><ul><li>Authorization : boolean </li></ul>domain OrgUnit :: Bank enabler «concern» InternalProductOffer InternalCreditAccount <ul><li>getInternalAssetAccounType() </li></ul>InternalCashAccount <ul><li>getInternalLiabilityAccountType() </li></ul>InternalSecuritiesAccount <ul><li>getTitlesType() </li></ul><ul><li>getInternalSecuritiesAccountType() </li></ul><ul><li>titles type </li></ul>
  36. 37. Collaboration InternalProductOffering Remark: // Internal accounts are used to consolidate the bank. Positive client account balances are posted in liabilities accounts (because these are liabilities of the bank) and negative client account balances are posted in asset accounts (because these are assets of the bank). // Separate internal accounts are kept for interests and fees charged to clients (earnings = credits) and interest received by client (expenses = debit). These accounts are consolidated into a profitLossAccount (see groupingAccount) // titlesType (shares; bonds; foreignExchange; tBills; derivatives; options; preciousMetal; food; oil; ) Remark // exchangeTraded = (shares; bonds; foreignExchange; tBills; ) // overTheCounterTraded = titlesType (derivatives; options;) // commodities = (preciousMetal; food; oil;) // preciousMetal (platinum; gold; silver) // food (wheat; coffee; soy; porkBellies;) Appendix ctd. // Capabilities of securities account in domain of Private Banking InternalSecuritiesAccount collaterization : FALSE postingCapabilities : TRUE computeBalance : TRUE computeInterest : FALSE computeFees : FALSE setCreditFacilities : FALSE setCreditLimit : FALSE allowExcess : FALSE multiCurrency : FALSE getNoticePeriod : FALSE settleCapability : FALSE // Features of securities account in Bank InternalSecuritiesAccount Currency(none;) [see BusinessUnit] SettlementType(none;) CardType(none;) FacilityType(none;) AccessChannelType(none;) PaymentType(none;) NoticePeriod(none;) TitlesType(all;) EligibilityType(internal;) «concern» InternalProductOffer ctd.
  37. 38. Collaboration InternalProductOffer Appendix // Capabilities of credit account in domain of Bank InternalCreditAccount postingCapabilities : TRUE computeBalance : TRUE computeInterest : FALSE computeFees : FALSE setCreditFacilities : TRUE setCreditLimit : TRUE allowExcess : FALSE multiCurrency : FALSE getNoticePeriod : FALSE settleCapability : TRUE // Features of credit account in domain of Bank InternalCreditAccount Currency(all;) SettlementType(anytime;) CardType(none;) FacilityType(internal;) AccessChannelType(none;) PaymentType(none;) NoticePeriod(none;) Appendix ctd. // Capabilities of cash account in domain of Bank InternalCashAccount postingCapabilities : TRUE computeBalance : TRUE computeInterest : FALSE computeFees : FALSE setCreditFacilities : FALSE setCreditLimit : FALSE allowExcess : FALSE multiCurrency : FALSE getNoticePeriod : FALSE settleCapability : TRUE // Features of cash account in domain of Bank InternalCashAccount Currency(all;) SettlementType(anytime;) CardType(none;) FacilityType(internal;) AccessChannelType(none;) PaymentType(none;) NoticePeriod(none;) «concern» InternalProductOffer ctd.
  38. 39. Collaboration BusinessRelationship // RelationClass (mandate; thirdParty; employee; counterparty; supplier;) // Role : relationClass(mandate) = role(client; prospectClient;) relationClass(thirdParty) = role(authorizedParty; beneficiary;) relationClass(employee) = role(executive; director; officer;) relationClass(counterparty) = role(broker; exchange; insurer;) relationClass(supplier) = role ( technologyProvider; officeSupplyProvider;) Remarks // ThirdParties do not need an own relationship with the bank, they are empowered by a client to represent him or her as authorizedParty, or are beneficiary (asset holder or beneficial owner) who are represented by a lawyer or trustee, who must declare himself as non-beneficial owner. ThirdParty representation is only possible in connection with Mandates. // Third parties and employees are always individuals. Counterparty and supplier are always corporate bodies // updateStatus (nonOperational; operational; historical; archived) // RelationshipType ( NamedParty; NumberedParty; JointNamedParty; AssociatedNamedParty) // Legal requirements require the capturing off specific information by all relationshipType(s). But by NumberedParty a number instead of a name and address will appear on all interfaces (e.g. screens, mailings, documents). JointNamedParty and AssociatedNamedParty consist of at least two distinct individuals. // SegmentationType is influenced by business unit : r etailBanking (youth; student; adult; senior;) = basic market segmentation; age or need driven : privateBanking(affluent; highNetWorth) = asset driven segmentation : corporateBanking(local; regional; national; international;) = business driven segmentation // RelationshipPortfolio : Each relationClass has its specific portfolioNumber algorithm (e.g. mandate 10-digit numeric number; thirdParty 10-digit alphanumeric number). Each business relation has a unique portfolioNumber. 1..* 1 Rule: Per branch (orgUnit) there is only one portfolioNumber per relationClass permitted, «concern» Business Relationship Relationship <ul><li>relationship type </li></ul><ul><li>getRelationshipType() </li></ul>Relation <ul><li>– relation class </li></ul><ul><li>role </li></ul><ul><li>– getRelationClass() </li></ul><ul><li>getRole() </li></ul><ul><li>updateStatus </li></ul>Segmentation <ul><li>segmentation type </li></ul><ul><li>getSegmentationType() </li></ul>RelationshipPortfolio <ul><li>portfolio number </li></ul><ul><li>getPortfolioNumber() </li></ul>
  39. 40. one geographic and judicial domain (= country) «concern» Business Relationship ctd. : RelationClass : Employment : RelationClass : Mandate Party A (indiv or corporate) BusinessRelation 1 Portfolio 1.1 Portfolio 1.2 Portfolio 1.3 Account 1.1.1 Account 1.1.2 Account 1.1.3 Account 1.1.4 Account 1.2.1 Account 2.1.2 Account 1.3.1 BusinessRelation 2 Portfolio 2.1 Account 2.1.1 BusinessRelation 3 Portfolio 3.1 Account 3.1.1 fullTime 1 clearingNumber portfolioNumber accountNumber AGREEMENTNUMBER CONTRACTNUMBER Party B (indiv) : RelationClass : Mandate : RelationClass : ThirdParty Due to Party B relationClass authorized to all associated portfolios of BR1 and associated accounts Has no own business relation but is associated to BR1 Each Party : Individual can only have one RelationClass : Employment. Portfolio = orgUnit or branch respectively; fullTime = 100% FTE; if partTime then >1 account but FTE  100%. BusinessRelation 1 Portfolio 1.1 Account 1.1.1 Party C (indiv) : RelationClass : ThirdParty Party C authorized to all associated accounts of P1.1 However Party A not authorized to access any of Party C’s relations
  40. 41. <ul><li>Collaboration Agreement </li></ul><ul><li>// The bank has separate agreements for every business relationship. An agreement is in effect after an offered product (e.g. bank product, employment) is accepted or consolidated by a party either in verbal or written form. </li></ul><ul><li>// Every business relation requires the opening of at least one agreement class specific account. </li></ul><ul><li>// Third parties either represent (role : authorized person) the agreement parties or enter (role : trustee) into a business relations in the name of another individual (role : beneficiary). </li></ul><ul><li>// For internal accounts a logical agreement will be consolidated </li></ul><ul><li>// AgreementClass (bankProduct; employment; procurement;) </li></ul><ul><li>// AgreementForm (unilateralAgreement; bilateralAgreement; internal;) </li></ul><ul><li>With unilateralAgreement no counterparty consolidation (acceptance) is needed (e.g. General Terms & Conditions) </li></ul><ul><li>// AgreementType (generalTerms&Conditions; agreementCashProduct; agreementCreditProduct; agreementSecuritiesProduct) </li></ul><ul><li>Remarks: </li></ul><ul><li>All subsets of <AgreementBase> are abstract and contain text templates. Specific templates are needed to generate a specific agreement forms. Agreement parameters are hold by «Agreement». </li></ul>1..* 0..* «concern» Agreement AgreementCreditProd AgreementCashProd AgreementSecuritiesProd AgreementPaymentProd AgreementAccessRights AgreementCardAccess GeneralTerms&Conditions AgreementBase <ul><li>getAgreementForm() </li></ul><ul><li>getAgreementType() </li></ul><ul><li>getIssueDate : date </li></ul><ul><li>agreement form </li></ul><ul><li>agreement type </li></ul><ul><li>issue date </li></ul>AgreementCorrespondence Agreement (logical container) GeneralTerms&Conditions ProductAgreement (general agreement) Contract (formal agreement) 1 0..* 1..* 1 1..*
  41. 42. Collaboration AgreementConsolidation // offerID ()  unique identifier // offerDate  date at which product offering was made // agreementNumber () 16-digit alphanumeric  inherited from : orgUnit :: clearingNumber; : relationshipPortfolio :: portfolioNumber and : accountBase :: accountNumber (see next slide) // agreementDate  date at which offer was accepted (offerDate  agreementDate) // updateStatus (nonOperational; operational; inClosing; closed; historical; archieved) // contractID ()  unique identifier // contractDate  date at which offer was accepted (agreementDate  contractDate) // contractNumber () 22-digit alphanumeric  inherited from : orgUnit :: clearingNumber; : relationshipPortfolio :: portfolioNumber and : accountBase :: accountNumber (see next slide) // contractType (mandate; thirdParty; counterparty; supplier;) // updateStatus (nonOperational; operational; inClosing; closed; historical; archieved) // contractBase Status if updateStatus(agreementBase) = operational updateStatus(contractBase) = nonOperational; or operational; or inClosing; or closed; or historical; or archieved if updateStatus(agreementBase)  operational updateStatus(contractBase) = updateStatus(agreementBase) 1 0..* «concern» AgreementConsolidation AgreementConsolidationBase <ul><li>getOfferID() </li></ul><ul><li>getOfferDate : date </li></ul><ul><li>getAgreementNumber() </li></ul><ul><li>getAgreementDate : date </li></ul><ul><li>updateStatus() </li></ul><ul><li>offer ID </li></ul><ul><li>offer date </li></ul><ul><li>agreement number </li></ul><ul><li>agreement date </li></ul>ContractBase <ul><li>getContractID() </li></ul><ul><li>getContractDate : date </li></ul><ul><li>getContractNumber() </li></ul><ul><li>getContractType() </li></ul><ul><li>updateStatus() </li></ul><ul><li>contract ID </li></ul><ul><li>contract date </li></ul><ul><li>contract number </li></ul><ul><li>contract type </li></ul>
  42. 43. ContractNumber 1 number (agreementNumber) per relationship product account number (contractNumber) known to client for deposit and withdrawal purposes Base Business Relation Base Org Unit Base Account Relation <ul><li>– relation class </li></ul><ul><li>role </li></ul><ul><li>– getRelationClass() </li></ul><ul><li>getRole() </li></ul>Relationship <ul><li>relationship type </li></ul><ul><li>getRelationshipType() </li></ul>Segmentation <ul><li>segmentation type </li></ul><ul><li>getSegmentationType() </li></ul>RelationshipPortfolio <ul><li>portfolio number </li></ul><ul><li>getPortfolioNumber() </li></ul>UnitLocation <ul><li>location </li></ul><ul><li>court of law </li></ul><ul><li>local currency </li></ul><ul><li>getLocation() </li></ul><ul><li>getCourtOfLaw </li></ul><ul><li>getLocalCurrency() </li></ul>OrgFunction <ul><li>org function </li></ul><ul><li>getOrgFunction() </li></ul>FullTimeEquivalent <ul><li>FTE amount </li></ul><ul><li>FTEAmount : int </li></ul>OrgAccountability <ul><li>accounting ID </li></ul><ul><li>AccountingID : int </li></ul>OrgUnit <ul><li>org type </li></ul><ul><li>org unit ID </li></ul><ul><li>org name </li></ul><ul><li>org clearing number </li></ul><ul><li>getOrgType() </li></ul><ul><li>getOrgUnitID() </li></ul><ul><li>getOrgName() </li></ul><ul><li>getOrgClearingNumber() </li></ul><ul><li>updateStatus() </li></ul>OrgRole <ul><li>org role type </li></ul><ul><li>authorization </li></ul><ul><li>getOrgRoleType() </li></ul><ul><li>Authorization : boolean </li></ul>AccountBase <ul><li>account ID </li></ul><ul><li>account number </li></ul><ul><li>getAccountID() </li></ul><ul><li>getAccountNumber() </li></ul><ul><li>provideCreditColumn </li></ul><ul><li>provideDebitColumn </li></ul><ul><li>updateStatus() </li></ul>1 clearing number Base Consolidation 1 portfolio number 1 account number «concern» AgreementConsolidation ctd. domain orgRoleType :: ClientSales enabler Agreement ConsolidationBase <ul><li>getOfferID() </li></ul><ul><li>getOfferDate : date </li></ul><ul><li>getAgreementNumber() </li></ul><ul><li>getAgreementDate : date </li></ul><ul><li>updateStatus() </li></ul><ul><li>offer ID </li></ul><ul><li>offer date </li></ul><ul><li>agreement number </li></ul><ul><li>agreement date </li></ul>ContractBase <ul><li>getContractID() </li></ul><ul><li>getContractDate : date </li></ul><ul><li>getContractNumber() </li></ul><ul><li>getContractType() </li></ul><ul><li>updateStatus() </li></ul><ul><li>contract ID </li></ul><ul><li>contract date </li></ul><ul><li>contract number </li></ul><ul><li>contract type </li></ul>
  43. 44. Refinement in concern <Parties> Base Parties Base Business Relation Base Business Unit 1 role 1 domain Base Consolidation 2 parties 1 contract ID max number of contract types: employee 1 orgUnitRole «concern» Resources domain OrgUnit :: Bank enabler CorporateBody <ul><li>foundation year </li></ul><ul><li>corporate type </li></ul><ul><li>getFoundationYear() </li></ul><ul><li>getCorporateType() </li></ul>Individual <ul><li>first name </li></ul><ul><li>middle initial </li></ul><ul><li>date of birth </li></ul><ul><li>legal capacity </li></ul><ul><li>getFirstName() </li></ul><ul><li>getMiddleInitial() </li></ul><ul><li>getLegalCapacity: boolean </li></ul>CorporateRepresentative <ul><li>getCorporateTitle </li></ul><ul><li>getCorporateFunction() </li></ul><ul><li>corporate title </li></ul><ul><li>corporate function </li></ul>Relation <ul><li>– relation class </li></ul><ul><li>role </li></ul><ul><li>– getRelationClass() </li></ul><ul><li>getRole() </li></ul>Relationship <ul><li>relationship type </li></ul><ul><li>getRelationshipType() </li></ul>Segmentation <ul><li>segmentation type </li></ul><ul><li>getSegmentationType() </li></ul>RelationshipPortfolio <ul><li>portfolio number </li></ul><ul><li>getPortfolioNumber() </li></ul>UnitLocation <ul><li>location </li></ul><ul><li>court of law </li></ul><ul><li>local currency </li></ul><ul><li>getLocation() </li></ul><ul><li>getCourtOfLaw </li></ul><ul><li>getLocalCurrency() </li></ul>OrgFunction <ul><li>org function </li></ul><ul><li>getOrgFunction() </li></ul>FullTimeEquivalent <ul><li>FTE amount </li></ul><ul><li>FTEAmount : int </li></ul>OrgAccountability <ul><li>accounting ID </li></ul><ul><li>AccountingID : int </li></ul>OrgUnit <ul><li>org type </li></ul><ul><li>org unit ID </li></ul><ul><li>org name </li></ul><ul><li>org clearing number </li></ul><ul><li>getOrgType() </li></ul><ul><li>getOrgUnitID() </li></ul><ul><li>getOrgName() </li></ul><ul><li>getOrgClearingNumber() </li></ul><ul><li>updateStatus() </li></ul>OrgRole <ul><li>org role type </li></ul><ul><li>authorization </li></ul><ul><li>getOrgRoleType() </li></ul><ul><li>Authorization : boolean </li></ul>ResourcesEmployee <ul><li>getEmployeeID() </li></ul><ul><li>getEmployeeNumber : int </li></ul><ul><li>getEmployeeRole() </li></ul><ul><li>employee ID </li></ul><ul><li>employee number </li></ul><ul><li>employee role </li></ul>Agreement ConsolidationBase <ul><li>getOfferID() </li></ul><ul><li>getOfferDate : date </li></ul><ul><li>getAgreementNumber() </li></ul><ul><li>getAgreementDate : date </li></ul><ul><li>updateStatus() </li></ul><ul><li>offer ID </li></ul><ul><li>offer date </li></ul><ul><li>agreement number </li></ul><ul><li>agreement date </li></ul>ContractBase <ul><li>getContractID() </li></ul><ul><li>getContractDate : date </li></ul><ul><li>getContractNumber() </li></ul><ul><li>getContractType() </li></ul><ul><li>updateStatus() </li></ul><ul><li>contract ID </li></ul><ul><li>contract date </li></ul><ul><li>contract number </li></ul><ul><li>contract type </li></ul>Party <ul><li>party ID </li></ul><ul><li>legal form </li></ul><ul><li>name </li></ul><ul><li>domicile </li></ul><ul><li>nationality </li></ul><ul><li>getPartyID() </li></ul><ul><li>getLegalForm() </li></ul><ul><li>getName() </li></ul><ul><li>getDomicile() </li></ul><ul><li>getNationality() </li></ul><ul><li>updateState() </li></ul>
  44. 45. Collaboration Resources // employeeID ()  unique identifier // employeeNumber () 8-digit alphanueric // employeeRole (managementConsultant; ITConsultant; managementAssistant; advisorRetail; advisorWealth; advisorInvestment; advisorCredit; advisorAsset; trader; qualityController; businessProcessEngineer; productManager; ITArchitect; softwareDesinger; businessAnalyst; softwareEngineer; processingEngineer; operationEngineer; creditOfficer; recoveryOfficer; riskAnalyst; ...) «concern» Resources ctd.
  45. 46. Extension to concern <party> and <address> Base Parties Base Address Base Agreement 1..* 1 address 1 format 1 1 1 country 1..2 parties 1 1..2 domiciles 1..* purposes CorporateRepresentative <ul><li>getCorporateTitle </li></ul><ul><li>getCorporateFunction() </li></ul><ul><li>corporate title </li></ul><ul><li>corporate function </li></ul>1 «concern» Addressing domain OrgLocation :: Country enabler AddressingBase <ul><li>addressing ID </li></ul><ul><li>getAddressingID() </li></ul><ul><li>updateStatus() </li></ul>AddressingCountry <ul><li>getCountryFormat() </li></ul><ul><li>country format() </li></ul>AddressingFormat <ul><li>getAddressingFormat() </li></ul><ul><li>addressing format </li></ul>AddressingUsage <ul><li>getAddressingPurpose() </li></ul>PartvAddressing <ul><li>getPartyParameters() </li></ul>AddressBaseAddressing <ul><li>getAddressBaseParameters() </li></ul>POAddress <ul><li>po box number </li></ul><ul><li>po post code add </li></ul><ul><li>_getPOBoxNumber() </li></ul><ul><li>POPostCodeAdd() </li></ul>AddressBase <ul><li>address ID </li></ul><ul><li>country </li></ul><ul><li>– address type </li></ul><ul><li>– domicile </li></ul><ul><li>getAddressID() </li></ul><ul><li>getCountry() </li></ul><ul><li>– getAddressType() </li></ul><ul><li>– Domicile : boolean </li></ul>Communication Address <ul><li>email address </li></ul><ul><li>web address </li></ul><ul><li>telephone number </li></ul><ul><li>mobile number </li></ul><ul><li>fax number </li></ul><ul><li>getEmailAddress() </li></ul><ul><li>getWebAddress() </li></ul><ul><li>getTelephoneNumber() </li></ul><ul><li>getMobileNumber() </li></ul><ul><li>getFaxNumber() </li></ul>PurposeAddress <ul><li>po box </li></ul><ul><li>post code </li></ul><ul><li>city </li></ul><ul><li>street name </li></ul><ul><li>street number </li></ul><ul><li>apartment number </li></ul><ul><li>POBox : boolean </li></ul><ul><li>getPostCode() </li></ul><ul><li>getCity() </li></ul><ul><li>getStreetName </li></ul><ul><li>getStreetNumber </li></ul><ul><li>getApartmentNumber </li></ul>AgreementBase <ul><li>getAgreementForm() </li></ul><ul><li>getAgreementType() </li></ul><ul><li>getIssueDate : date </li></ul><ul><li>agreement form </li></ul><ul><li>agreement type </li></ul><ul><li>issue date </li></ul>GeneralTerms& Conditions Agreement Correspondence CorporateBody <ul><li>foundation year </li></ul><ul><li>corporate type </li></ul><ul><li>getFoundationYear() </li></ul><ul><li>getCorporateType() </li></ul>Individual <ul><li>first name </li></ul><ul><li>middle initial </li></ul><ul><li>date of birth </li></ul><ul><li>legal capacity </li></ul><ul><li>getFirstName() </li></ul><ul><li>getMiddleInitial() </li></ul><ul><li>getLegalCapacity: boolean </li></ul>Party <ul><li>party ID </li></ul><ul><li>legal form </li></ul><ul><li>name </li></ul><ul><li>domicile </li></ul><ul><li>nationality </li></ul><ul><li>getPartyID() </li></ul><ul><li>getLegalForm() </li></ul><ul><li>getName() </li></ul><ul><li>getDomicile() </li></ul><ul><li>getNationality() </li></ul><ul><li>updateState() </li></ul>
  46. 47. «concern» Addressing ctd. Collaboration Addressing // addressingID ()  unique identifier // updateStatus (nonOperational; operational; blocked; historical; archived) // addressingPurpose (correspondence; thirdPartyCorrespondence; processing; internalRouting)  influences addressingFormat and businessInstance (e.g. authorization to modify address content and content of mailings) // addressingPurpose = correspondence ; addressingFormat = ISO ; modification by owner of relationship only // addressingPurpose = thirdPartyCorrespondence ; addressingFormat = ISO ; modification by correspondence receiver (third party) and owner of relationship // addressingPurpose = processing ; addressFormat = SWIFT ; modification by owner of relationship only // addressingFormat (ISO; SWIFT; internal;)  ISO (World Post Union Standard) = 6 addressing lines with 37 characters max.; SWIFT (standard for interbank file transfer) = 5 addressing lines with 35 character max.; internal mailing = 4 addressing lines with 35 characters max. Party and address parameters are not limited to these line lengths. AddressingFormat supplies methods to fit parameters to appropriate format (algorithms not specified for simplicity reasons) // countryFormat (american; english; german; chinese;)  refinement of :: addressingFormat determines position of street number in “addressing street line” and position of post code (ZIP) in “addressing city line”. CountryFormat = chinese (address in chinese hieroglyphics but country in arabics) // partyAddressingParameters ()  depending on :: addressType and :: legalForm // addressType = purpose or po //for : individual (parameters = name; firstName; middleInitial; title); :Individual :: corporateRepresentative inaddition (parameter corporateFunction) // for: corporateBody (parameters = name) // addressAddressingParameters ()  for addressType = purpose ( street; streetNumber; apartmentNumber; city; postCode; city; country) for addressType = po [street; streetNumber; apartmentNumber replaced by POBoxNumber] and :: POPostCodeAdd is added to :: postCode
  47. 48. «concern» Account AccountBase <ul><li>account ID </li></ul><ul><li>account number </li></ul><ul><li>getAccountID() </li></ul><ul><li>getAccountNumber() </li></ul><ul><li>provideCreditColumn </li></ul><ul><li>provideDebitColumn </li></ul><ul><li>updateStatus() </li></ul>Collaboration Account // accountID ()  unique identifier // accountNumber ()  influenced by domain : orgUnit :: orgRoleType if orgRoleType(accounting; purchasing;)  12-digit numeric if orgRoleType(clientSales)  4-digit numeric // updateStatus (nonOperational; operational; blocked; inClosing, closed; historical; archived;) Remark Meaning of states: // nonOperational - when opening a new contract, account number must be assigned, account has status nonOperational ; after entering all required information into the system (if parties, addressing, relation and contract all having all status Operational , account has automatically status operational . // Blocked - account must be operational and has at least on posting to be blocked! // inClosing - only “internal” postings allowed like post computed interest, computed fees, compute balance and settle account. All postings from external sources are disabled (i.e. to the outside the account doesn’t exist anylonger) // closed - all posting functionalities disabled. // historical - for reference purposes only but accessible online (according to regulators the account closing records and the last postings must be available from between 3 to 12 months, location specific). // archived - for reference purposes only not accessible online (the historicized records must be kept between 2 and 10 years, location specific).
  48. 49. Refinement in concern <BusinessRelation> and extension to concern <ProductOffering> Base Agreement Consolidation 0..* offerings Parties legal capacity; age 1..* segments methods 1 country Base Business Relation Base Org Unit Business Instance methods PBProductOffering domain PBProductOffering enabler «concern» AgreementConsolidation Individual <ul><li>first name </li></ul><ul><li>middle initial </li></ul><ul><li>date of birth </li></ul><ul><li>legal capacity </li></ul><ul><li>getFirstName() </li></ul><ul><li>getMiddleInitial() </li></ul><ul><li>getLegalCapacity: boolean </li></ul>PBSegmentation <ul><li>getPBSegmentationType() </li></ul>Relation <ul><li>– relation class </li></ul><ul><li>role </li></ul><ul><li>– getRelationClass() </li></ul><ul><li>getRole() </li></ul>Relationship <ul><li>relationship type </li></ul><ul><li>getRelationshipType() </li></ul>Segmentation <ul><li>segmentation type </li></ul><ul><li>getSegmentationType() </li></ul>RelationshipPortfolio <ul><li>portfolio number </li></ul><ul><li>getPortfolioNumber() </li></ul>UnitLocation <ul><li>location </li></ul><ul><li>court of law </li></ul><ul><li>local currency </li></ul><ul><li>getLocation() </li></ul><ul><li>getCourtOfLaw </li></ul><ul><li>getLocalCurrency() </li></ul>OrgFunction <ul><li>org function </li></ul><ul><li>getOrgFunction() </li></ul>FullTimeEquivalent <ul><li>FTE amount </li></ul><ul><li>FTEAmount : int </li></ul>OrgAccountability <ul><li>accounting ID </li></ul><ul><li>AccountingID : int </li></ul>OrgRole <ul><li>org role type </li></ul><ul><li>authorization </li></ul><ul><li>getOrgRoleType() </li></ul><ul><li>Authorization : boolean </li></ul>Agreement ConsolidationBase <ul><li>getOfferID() </li></ul><ul><li>getOfferDate : date </li></ul><ul><li>getAgreementNumber() </li></ul><ul><li>getAgreementDate : date </li></ul><ul><li>updateStatus() </li></ul><ul><li>offer ID </li></ul><ul><li>offer date </li></ul><ul><li>agreement number </li></ul><ul><li>agreement date </li></ul>ContractBase <ul><li>getContractID() </li></ul><ul><li>getContractDate : date </li></ul><ul><li>getContrcatNumber() </li></ul><ul><li>updateStatus() </li></ul><ul><li>contract ID </li></ul><ul><li>contract date </li></ul><ul><li>contract number </li></ul>ConsolidationModality <ul><li>_agreePBIntersetReceived() </li></ul><ul><li>_agreePBInterestCharged() </li></ul><ul><li>_agreePBManagementFees() </li></ul>OfferingEligibilityManager <ul><li>calculateAge() </li></ul><ul><li>calculateOfferValidity() </li></ul><ul><li>_catalogueEligibleProduct() </li></ul><ul><li>confirmSegmentationOffering() </li></ul>OrgUnit <ul><li>org type </li></ul><ul><li>org unit ID </li></ul><ul><li>org name </li></ul><ul><li>org clearing number </li></ul><ul><li>getOrgType() </li></ul><ul><li>getOrgUnitID() </li></ul><ul><li>getOrgName() </li></ul><ul><li>getOrgClearingNumber() </li></ul><ul><li>updateStatus() </li></ul>PBProductOffering <ul><li>catalogueProductOffering() </li></ul>PBBaseModalityRange <ul><li>getPBIntersetReceivedRange() </li></ul><ul><li>getPBInterestChargedRange() </li></ul><ul><li>getPBManagementFeesRange() </li></ul><ul><li>PB interest received range </li></ul><ul><li>PB interest charged range </li></ul><ul><li>PB management fees range </li></ul>TransactionState <ul><li>updateStatus() </li></ul>InstanceTransaction <ul><li>transaction ID </li></ul><ul><li>transaction class </li></ul><ul><li>getTransactionID() </li></ul><ul><li>getTransactionClass() </li></ul>TransactionEnabler TransactionDelivery TransactionAuditTrail TransactionTracking TransactionOrdeRouting
  49. 50. Collaboration AgreementConsolidation // PBSegmentationType ()  refines segmentationType. Products are offered to specific market segments. Each segment can have deviating modalities or modalityRanges. // calculateAge ()  see business instance : computation // calculateOfferValidity ()  see business instance : computation // listEligibleProducts ()  see business instance : computation // verifySegmentOffering ()  see business instance : computation // agreePBInterestReceived ()  see business instance : computation // agreePBInterestCharged ()  see business instance : computation // agreePBManagementFees ()  see business instance : computation «concern» AgreementConsolidation ctd.
  50. 51. Collaboration AgreementConsolidation Appendix ctd. The following table contains some products of wealth management and investment management. // RBSegmentationType (youth, yo; student, st; adult, ad; senior, sn;) Table 1: ProductOffering to specific SegmentationType(BusinessArea) ProductClass ProductOffering Account Segmentation Type Type Cash Youth account cash YO Student account with overdraft cash ST Cash account with overdraft cash AD Senior account with overdraft cash SN Youth savings account cash YO Student savings account cash ST Savings account cash AD, SN Pension investment account (tax exempt savings) cash AD Card Debit card cash YO, ST, AD, SN Credit card classic credit ST, AD, SN «concern» AgreementConsolidation ctd.
  51. 52. Collaboration AgreementConsolidation Appendix ctd. The following table contains some products of wealth management and investment management. // PBSegmentationType (affluent, a; coreAffluent, ca; highNetWorth, hnw;) Table 2: ProductOffering to specific SegmentationType(BusinessArea) ProductClass ProductOffering Account Segmentation Type Type Cash Salary or checking cash A, CA, HNW Current account with overdraft cash A, CA, HNW Investment saving cash A, CA, HNW Provision (tax exempt savings) cash A, CA,HNW Card Debit card cash A, CA, HNW Credit card classic credit A, CA, HNW Credit card gold credit A, CA, HNW Credit card premium credit CA, HNW Mortgage Variable interest rate credit A, CA, HNW Fixed interest rate (1,2,3,4,5,6,7 years) credit A, CA, HNW LIBOR fixed interest rate credit A. CA, HNW Portfolio fixed interest rate credit A, CA, HNW Equities derivatives Futures on equities-index (ETD) securities A, CA, HNW Options on equities-index (ETD) securities A, CA, HNW Options on equities (ETD) securities A, CA, HNW Options on equities futures (ETD) securities A, CA, HNW Options on equities-index (ETD) securities A, CA, HNW Warrants on equities securities CA, HNW Warrants on equities basket securities CA, HNW Warrants on equities index securities CA, HNW Rights securities CA, HNW Options on equities (OTC) securities HNW Options on equities futures (OTD) securities HNW Fixed income Bond futures (ETD) securities A, CA, HNW derivatives Options on bond futures (ETD) securities A, CA, HNW Repo (repurchasing agreement) securities CA, HNW Convertibles securities CA, HNW Options on bonds (OTC) securities HNW Structured products Employee equity shares securities CA, HNW FX (foreign exchange) spot securities CA, HNW FX swap securities CA, HNW FX forward securities CA, HNW Appendix ctd. ProductClass ProductOffering Account Segmentation Type Type Foreign exchange FX warrants securities CA, HNW (FX) derivatives FX islamic securities CA, HNW FX options (OTC) securities HNW Money market Option on money market (ETD) securities A, CA, HNW derivatives Warrants on money market securities CA, HNW Gilt futures securities CA, HNW Interest rate swap securities CA, HNW Forward rate agreement securities CA, HNW Options on money market structure (OTC) securities HNW Precious metal Precious metal spot securities CA, HNW Precious metal forward securities CA, HNW Precious metal Option on precious metal (OTC) securities HNW derivative Tax Structured tax products (wrappers) securities CA, HNW Margin lines for Traded options and futures (TOFF) securities CA, HNW trading FX spot «concern» AgreementConsolidation ctd.
  52. 53. Collaboration AgreementConsolidation Appendix ctd. The following table contains some products of wealth management and investment management. // CBSegmentationType (regionalBusiness, reb; nationalBusiness, nab; internationalBusiness, inb;) Table 3: ProductOffering to specific SegmentationType(BusinessArea) ProductClass ProductOffering Account Segmentation Type Type Cash Current account with overdraft cash REB, NAB, INB Cash pooling account cash NAB, INB Savings account business cash REB Card Credit card business classic credit REB, NAB, INB Credit card business gold credit NAB, INB Mortgage Variable interest rate credit REB, NAB, INB Fixed interest rate (1,2,3,4,5,6,7 years) credit REB, NAB, INB LIBOR fixed interest rate credit REB, NAB, INB Portfolio fixed interest rate credit REB, NAB, INB Loans Factoring credit REB Unsecured loan credit REB, NAB, INB Secured loan credit REB, NAB, INB Investment loan credit REB, NAB, INB Fixed rate loan credit REB, NAB, INB Guarantees credit REB, NAB, INB Leasing credit REB, NAB, INB Global credit limit credit NAB, INB Export guarantees credit INB Stand-by-letter-of-credit credit INB Equities derivatives Futures on equities-index (ETD) securities REB, NAB, INB Options on equities-index (ETD) securities REB, NAB, INB Options on equities (ETD) securities REB, NAB, INB Options on equities futures (ETD) securities REB, NAB, INB Options on equities-index (ETD) securities REB, NAB, INB Warrants on equities securities NAB, INB Warrants on equities basket securities NAB, INB Warrants on equities index securities NAB, INB Rights securities NAB, INB Options on equities (OTC) securities INB Options on equities futures (OTD) securities INB Appendix ctd. ProductClass ProductOffering Account Segmentation Type Type Fixed income Bond futures (ETD) securities REB, NAB, INB derivatives Options on bond futures (ETD) securities REB, NAB, INB Repo (repurchasing agreement) securities NAB, INB Convertibles securities NAB, INB Options on bonds (OTC) securities INB Structured products Employee equity shares securities NAB, INB FX (foreign exchange) spot securities NAB, INB FX swap securities NAB, INB FX forward securities NAB, INB Foreign exchange FX warrants securities NAB, INB (FX) derivatives FX islamic securities NAB, INB FX options (OTC) securities INB Money market Option on money market (ETD) securities REB, NAB, INB derivatives Warrants on money market securities NAB, INB Gilt futures securities NAB, INB Interest rate swap securities NAB, INB Forward rate agreement securities NAB, INB Options on money market structure (OTC) securities INB Precious metal Precious metal spot securities NAB, INB Precious metal forward securities NAB, INB Precious metal Option on precious metal (OTC) securities INB derivative Tax Structured tax products (wrappers) securities NAB, INB Margin lines for Traded options and futures (TOFF) securities NAB, INB trading FX spot «concern» AgreementConsolidation ctd.
  53. 54. Context of concerns <Agreement> and <AgreementConsolidation> 1 0..* Base Agreement Consolidation 1..* parameters Base Agreement (Document Factory) «concern» AgreementConsolidation ctd. domain Document production delivery AgreementConsolidationBase <ul><li>getOfferID() </li></ul><ul><li>getOfferDate : date </li></ul><ul><li>getAgreementNumber() </li></ul><ul><li>getAgreementDate : date </li></ul><ul><li>updateStatus() </li></ul><ul><li>offer ID </li></ul><ul><li>offer date </li></ul><ul><li>agreement number </li></ul><ul><li>agreement date </li></ul>ContractBase <ul><li>getContractID() </li></ul><ul><li>getContractDate : date </li></ul><ul><li>getContractNumber() </li></ul><ul><li>getContractType() </li></ul><ul><li>updateStatus() </li></ul><ul><li>contract ID </li></ul><ul><li>contract date </li></ul><ul><li>contract number </li></ul><ul><li>contract type </li></ul>AgreementCreditProd AgreementCashProd AgreementSecuritiesProd AgreementPaymentProd AgreementAccessRights AgreementCardAccess GeneralTerms&Conditions AgreementBase <ul><li>getAgreementForm() </li></ul><ul><li>getAgreementType() </li></ul><ul><li>getIssueDate : date </li></ul><ul><li>agreement form </li></ul><ul><li>agreement type </li></ul><ul><li>issue date </li></ul>AgreementCorrespondence 1..* 0..*
  54. 55. Collaboration Assent // transactionID ()  unique identifier // transactionClass (transactionEnabler; transactionDelivery; transactionTracking; transactionAuditTrail; transactionOrderRouting;) // updateStatus (initiated; processing; pending; completed;) Remarks // transactionEnabler  contains transactions associated with concern associated to serviceEnabler // transactionDelivery  contains transactions associated with concern associated to serviceDelivery // transactionTracking  contains transactions to track tasks that are uncompleted, unsuccessfully processed, etc. Each task has a deadline or delivery time or date associated with it. // transactionOrderRouting  assures proper processing of orders or instructions, verifies that data is sent to the indented system or application and is not being corrupted in the process // transactionAuditTrail  logs all transaction (timestamps). «concern» BusinessInstance ctd. TransactionAuditTrail TransactionOrderRouting TransactionState <ul><li>updateStatus() </li></ul>TransactionTracking TransactionEnabler TransactionDelivery InstanceTransaction <ul><li>transaction ID </li></ul><ul><li>transaction class </li></ul><ul><li>getTransactionID() </li></ul><ul><li>getTransactionClass() </li></ul>
  55. 56. «concern» BusinessInstance TRXEnablerCreation <ul><li>createParty() </li></ul><ul><li>createAddress() </li></ul><ul><li>createAddressing() </li></ul><ul><li>createRelation() </li></ul><ul><li>createAgreement() </li></ul><ul><li>createContractNumber() </li></ul>TRXEnablerModification <ul><li>modifyParty() </li></ul><ul><li>modifyGrouping() </li></ul><ul><li>modifyAddressing() </li></ul>TRXEnablerSearch <ul><li>searchParty() </li></ul><ul><li>searchAddress() </li></ul><ul><li>searchAddressing() </li></ul><ul><li>searchRelation() </li></ul><ul><li>searchAgreement() </li></ul><ul><li>searchConsolidationNumber() </li></ul><ul><li>searchProduct() </li></ul>TRXEnablerLink <ul><li>linkPartyToRelation() </li></ul><ul><li>linkAgreementToRelation() </li></ul><ul><li>linkContractBaseToAgreement() </li></ul>TRXEnablerCatalogue <ul><li>catalogueProductBase() </li></ul><ul><li>catalogueProductOffering() </li></ul><ul><li>catalogueEligibleProduct() </li></ul>TRXEnablerAgree <ul><li>agreeInterestCharged() </li></ul><ul><li>agreeInterestReceived() </li></ul><ul><li>agreeFees() </li></ul><ul><li>agreeRepayment() </li></ul><ul><li>agreeLoanPeriod() </li></ul><ul><li>agreeNumberOfRepayments : int </li></ul><ul><li>agreeWithdrawalLimit() </li></ul><ul><li>agreeCurrency() </li></ul><ul><li>agreeContractCurrency </li></ul>TransactionEnabler <ul><li>openBusinessRelation() </li></ul><ul><li>openProductOffering() </li></ul><ul><li>consolidateAgreement() </li></ul><ul><li>historicizeProductOffer() </li></ul><ul><li>historicizeRelation() </li></ul><ul><li>... </li></ul>InstanceMethod <ul><li>metod ID </li></ul><ul><li>method class </li></ul><ul><li>getMethodID() </li></ul><ul><li>getMethodClass() </li></ul>TRXEnablerCalculation <ul><li>calculateAge() </li></ul><ul><li>calculateLegalAge() </li></ul><ul><li>calculateOfferValidity() </li></ul><ul><li>calculateRepayment() </li></ul>TRXEnablerConfirmation <ul><li>confirmSegmentationOffering() </li></ul><ul><li>confirmSegmentationAssociation() </li></ul>
  56. 57. Colloboration BusinessInstance :: TransactionEnabler // Establish business relation with any type of : relation :: role for every relation the domicile addressing is required. When a third party relationship has to be opened, the client relationship is needed to link the third party to that relationship openBusinessRelation() { searchParty() if party = !null { createParty() updateStatus(Party) else createAddressing(domicile) searchAddress if address = !null { createAddress() else searchRelation() if relation = !null { createRelation() updateStatus(relation) else relationClass = thirdParty { linkPartyToRelation() createContractEmpowerment end else relationClass = mandate { confirmSegmentationAssociation() if segmentation  orgUnit(Segmentation) notifyUser else confirmSegmentationOffering() if segmentationOffering = productOfferingsegmentationType { openProductOffering else notifyUser } etc. consolidateAgreement() if relationClass = mandate { createAgreement() searchParty() if party = !null { createParty() else createAddressing(correspondence) updateStatus(AddressingBase) searchAddress if address = !null { createAddress() else searchRelation() if relation = !null { createRelation() createContractBase() linkContractBaseToAgreement() linkAgreementToRelation linkPartyToRelation } etc. if multiCurrency = TRUE { agreeContractCurrency() agreeCurrency() else agreeContractCurrency(localCurrency) } if productClass = cashProduct { agreeInterestReceived() agreeWithdrawalLimit() agreeFees() if facilityType = overdraft { agreeInterestCharged() } if productClass = creditProduct agreeInterestCharged()} agreeRepayment() agreeLoanPeriod() agreeNumberOfRepayment() } updateStatus(contractBase) etc. «concern» BusinessInstance ctd.
  57. 58. Collaboration InstanceTransaction :: Methods // methodID ()  unique identifier // methodClass (creation; modification; search; link; modification;) // createParty()  key parameters: legalForm (defines orgUnit) age (base for agreement (legal age) and segmentation) // createAddress()  if address shouldn’t exists // createAddressing()  key parameters: addressingPurpose (influences addressingFormat) // createRelation()  key parameters: role (defines relationClass) relationClass (predetermined by orgLocation and orgUnit) relationshipTyp (defines how many parties per relation and what agreementType) - NamedParty 1 party - NumberedParty 1 party [ name is replaced with 12-digit number, all other party and addressing information are accessible to specially authorized personal] - JointNamedParty 2 or more individuals - AssociatedNamedParty 2 or more coporateBodies // createAgreement // modifyParty()  key parameters: name (requires changes in : addressingsPurpose :: correspondence, no new agreement) birthDate (requires :: calculateAge and :: confirmSegmentAssociation) dateOfDeath (by entering date, updateStatus=blocked on all accounts) maritalStatus (requires new credit agreement  signature of both individuals or only one depending on prenuptial agreement ) // modifyGrouping()  (draw new grouping structures) // modifyAddressing()  key parameters: addressing Purpose (influences addressingFormat) // searchParty()  key parameters: name // searchAddress()  key parameters: country; postalCode, street (find address to to create addressing) // searchAddressing()  key parameters: country; postalCode, street (to associate addressing to agreements, etc.) // searchRelation()  key parameters: clearingNumber // searchAgreement()  key parameters: contractNumber // searchProductAccountNumber()  key parameters: productID «concern» BusinessInstance ctd.
  58. 59. Collaboration InstanceTransaction :: methods // linkPartyToRelation()  associates partyID with portfolioNumber // linkAgreementToRelation()  associates agreementNumber with portfolioNumber // linkContractNumberToAgreement()  associates contractNumber to agreementNumber Remark If contract permits, balances of each contractNumber associated wi

×