Importing event logs
The wizard accepts five format families, probes them server-side, and writes nothing until you confirm the interpretation.
Formats#
| Format | Extensions | Mapping step |
|---|---|---|
| XES | .xes, .xes.gz | none — the file carries its own schema |
| CSV | .csv | required: case id, activity, timestamp |
| XML | .xml | required: the event element, then column roles |
| JSON event log | .json | required: the event path, then column roles |
| OCEL 2.0 | .jsonocel, .xmlocel, .sqlite | none — object-centric structure is in the file |
All formats accept .gz, .bz2, .xz, and .zip wrappers.
An archive holding several logs (.zip, .tar, .tar.gz, .tgz – a BPI Challenge download, say) opens a picker first. Every log in it starts selected; READMEs, licences and nested archives are listed with the reason they are skipped. Each log you keep is unpacked on its own, gets its own mapping step, and becomes a separate process. Unpacking is bounded by the zip-bomb guards in Configuration.
The mapping wizard#
Choose a file — drop it on the zone or pick it from disk.
Upload — streams to a staging area with byte-level progress; nothing is parsed yet.
Probe — the server samples a few hundred events and proposes column roles.
Map — confirm the roles and the format-specific extras.
Import — parse, normalise, write Parquet. The process is ready as soon as it is saved; modules compute when first opened.
Staged files live under data/staging/{user}/{token}/ and are removed after two hours, so an abandoned wizard leaves nothing behind.
| Role | Required | Unlocks |
|---|---|---|
case_id | yes | Cases, variants, everything case-scoped. |
activity | yes | Activities, DFGs, models, complexity. |
timestamp | yes | Ordering, time bounds, trends. |
end_timestamp | no | Durations, waiting times, performance metrics. |
resource | no | Actor analyses (actor_performance requires it). |
cost | no | Cost aggregations where a module uses them. |
Format extras appear where they apply: CSV delimiter, XML event element, a JSON array key, and an optional timestamp format (offered for every mapping-based format, used when the sample is ambiguous). Each row carries a confidence chip — user → Your choice, exact → Matched, fuzzy → Guessed, fallback → Inferred from data. When a provider is configured the wizard re-proposes low-confidence rows automatically and marks them AI. Any edit re-opens the confirmation gate; Confirm mapping unlocks the import, and Start import runs it.
Progress and repair#
The checklist mirrors the real job: Uploading file, Reading columns, Reading data, Processing events, Saving. When Saving is done the process is open; there is no module step to wait for, because modules compute the first time you open them. The few eager ones (Discovery) warm up in the background and appear in the jobs drawer.
Fixable problems are repaired rather than rejected — case-insensitive duplicate columns are merged, values are coerced to their column type, timestamps normalised — and the count of fixes is reported. A module that fails is marked and never affects the log.
After the import#
| Action | Where | Effect |
|---|---|---|
| Re-run import | Row menu, or Maintenance in the log's settings | Rebuilds from the retained original upload. |
| Remap columns | Log settings → Column roles | Forces new roles and re-runs the import. |
| Duplicate | Row menu | Clones the log row and directory — useful for comparing filtered views. |
| Rename | Row menu → Rename (dialog) | Display name only; URLs keep the log id. |
| Delete | Row menu | Cancels its jobs, removes the data on disk and the S3 prefix. |