User Journey: Import one dataset in isolation

Table of Contents

This page documents a user journey: A reference-data maintainer imports only conventions, or only curves, to fix one dataset without touching the rest of the party's data.

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 have a corrected conventions.xml or curveconfig.xml and I want that one dataset replaced, not the party's whole configuration." The journey is done when the named dataset is stored, a report reads it, and nothing else in the party changed.

2. Actor and trigger

The actor is a reference-data maintainer who holds refdata::conventions:write for a conventions file, or the run-document write for a curve file. The trigger is a wrong day count, a moved calendar, a bad curve pillar, or a vendor file that corrects one family. The journey starts with one file and ends when the person has read the affected family and confirmed the rest is untouched.

3. Steps

  1. Choose the dataset. The person decides whether the file carries conventions, curves, today's market or pricing engines. The choice is the file, because ORE's run document names each document separately.
  2. Prepare a minimal run. The person builds a small input directory with ore.xml naming only that one file, or takes an exported run directory and removes the documents this import must not touch.
  3. Import the file. The person runs ore import-run <report_definition_id> <src_dir>. The system parses the run document and the named file, binds the document under the report definition, and saves it.
  4. Check the one family. The person opens the conventions screen or the curve screen and reads the rows the file carried.
  5. Check that the rest held. The person compares another family or another curve configuration with what it held before.

If the fix is a single convention row rather than a file, the person edits it on the conventions screen and saves it through refdata.v1.<plural>.put. That is the authoring journey, not this one.

4. On success

The run import prints the stored file. The affected family or curve reads the new values with a new version and a change reason. The other families, curves, market data and trades keep their versions.

5. On failure

A parse error refuses the import before any write. A file the run document names but the directory does not hold is refused. A save that fails after an earlier document stored leaves the earlier document stored. The run import does not undo conventions on a later failure. A conventions save writes each family in its own write, so a failure partway leaves the earlier families written. Nothing in the shell names the family that failed.

6. What must never happen

  • The import must never delete the datasets the file omits. The save adds and replaces, and tenor basis swap leg forms are the one thing it closes when they are omitted.
  • The import must never write a family the person did not choose. That is why the run document carries one file.
  • The import must never leave another dataset's rows altered by a side effect of the save.
  • The import must never store a curve against another party's run.

7. Screens and entry points

There is no import screen. The entry points are ore import-run and ore export-run. The conventions screen can save one convention but cannot accept a file. There is no shell verb that stores a lone conventions or curve file.

8. Entities composed

Entity What it contributes Model
conventions_bundle The family rows the file carries  
curve_configuration_document The curve definitions  
report_definition, run_document The binding the import stores against  
swap_convention or the named family The rows the person checks  

9. Operations and messages

Step Operation Subject Status
Choose the dataset No operation: the person chooses the file none n/a
Prepare a minimal run No operation: the person edits the input none n/a
Import the file Start the run import ore.v1.ops.import_run_configuration exists
Import the file Store conventions refdata.v1.conventions_documents.put exists
Import the file Store curves refdata.v1.curve_configuration_documents.put exists
Check the one family Read the conventions refdata.v1.conventions_documents.get exists
Check the rest held Read another configuration the owning service's read exists

10. What is missing

  1. No standalone file import. Every dataset travels in a run directory. The person builds a fake run to import one file.
  2. No family scope. The person cannot say "store only the swap family" and let the server take the rest of the file as unchanged context.
  3. No per-family result. The shell reports the file, not the family or row counts.
  4. No merge preview. The screen cannot show which rows would be replaced before the save.

11. Related journeys

12. Related knowledge

13. See also

Emacs 29.3 (Org mode 9.6.15)