User Journey: Onboard a party with its conventions and portfolio

Table of Contents

This page documents a user journey: A tenant administrator brings a new party's conventions and portfolio in from another system, and nothing else.

A user journey describes what one person is trying to do, before anything is built. It is a design document that outlives any sprint, so it names the screens, the entity fields each screen shows, and the operations and messages each step needs.

1. Goal

"I want this party working with its own conventions and its own portfolio, and I do not want to bring the whole source system with me." The journey is done when the party's conventions are stored, its portfolio tree reads, and no market data, curves or pricing engines were imported.

2. Actor and trigger

The actor is a tenant administrator inside the tenant, or an operations user who holds both the convention write and the portfolio import permissions. The trigger is a new party, a merger, or a party moving from another installation. The journey starts after the party exists and the person has switched to it, and ends when the two data sets read.

The party matters twice. The conventions are stored against the session's party, and the portfolio import books trades in the session's party. The shell refuses an import that names a different party.

3. Steps

  1. Switch to the party. The person signs in to the new party, or switches to it. The session now scopes every read and write.
  2. Prepare the smallest run. The conventions travel only inside an ORE input directory, because there is no shell verb that stores a lone conventions.xml. The person writes an ore.xml whose Setup names just conventions.xml and puts that file beside it, or exports a run directory from the source and removes the files this party should not receive.
  3. Import the conventions. The person runs ore import-run <report_definition_id> <src_dir>. The report definition must already exist. The system creates the binding, stores the conventions document, and saves every family.
  4. Import the portfolio. The person uploads the portfolio tree with ore upload and imports it with ore import, naming the parent portfolio. The system creates the tree and books the trades.
  5. Check what did not come. The person reads the conventions screens and the trade list, and confirms that no curves, market data or pricing engines were created.

4. On success

The run import reports the stored files. The conventions screens show the party's families and the world families it reads. The trade list shows the imported trades under the portfolio. Market data and curve screens show nothing new.

5. On failure

The run import refuses before writing when the run document names a file the directory does not hold, or when a file does not parse. If a later document fails, the import undoes the curves, market data, pricing engines and run document it stored. It does not undo conventions. A portfolio import with an unresolved counterparty reports the trade and leaves it out. A file with no portfolio root is ignored. A party that is not the session's party is refused with the session's party named.

6. What must never happen

  • The import must never store the source tenant's world conventions over the target tenant's own. A world convention is added only when the tenant lacks it.
  • The import must never bring market data, curves or pricing engines when only conventions and a portfolio were asked for.
  • The import must never write a trade into the old party.
  • A convention the file omits must never be deleted. Omission is not a delete.
  • FX conventions must never vanish silently. They have no store today and the response lists them.

7. Screens and entry points

There is no screen for this journey. The conventions screen edits one family at a time and has no import action. The portfolio import is a shell verb. The person needs a report definition to exist before ore import-run can bind the conventions to it.

8. Entities composed

Entity What contributes Model
conventions_bundle The 27 families, still carried as one message today  
report_definition, run_document The run the conventions are bound to  
portfolio, book The imported tree  
trade The imported trades  
party The scope that owns the conventions and the trades  

9. Operations and messages

Step Operation Subject Status
Switch to the party Establish the session the sign-in operation exists
Prepare the smallest run No operation: the person edits the input directory none n/a
Import the conventions Start the run import ore.v1.ops.import_run_configuration exists
Import the conventions Store the conventions document refdata.v1.conventions_documents.put exists
Import the conventions Read the stored conventions refdata.v1.conventions_documents.get exists
Import the portfolio Upload the tarball the ore bucket exists
Import the portfolio Start the trade import workflow.v1.ops.ore_import exists

10. What is missing

  1. No standalone conventions import. A person who has one conventions.xml must build a run directory and a report definition to carry it. A verb that takes the file and the party is the gap.
  2. No family selector. The run import stores every document the run names. To import conventions only, the person edits the input by hand.
  3. No per-family result. The run import reports files, not families. The response's world_kept and fx_skipped lists are not printed by the shell.
  4. No preview. The family counts are not visible before the save.

11. Related journeys

12. Related knowledge

13. See also

Emacs 29.3 (Org mode 9.6.15)