Skip to main content

Creating a data processor

:::info Status Outline — expand with a full worked example (e.g. a new batch import/export processor). :::

:::tip Use the shipped skill Prefer the create-data-processor skill (in your scaffolded repo's .claude/skills/) over hand-rolling this. :::

A DataProcessor is a transient batch-operation form — it isn't persisted itself. Think "import NBU exchange rates" or "recalculate item costs for a date range": a form the user fills in and runs, with no permanent record of the form instance afterward.

The pieces

*Dto/[KandraDataProcessorForm] plus a *Validator — both DI wiring and the Blazor UI (DataProcessorPageBase) are generated, the same as other form-bearing kinds. There's no *Base EF entity in the usual sense, since nothing is persisted.

Worked example on the platform team's side

The NBU currency-rate import (Kandra.Plugins.UA.Rates.Nbu) is a real, shipped data processor on the platform team's own reference configuration — and also the canonical example of the plugin layering model: an optional locale-specific piece that plugs into a configuration without living in its core. It's a useful conceptual example even without access to that source, since Plugins covers the same layering model your own configuration can use.

Gotchas worth knowing before you start

  • DataProcessorPageBase needs a null-Filters/parameters render guard — the same pattern reports needed, since both can render before the first parameter load completes.

See also