Sprint Backlog 11
Sprint Mission
- Multi-tenant and two-eyes support.
Stories
Active
| Tags | Headline | Time | % | ||
|---|---|---|---|---|---|
| Total time | 0:51 | 100.0 | |||
| Stories | 0:51 | 100.0 | |||
| Active | 0:51 | 100.0 | |||
| code | Address past review comments | 0:51 | 100.0 |
| Tags | Headline | Time | % | ||
|---|---|---|---|---|---|
| Total time | 2:00 | 100.0 | |||
| Stories | 2:00 | 100.0 | |||
| Active | 2:00 | 100.0 | |||
| agile | Sprint and product backlog refinement | 0:46 | 38.3 | ||
| code | Address past review comments | 1:14 | 61.7 |
STARTED Sprint and product backlog refinement agile
Updates to sprint and product backlog.
Add DB schema version table code
At present we have no way of knowing what version of the schema we are running. We should probably look into sqitch.
Links:
- GH: golang-migrate: "Database migrations written in Go. Use as CLI or import as library."
- GH: tern: "Tern is a standalone migration tool for PostgreSQL. It includes traditional migrations as well as a separate optional workflow for managing database code such as functions and views."
- GH: sqitch: "Sqitch is a database change management application."
COMPLETED Address past review comments code
We have a number of comments we did not address from past PRs. PRs:
This pull request focuses on addressing various code review feedback points and performing general maintenance across the Qt, DQ, and ORE components. The changes aim to improve UI robustness, enhance code maintainability through refactoring and dependency management, and provide more informative user feedback, ultimately contributing to a more stable and user-friendly application. The updates also include minor documentation clean-up and copyright year adjustments.
Highlights:
- Qt Component Enhancements: Multiple MDI windows (ChangeReasonCategory, ChangeReason, Country, Currency, DataLibrarian, DatasetBundle, OriginDimension) now robustly restore their header states. If saved settings are corrupted, they gracefully fall back to default column visibility, preventing potential UI issues. The DataLibrarianWindow::getDatasetsUnderNode method has been optimized to efficiently handle root and category parent nodes, avoiding redundant dataset iterations and ensuring unique entries. Validation feedback for dataset bundles is more specific, pinpointing missing required fields. Batch deletion error messages for dataset bundles now include the codes of failed bundles and their specific failure reasons, improving user clarity. Lambda capture ordering in DatasetBundleController has been adjusted for better readability.
- DQ Component Refactoring: The write_dataset and read_dataset serialization helpers have been extracted from an anonymous namespace in dataset_protocol.cpp and exposed in dataset_protocol.hpp. This change promotes code reuse, eliminating approximately 200 lines of duplicated serialization logic previously found in publication_protocol.cpp.
- ORE Component Maintenance: CMake dependencies for the ORE library (projects/ores.ore/src/CMakeLists.txt) have been updated to align with actual code usage and the architecture diagram. This involved removing unused dependencies (e.g., ores.variability.lib, ores.comms.lib, sqlgen::sqlgen, faker-cxx::faker-cxx, libfort::fort) and adding required ones (ores.logging.lib, ores.platform.lib). The copyright year in projects/ores.ore/tests/CMakeLists.txt has been updated from 2024 to 2025.
- Documentation Updates: The doc/agile/product_backlog.org file has been significantly pruned, removing numerous outdated or completed backlog items. The doc/agile/v0/sprint_backlog_11.org file has been updated to reflect current clock summaries and the status of a sprint backlog item.
System provisioner needs an icon code
Dialog is using default ORE icon.
Add "system" account code
Modified by must always map to an existing account. We need to create an account that cannot login and which is used for all of the initial population.
Publication should be done using the new admin account, not the system account.
Split create schemas from main populate script code
We should probably add a create schemas script.
Message handlers are not scalable code
Claude just mentioned this in passing:
Read(projects/ores.dq/src/messaging/dq_message_handler.cpp) ⎿ Error: File content (25665 tokens) exceeds maximum allowed tokens (25000). Please use offset and limit parameters to read specific portions of the file, or use the GrepTool to search for specific content. ● Read(projects/ores.dq/src/messaging/dq_message_handler.cpp) ⎿ Read 200 lines
This will not work when we have hundreds of types in a component. We need to split these files by message type.
Generate C++ code for FPML code
We need to fix any limitations we may have in xsdcpp.
Clicking save on connections causes exit code
Asks if we want to exit. Also clicking save several times creates folders with the same name.
Analysis on database name service code
Is this used? If so, the service should not be connecting to the admin database.
External data issues code
Problems observed:
- missing
downloaded_atfor a lot of data. - spurious
manifest.txt, we should only havemanifest.json. - duplication of data in catalog and main manifest. The manifest is the catalog. Remove duplication.
- for github downloads, add git commit.
- not clear who "owner" is. It has to map to an account or group in the system.
- datasets have a catalog, but they shoud be forced to use the catalog of the manifest:
"catalog": "Open Source Risk Engine",
- need a domain for data such as XML Schemas.
- we should ensure the methodology is one of the defined methodologies in the file.
- since datasets refer to data in subdirectories, we should add the directory to the manifest. Not needed in DB.
Check for uses of raw libpq code
Claude has the habit of sneaking in uses of raw libpq. We need to do a review of the code to make sure we are using sqlgen.
Notes:
- check for raw libpq in bitemporal operations.
Make the icon theme "configurable" code
While we are trying to find a good icon theme, it should be possible to change the icons without having to rebuild. Ideally without having to restart, but if we have to restart that's not too bad.
Listener error in comms service code
Investigate this:
2026-01-22 20:40:20.194383 [DEBUG] [ores.comms.net.connection] Successfully wrote frame 2026-01-22 20:40:20.194413 [INFO] [ores.comms.net.server_session] Sent notification for event type 'ores.refdata.currency_changed' with 1 entity IDs to 127.0.0.1:49354 2026-01-22 20:40:21.698972 [ERROR] [ores.eventing.service.postgres_listener_service] Connection error while consuming input. 2026-01-22 20:40:21.699059 [INFO] [ores.eventing.service.postgres_listener_service] Listener thread stopped.
Implement party related entities at database level code
The first step of this work is to get the entities to work at the database schema level.
- Table Structure: party
Field Name Data Type Constraints Commentary party_idInteger PK, Auto-Inc Internal surrogate key for database performance and foreign key stability. tenant_idInteger FK (tenant) The "Owner" of this record. Ensures GigaBank's client list isn't visible to AlphaHedge. party_nameString(255) Not Null The full legal name of the entity (e.g., "Barclays Bank PLC"). short_nameString(50) Unique A mnemonic or "Ticker" style name used for quick UI displays (e.g., "BARC-LDN"). leiString(20) Unique/Null The ISO 17442 Legal Entity Identifier. Critical for regulatory reporting and GLEIF integration. is_internalBoolean Default: False Flag: If TRUE, this party represents a branch or entity belonging to the Tenant (The Bank). party_type_idInteger FK (scheme) Categorizes the entity: Bank, Hedge Fund, Corporate, Central Bank, or Exchange. postal_addressText Used for generating legal confirmations and settlement instructions. business_center_idInteger FK (scheme) Links to an FpML Business Center (e.g., GBLO, USNY). Determines holiday calendars for settlement. statusEnum Active/Inactive Controls whether trades can be booked against this entity. created_atTimestamp Audit trail for when the entity was onboarded.
Add party entity code
Party analysis.
| Field | Type | Description | Foreign Key Reference |
|---|---|---|---|
| party_id | UUID | Primary key (globally unique identifier) | — |
| full_name | TEXT | Legal or registered name | — |
| short code | TEXT | Short code for the party. | |
| organization_type | INT | Type of organization | → organization_type_scheme |
| parent_party_id | INT | References parent party (self-referencing) | → party_id (nullable) |
Add party identifier entity code
Allows a party to have multiple external identifiers (e.g., LEI, BIC).
| Field | Type | Description | Foreign Key Reference |
|---|---|---|---|
| party_id | UUID | References party.party_id | → party |
| id_value | TEXT | Identifier value, e.g., "549300…" | — |
| id_scheme | TEXT | Scheme defining identifier type, e.g. LEI | → party_id_scheme |
| Description | TEXT | Additional information about the party |
Primary key: composite (party_id, id_scheme)
Contact information entity code
Contact Information is a container that groups various ways to reach an entity.
Contact Information can be associated with either a Party (at the legal entity level) or a BusinessUnit (at the desk/operational level). To build a robust trading system, your database should support a polymorphic or flexible link to handle this.
The Logic of the Link:
- Link to Party: Used for Legal and Regulatory contact details. This is the "Head Office" address, the legal service of process address, or the general firm-wide contact for the LEI.
- Link to Business Unit: Used for Execution and Operational contact details. This is where your "Machine" or "Human" actually lives. It links the trader or algo to a specific desk's phone number, email, and—most importantly—its Business Center (Holiday Calendar).
- Type: Contact Information
This is the main container for how to reach a party or person.
- address (Complex): The physical location.
- phone (String): Multiple entries allowed (Work, Mobile, Fax).
- email (String): Electronic mail addresses.
- webPage (String): The entity's URL.
- Type: Address
The physical street address structure.
- streetAddress (Complex): Usually a list of strings (Line 1, Line 2, etc.).
- city (String): The city or municipality.
- state (String): The state, province, or region.
- country (Scheme): An ISO 3166 2-letter country code (e.g., US, GB).
- postalCode (String): The ZIP or Postcode.
Add a organisation type scheme entity code
Indicates a type of organization.
- Obtained on 2016-06-13
- Version 2-0
- URL: http://www.fpml.org/coding-scheme/organization-type-2-0.xml
- Code: MSP
- Name: Major Swap Participant
- Description: A significant participant in the swaps market, for example as defined by the Dodd-Frank Act.
- Code: NaturalPerson
- Name: Natural Person
- Description: A human being.
- Code: non-SD/MSP
- Name: Non Swap Dealer or Major Swap Participant
- Description: A firm that is neither a swap dealer nor a major swaps participant under the Dodd-Frank Act.
- Code: SD
- Name: Swap Dealer
- Description: Registered swap dealer.
Business unit entity code
Represents internal organizational units (e.g., desks, departments, branches). Supports hierarchical structure.
| Field | Type | Description | Foreign Key Reference |
|---|---|---|---|
| unit_id | INT | Primary key | — |
| party_id | UUID | Top-level legal entity this unit belongs to | → party |
| parent_business_unit_id | INT | References parent unit (self-referencing) | → business_unit.unit_id (nullable) |
| unit_name | TEXT | Human-readable name (e.g., "FX Options Desk") | — |
| unit_id_code | TEXT | Optional internal code or alias | — |
| business_centre | TEXT | Business centre for the unit | → business centre scheme |
business_centre may be null (for example, we may want to have global desk and then London desk.
Book and Portfolio entities code
Support a single, unified hierarchical tree for risk aggregation and reporting (Portfolios) while maintaining operational accountability and legal/bookkeeping boundaries at the leaf level (Books).
- Portfolio
Logical Aggregation Nodes. Represents organizational, risk, or reporting groupings. Never holds trades directly.
Field Type Description portfolio_id (PK) UUID Globally unique identifier. parent_portfolio_id UUID (FK) Self-referencing FK. NULL = root node. name TEXT Human-readable name (e.g., "Global Rates", "APAC Credit"). owner_unit_id INT (FK) Business unit (desk/branch) responsible for management. purpose_type ENUM 'Risk', 'Regulatory', 'ClientReporting', 'Internal'. aggregation_ccy CHAR(3) Currency for P&L/risk aggregation at this node (ISO 4217). is_virtual BOOLEAN If true, node is purely for on-demand reporting (not persisted in trade attribution). created_at TIMESTAMP Audit trail. Note: Portfolios do not have a legal_entity_id. Legal context is derived from descendant Books.
- Book
Operational Ledger Leaves. The only entity that holds trades. Serves as the basis for accounting, ownership, and regulatory capital treatment.
Field Type Description book_id (PK) UUID Globally unique identifier. parent_portfolio_id UUID (FK) Mandatory: Links to exactly one portfolio. name TEXT Must be unique within legal entity (e.g., "FXO_EUR_VOL_01"). legal_entity_id UUID (FK) Mandatory: References party.party_id (must be an LEI-mapped legal entity). ledger_ccy CHAR(3) Functional/accounting currency (ISO 4217). gl_account_ref TEXT Reference to external GL (e.g., "GL-10150-FXO"). May be nullable if not integrated. cost_center TEXT Internal finance code for P&L attribution. book_status ENUM 'Active', 'Closed', 'Frozen'. is_trading_book BOOLEAN Critical for Basel III/IV: distinguishes Trading vs. Banking Book. created_at TIMESTAMP For audit. closed_at TIMESTAMP When book_status = 'Closed'. Objectives:
- Strict separation: Portfolios = logical; Books = operational
- Legal ownership at Book level → critical for regulatory capital, legal netting, tax
- Hierarchy via parent_portfolio_id
- Trading vs. Banking book flag → Basel requirement
Hierarchy Integrity Constraints:
- Rule: A Portfolio must not directly contain another Portfolio and a Book at
the same level if that violates business policy.
- Enforce via application logic or DB constraint (e.g., CHECK that a Portfolio is either "container-only" or "leaf-container", but typically Portfolios can contain both sub-Portfolios and Books—this is normal).
- Cycle Prevention: Ensure no circular references (parent → child → parent). Use triggers or application validation.
- Multi-Legal Entity Support: Your model allows Books under the same Portfolio
to belong to different legal entities. Is this intentional?
- Allowed in some firms (for consolidated risk views).
- Forbidden in others (e.g., regulatory ring-fencing).
- Recommendation: Add a validation rule (application-level): If a Portfolio contains any Books, all descendant Books must belong to the same legal_entity_id.” Or, if mixed entities are allowed, flag the Portfolio as 'MultiEntity' in purpose_type.
- Trade Ownership: Explicitly state: Every trade must have a book_id (FK). No trade exists outside a Book. This is implied but should be documented as a core invariant.
- Lifecycle & Governance: Add version or valid_from/valid_to if Books/Portfolios
evolve over time (e.g., name changes, reorgs).
- Especially important for audit and historical P&L.
- Consider owner_person_id (trader or book manager) for Books.
- Naming & Uniqueness:
Enforce: (legal_entity_id, name) must be unique for Books.
- Prevents ambiguous book names like "RatesDesk" used by two entities.
- Book Closure Policy: When a Book is Closed, should existing trades remain?
- Yes (typical). But no new trades allowed.
- Your book_status covers this
Combined Hierarchy Rules (Refined):
Rule Description Leaf Invariant Only Books may hold trades. Portfolios are purely aggregators. Single Parent Every Book and non-root Portfolio has exactly one parent. Legal Entity Scope A Book declares its legal owner. A Portfolio’s legal scope is the union of its Books’ entities. Permissioning Trade permission → granted on book_id. View/Analyze permission → granted on portfolio_id (includes subtree) Accounting Boundary P&L, capital, and ledger entries are computed per Book, then rolled up through Portfolios in aggregation_ccy.
Add business centre scheme entity code
The following is the analysis for adding support to party schemes.
Note: add a foreign key to the country table, which may be null in some cases.
The coding-scheme accepts a 4 character code of the real geographical business calendar location or FpML format of the rate publication calendar. While the 4 character codes of the business calendar location are implicitly locatable and used for identifying a bad business day for the purpose of payment and rate calculation day adjustments, the rate publication calendar codes are used in the context of the fixing day offsets. The 4 character codes are based on the business calendar location some of which based on the ISO country code or exchange code, or some other codes. Additional business day calendar location codes could be built according to the following rules: the first two characters represent the ISO 3166 country code [https://www.iso.org/obp/ui/#search/code/], the next two characters represent either a) the first two letters of the location, if the location name is one word, b) the first letter of the first word followed by the first letter of the second word, if the location name consists of at least two words. Note: for creating new city codes for US and Canada: the two-letter combinations used in postal US states (http://pe.usps.gov/text/pub28/28apb.htm ) and Canadian provinces (http://www.canadapost.ca/tools/pg/manual/PGaddress-e.asp) abbreviations cannot be utilized (e.g. the code for Denver, United States is USDN and not USDE, because of the DE is the abbreviation for Delaware state ). Exchange codes could be added based on the ISO 10383 MIC code [https://www.iso20022.org/sites/default/files/ISO10383_MIC/ISO10383_MIC.xls] according to the following rules: 1. it would be the acronym of the MIC. If acronym is not available, 2. it would be the MIC code. If the MIC code starts with an 'X', 3. the FpML AWG will compose the code. 'Publication Calendar Day', per 2021 ISDA Interest Rate Derivatives Definitions, means, in respect of a benchmark, any day on which the Administrator is due to publish the rate for such benchmark pursuant to its publication calendar, as updated from time to time. FpML format of the rate publication calendar. The construct: CCY-[short codes to identify the publisher], e.g. GBP-ICESWAP. The FpML XAPWG will compose the code.
- Obtained on 2025-04-25
- Version 9-4
- URL: http://www.fpml.org/coding-scheme/business-center-9-4.xml
- Code: The unique string/code identifying the business center, usually a 4-character code based on a 2-character ISO country code and a 2 character code for the city, but with exceptions for special cases such as index publication calendars, as described above.
- Code: AEAB
- Description: Abu Dhabi, Business Day (as defined in 2021 ISDA Definitions Section 2.1.10 (ii))
- Code: AEAD
- Description: Abu Dhabi, Settlement Day (as defined in 2021 ISDA Definitions Section 2.1.10 (i))
- Code: AEDU
- Description: Dubai, United Arab Emirates
- Code: AMYE
- Description: Yerevan, Armenia
- Code: AOLU
- Description: Luanda, Angola
- Code: ARBA
- Description: Buenos Aires, Argentina
- Code: ATVI
- Description: Vienna, Austria
- Code: AUAD
- Description: Adelaide, Australia
- Code: AUBR
- Description: Brisbane, Australia
- Code: AUCA
- Description: Canberra, Australia
- Code: AUDA
- Description: Darwin, Australia
- Code: AUME
- Description: Melbourne, Australia
- Code: AUPE
- Description: Perth, Australia
- Code: AUSY
- Description: Sydney, Australia
- Code: AZBA
- Description: Baku, Azerbaijan
- Code: BBBR
- Description: Bridgetown, Barbados
- Code: BDDH
- Description: Dhaka, Bangladesh
- Code: BEBR
- Description: Brussels, Belgium
- Code: BGSO
- Description: Sofia, Bulgaria
- Code: BHMA
- Description: Manama, Bahrain
- Code: BMHA
- Description: Hamilton, Bermuda
- Code: BNBS
- Description: Bandar Seri Begawan, Brunei
- Code: BOLP
- Description: La Paz, Bolivia
- Code: BRBD
- Description: Brazil Business Day. This means a business day in all of Sao Paulo, Rio de Janeiro or Brasilia not otherwise declared as a financial market holiday by the Bolsa de Mercadorias & Futuros (BM&F). BRBD should not be used for setting fixing time, instead the city centers (e.g. BRBR, BRRJ, BRSP) should be used, because they are locatable places.
- Code: BSNA
- Description: Nassau, Bahamas
- Code: BWGA
- Description: Gaborone, Botswana
- Code: BYMI
- Description: Minsk, Belarus
- Code: CACL
- Description: Calgary, Canada
- Code: Covers
- Description: all New Brunswick province.
- Code: CAFR
- Description: Fredericton, Canada.
- Code: CAMO
- Description: Montreal, Canada
- Code: CAOT
- Description: Ottawa, Canada
- Code: CATO
- Description: Toronto, Canada
- Code: CAVA
- Description: Vancouver, Canada
- Code: CAWI
- Description: Winnipeg, Canada
- Code: CHBA
- Description: Basel, Switzerland
- Code: CHGE
- Description: Geneva, Switzerland
- Code: CHZU
- Description: Zurich, Switzerland
- Code: CIAB
- Description: Abidjan, Cote d'Ivoire
- Code: CLSA
- Description: Santiago, Chile
- Code: CMYA
- Description: Yaounde, Cameroon
- Code: CNBE
- Description: Beijing, China
- Code: CNSH
- Description: Shanghai, China
- Code: COBO
- Description: Bogota, Colombia
- Code: CRSJ
- Description: San Jose, Costa Rica
- Code: CWWI
- Description: Willemstad, Curacao
- Code: CYNI
- Description: Nicosia, Cyprus
- Code: CZPR
- Description: Prague, Czech Republic
- Code: DECO
- Description: Cologne, Germany
- Code: DEDU
- Description: Dusseldorf, Germany
- Code: DEFR
- Description: Frankfurt, Germany
- Code: DEHA
- Description: Hannover, Germany
- Code: DEHH
- Description: Hamburg, Germany
- Code: DELE
- Description: Leipzig, Germany
- Code: DEMA
- Description: Mainz, Germany
- Code: DEMU
- Description: Munich, Germany
- Code: DEST
- Description: Stuttgart, Germany
- Code: DKCO
- Description: Copenhagen, Denmark
- Code: DOSD
- Description: Santo Domingo, Dominican Republic
- Code: DZAL
- Description: Algiers, Algeria
- Code: ECGU
- Description: Guayaquil, Ecuador
- Code: EETA
- Description: Tallinn, Estonia
- Code: EGCA
- Description: Cairo, Egypt
- Code: ESAS
- Description: ESAS Settlement Day (as defined in 2006 ISDA Definitions Section 7.1 and Supplement Number 15 to the 2000 ISDA Definitions)
- Code: ESBA
- Description: Barcelona, Spain
- Code: ESMA
- Description: Madrid, Spain
- Code: ESSS
- Description: San Sebastian, Spain
- Code: ETAA
- Description: Addis Ababa, Ethiopia
- Code: EUR
- Description: -ICESWAP Publication dates for ICE Swap rates based on EUR-EURIBOR rates
- Code: EUTA
- Description: TARGET Settlement Day
- Code: FIHE
- Description: Helsinki, Finland
- Code: FRPA
- Description: Paris, France
- Code: GBED
- Description: Edinburgh, Scotland
- Code: GBLO
- Description: London, United Kingdom
- Code: GBP
- Description: -ICESWAP Publication dates for GBP ICE Swap rates
- Code: GETB
- Description: Tbilisi, Georgia
- Code: GGSP
- Description: Saint Peter Port, Guernsey
- Code: GHAC
- Description: Accra, Ghana
- Code: GIGI
- Description: Gibraltar, Gibraltar
- Code: GMBA
- Description: Banjul, Gambia
- Code: GNCO
- Description: Conakry, Guinea
- Code: GRAT
- Description: Athens, Greece
- Code: GTGC
- Description: Guatemala City, Guatemala
- Code: HKHK
- Description: Hong Kong, Hong Kong
- Code: HNTE
- Description: Tegucigalpa, Honduras
- Code: HRZA
- Description: Zagreb, Republic of Croatia
- Code: HUBU
- Description: Budapest, Hungary
- Code: IDJA
- Description: Jakarta, Indonesia
- Code: IEDU
- Description: Dublin, Ireland
- Code: ILJE
- Description: Jerusalem, Israel
- Code: ILS
- Description: -SHIR Publication dates of the ILS-SHIR index.
- Code: ILS
- Description: -TELBOR Publication dates of the ILS-TELBOR index.
- Code: ILTA
- Description: Tel Aviv, Israel
- Code: INAH
- Description: Ahmedabad, India
- Code: INBA
- Description: Bangalore, India
- Code: INCH
- Description: Chennai, India
- Code: INHY
- Description: Hyderabad, India
- Code: INKO
- Description: Kolkata, India
- Code: INMU
- Description: Mumbai, India
- Code: INND
- Description: New Delhi, India
- Code: IQBA
- Description: Baghdad, Iraq
- Code: IRTE
- Description: Teheran, Iran
- Code: ISRE
- Description: Reykjavik, Iceland
- Code: ITMI
- Description: Milan, Italy
- Code: ITRO
- Description: Rome, Italy
- Code: ITTU
- Description: Turin, Italy
- Code: JESH
- Description: St. Helier, Channel Islands, Jersey
- Code: JMKI
- Description: Kingston, Jamaica
- Code: JOAM
- Description: Amman, Jordan
- Code: JPTO
- Description: Tokyo, Japan
- Code: KENA
- Description: Nairobi, Kenya
- Code: KHPP
- Description: Phnom Penh, Cambodia
- Code: KRSE
- Description: Seoul, Republic of Korea
- Code: KWKC
- Description: Kuwait City, Kuwait
- Code: KYGE
- Description: George Town, Cayman Islands
- Code: KZAL
- Description: Almaty, Kazakhstan
- Code: LAVI
- Description: Vientiane, Laos
- Code: LBBE
- Description: Beirut, Lebanon
- Code: LKCO
- Description: Colombo, Sri Lanka
- Code: LULU
- Description: Luxembourg, Luxembourg
- Code: LVRI
- Description: Riga, Latvia
- Code: MACA
- Description: Casablanca, Morocco
- Code: MARA
- Description: Rabat, Morocco
- Code: MCMO
- Description: Monaco, Monaco
- Code: MNUB
- Description: Ulan Bator, Mongolia
- Code: MOMA
- Description: Macau, Macao
- Code: MTVA
- Description: Valletta, Malta
- Code: MUPL
- Description: Port Louis, Mauritius
- Code: MVMA
- Description: Male, Maldives
- Code: MWLI
- Description: Lilongwe, Malawi
- Code: MXMC
- Description: Mexico City, Mexico
- Code: MYKL
- Description: Kuala Lumpur, Malaysia
- Code: MYLA
- Description: Labuan, Malaysia
- Code: MZMA
- Description: Maputo, Mozambique
- Code: NAWI
- Description: Windhoek, Namibia
- Code: NGAB
- Description: Abuja, Nigeria
- Code: NGLA
- Description: Lagos, Nigeria
- Code: NLAM
- Description: Amsterdam, Netherlands
- Code: NLRO
- Description: Rotterdam, Netherlands
- Code: NOOS
- Description: Oslo, Norway
- Code: NPKA
- Description: Kathmandu, Nepal
- Code: NYFD
- Description: New York Fed Business Day (as defined in 2006 ISDA Definitions Section 1.9, 2000 ISDA Definitions Section 1.9, and 2021 ISDA Definitions Section 2.1.7)
- Code: NYSE
- Description: New York Stock Exchange Business Day (as defined in 2006 ISDA Definitions Section 1.10, 2000 ISDA Definitions Section 1.10, and 2021 ISDA Definitions Section 2.1.8)
- Code: NZAU
- Description: Auckland, New Zealand
- Code: New
- Description: Zealand Business Day (proposed effective date: 2025-10-06)
- Code: NZBD
- Description: New Zealand Business Day (proposed effective date: 2025-10-06)
- Code: NZWE
- Description: Wellington, New Zealand
- Code: OMMU
- Description: Muscat, Oman
- Code: PAPC
- Description: Panama City, Panama
- Code: PELI
- Description: Lima, Peru
- Code: PHMA
- Description: Manila, Philippines
- Code: PHMK
- Description: Makati, Philippines
- Code: PKKA
- Description: Karachi, Pakistan
- Code: PLWA
- Description: Warsaw, Poland
- Code: PRSJ
- Description: San Juan, Puerto Rico
- Code: PTLI
- Description: Lisbon, Portugal
- Code: QADO
- Description: Doha, Qatar
- Code: ROBU
- Description: Bucharest, Romania
- Code: RSBE
- Description: Belgrade, Serbia
- Code: RUMO
- Description: Moscow, Russian Federation
- Code: SAAB
- Description: Abha, Saudi Arabia
- Code: SAJE
- Description: Jeddah, Saudi Arabia
- Code: SARI
- Description: Riyadh, Saudi Arabia
- Code: SEST
- Description: Stockholm, Sweden
- Code: SGSI
- Description: Singapore, Singapore
- Code: SILJ
- Description: Ljubljana, Slovenia
- Code: SKBR
- Description: Bratislava, Slovakia
- Code: SLFR
- Description: Freetown, Sierra Leone
- Code: SNDA
- Description: Dakar, Senegal
- Code: SVSS
- Description: San Salvador, El Salvador
- Code: THBA
- Description: Bangkok, Thailand
- Code: TNTU
- Description: Tunis, Tunisia
- Code: TRAN
- Description: Ankara, Turkey
- Code: TRIS
- Description: Istanbul, Turkey
- Code: TTPS
- Description: Port of Spain, Trinidad and Tobago
- Code: TWTA
- Description: Taipei, Taiwan
- Code: TZDA
- Description: Dar es Salaam, Tanzania
- Code: TZDO
- Description: Dodoma, Tanzania
- Code: UAKI
- Description: Kiev, Ukraine
- Code: UGKA
- Description: Kampala, Uganda
- Code: USBO
- Description: Boston, Massachusetts, United States
- Code: USCH
- Description: Chicago, United States
- Code: USCR
- Description: Charlotte, North Carolina, United States
- Code: USDC
- Description: Washington, District of Columbia, United States
- Code: USD
- Description: -ICESWAP Publication dates for ICE Swap rates based on USD-LIBOR rates
- Code: USD
- Description: -MUNI Publication dates for the USD-Municipal Swap Index
- Code: USDN
- Description: Denver, United States
- Code: USDT
- Description: Detroit, Michigan, United States
- Code: USGS
- Description: U.S. Government Securities Business Day (as defined in 2006 ISDA Definitions Section 1.11 and 2000 ISDA Definitions Section 1.11)
- Code: USHL
- Description: Honolulu, Hawaii, United States
- Code: USHO
- Description: Houston, United States
- Code: USLA
- Description: Los Angeles, United States
- Code: USMB
- Description: Mobile, Alabama, United States
- Code: USMN
- Description: Minneapolis, United States
- Code: USNY
- Description: New York, United States
- Code: USPO
- Description: Portland, Oregon, United States
- Code: USSA
- Description: Sacramento, California, United States
- Code: USSE
- Description: Seattle, United States
- Code: USSF
- Description: San Francisco, United States
- Code: USWT
- Description: Wichita, United States
- Code: UYMO
- Description: Montevideo, Uruguay
- Code: UZTA
- Description: Tashkent, Uzbekistan
- Code: VECA
- Description: Caracas, Venezuela
- Code: VGRT
- Description: Road Town, Virgin Islands (British)
- Code: VNHA
- Description: Hanoi, Vietnam
- Code: VNHC
- Description: Ho Chi Minh (formerly Saigon), Vietnam
- Code: YEAD
- Description: Aden, Yemen
- Code: ZAJO
- Description: Johannesburg, South Africa
- Code: ZMLU
- Description: Lusaka, Zambia
- Code: ZWHA
- Description: Harare, Zimbabwe
Methodology screen review code
- make name column bigger.
- do not show description and URI by default.
- use tabs in detail window
- show all meta-data in details window.
Librarian errors code
When there is a failure publishing a dataset we just see "failed" in the wizard without any further details. Server log file says:
2026-01-21 22:21:07.676351 [DEBUG] [ores.dq.service.publication_service] Publishing dataset: slovaris.currencies with artefact_type: Solvaris Currencies 2026-01-21 22:21:07.676381 [ERROR] [ores.dq.service.publication_service] Unknown artefact_type: Solvaris Currencies for dataset: slovaris.currencies 2026-01-21 22:21:07.676412 [ERROR] [ores.dq.service.publication_service] Failed to publish slovaris.currencies: Unknown artefact_type: Solvaris Currencies 2026-01-21 22:21:07.676437 [INFO] [ores.dq.service.publication_service] Publishing dataset: slovaris.country_flags (Solvaris Country Flag Images) 2026-01-21 22:21:07.676460 [DEBUG] [ores.dq.service.publication_service] Publishing dataset: slovaris.country_flags with artefact_type: Solvaris Country Flag Images 2026-01-21 22:21:07.676491 [ERROR] [ores.dq.service.publication_service] Unknown artefact_type: Solvaris Country Flag Images for dataset: slovaris.country_flags 2026-01-21 22:21:07.676518 [ERROR] [ores.dq.service.publication_service] Failed to publish slovaris.country_flags: Unknown artefact_type: Solvaris Country Flag Images 2026-01-21 22:21:07.676542 [INFO] [ores.dq.service.publication_service] Publishing dataset: slovaris.countries (Solvaris Countries) 2026-01-21 22:21:07.676566 [DEBUG] [ores.dq.service.publication_service] Publishing dataset: slovaris.countries with artefact_type: Solvaris Countries 2026-01-21 22:21:07.676592 [ERROR] [ores.dq.service.publication_service] Unknown artefact_type: Solvaris Countries for dataset: slovaris.countries 2026-01-21 22:21:07.676618 [ERROR] [ores.dq.service.publication_service] Failed to publish slovaris.countries: Unknown artefact_type: Solvaris Countries
To reproduce, change artefact type in codegen back to "Solvaris Currencies".
General session dialog code
At present we can't see a dialog with sessions for all users. We need to go to accounts to see a specific user session. We need to modify this dialog to be able to show either all sessions or sessions for a specific user.
Notes:
- it should be possible to kick out a user or selection of users.
- it should be possible to send a message to a user or all users.
- session icon is just a circle
- add paging support.
Issues with event viewer code
- no icon.
- can't filter by event type.
- always collect events in ring buffer. Search for story on this.
Add action type to trades code
Seems like FPML has some kind of trade activity like actions:
Improve tag support code
At present we are not tagging DQ entities very well. For example, crypto currencies should be tagged as both crypto and currencies, etc.
Also tags have duplicates, and versioning does not seem to be working:
ores_frosty_leaf=> select * from dq_tags_artefact_tbl; dataset_id | tag_id | version | name | description --------------------------------------+--------------------------------------+---------+----------------+--------------------------------------- 93d187a9-fa26-4569-ab26-18154b58c5c7 | 65bd2824-bd43-4090-9f1a-a97dfef529ca | 0 | flag | Country and region flag images c8912e75-9238-4f97-b8da-065a11b8bcc8 | 75ee83a7-2c54-448c-b073-8d68107d136e | 0 | cryptocurrency | Cryptocurrency icon images 30c0e0b8-c486-4bc1-a6f4-19db8fa691c9 | 2d3eace5-733c-47b3-b328-f99a358fe2a8 | 0 | currency | Currency reference data d8093e17-8954-4928-a705-4fc03e400eee | 71e0c456-94fb-4e44-83f1-33ae1139e333 | 0 | currency | Non-ISO currency reference data d3a4e751-ae30-497c-96b1-f727201d536b | c57ee434-bbc2-48c1-9a59-c9799e701288 | 0 | cryptocurrency | Cryptocurrency reference data 44ff5afd-a1b7-42d2-84a7-432092616c40 | d6453cf6-f23b-4f97-b600-51fcad21c8aa | 0 | geolocation | IP address geolocation reference data
We need a generic tags table and then a junction between say datasets and tags, etc. Delete all of the existing half-baked tags implementations. Also have a look at the story in backlog about tags and labels.
Authentication failed dialog does not have details code
At present we show the C++ exception:
Authentication failed: Failed to connect to server: Connection refused [system:111 at /home/marco/Development/OreStudio/OreStudio.local1/build/output/linux-clang-debug/vcpkg_installed/x64-linux/include/boost/asio/detail/reactive_socket_connect_op.hpp:97:37 in function 'static void boost::asio::detail::reactive_socket_connect_op<boost::asio::detail::range_connect_op<boost::asio::ip::tcp, boost::asio::any_io_executor, boost::asio::ip::basic_resolver_results<boost::asio::ip::tcp>, boost::asio::detail::default_connect_condition, boost::asio::detail::awaitable_handler<boost::asio::any_io_executor, boost::system::error_code, boost::asio::ip::basic_endpoint<boost::asio::ip::tcp>>>, boost::asio::any_io_executor>::do_complete(void *, operation *, const boost::system::error_code &, std::size_t) [Handler = boost::asio::detail::range_connect_op<boost::asio::ip::tcp, boost::asio::any_io_executor, boost::asio::ip::basic_resolver_results<boost::asio::ip::tcp>, boost::asio::detail::default_connect_condition, boost::asio::detail::awaitable_handler<boost::asio::any_io_executor, boost::system::error_code, boost::asio::ip::basic_endpoint<boost::asio::ip::tcp>>>, IoExecutor = boost::asio::any_io_executor]']
Add details button.
Ensure DQ dataset checks use code code
We are still checking for Name:
-- Get the flags dataset ID (for linking images) select id into v_flags_dataset_id from ores.dq_datasets_tbl where name = 'Country Flag Images' and subject_area_name = 'Country Flags' and domain_name = 'Reference Data' and valid_to = ores.utility_infinity_timestamp_fn(); if v_flags_dataset_id is null then raise exception 'Dataset not found: Country Flag Images'; end if;
Create subsets of datasets code
In some cases we may just want to publish a subset of a dataset. For example, Majors, G11, etc. Or maybe these are just separate datasets?
In fact that is what they are. Break apart the larger sets - in particular currencies, countries, cryptos.
Management of roles code
At present we have system level roles. This is not ideal, you may want to delete roles, add them etc. Do some analysis on the best way to implement these. We could have curated datasets for roles as well. Admin is the exception.
Notes:
- should be possible to see which accounts have what roles.
Publish history dialog is non-standard code
- always on top.
- no paging.
Add purge button to all entities code
We should be able to completely trash all data. We probably need a special permission for this but admin should be able to do it. Ideally all entity dialogs should have a purge action.
We should also have a "purge all" button which purges all data from all tables - ignores roles etc. This could be available on the data librarian.
Improve icon for methodology and dimensions code
At present we have icons which are not very sensible. For methodology we could use something that reminds one of a laboratory.
Clicking on connection should provide info code
- when never connected: nothing.
- when connected: server, bytes sent, received, status of connection.
- when disconnected: retries, disconnected since.
Add coloured icons code
At present we are using black and white icons. These are a bit hard to see. We should try the coloured ones and see if it improves readability.
Footer
| Previous: Version Zero |