Mobile-ID · Long-term digital evidence preservation
Customers and partnersWorkflow demoContact
Trusted LTANS
Evaluate
MOBILE-ID · TRUSTED LTANS

Batch / SFTP

Seal inventories, transfer batches atomically and reconcile every item before completion.

VI–EN terminology

A reconcilable batch connector

This is a target connector convention for deployment agreement, not a provisioned SFTP endpoint or an accepted REST extension.

01

Prepare

Inventory and hash each file; retain relative paths.

02

Stage upload

Upload to staging; do not ingest files still being written.

03

Seal batch

Use atomic rename or a profile-defined completion signal.

04

Validate

Check authority, paths, MIME, digests and per-item idempotency.

05

Acknowledge

Return per-item results with archiveId/jobId links.

06

Reconcile

Complete only when every item has a reconciled outcome.

Structure and sample manifest

Target directory convention
batch-test-001/
  manifest.json
  payload/record.txt
  payload/record-2.txt
  COMPLETE   # optional deployment-agreed marker
JSON
{
  "format": "ltans-batch-target-1",
  "batchId": "batch-test-001",
  "sourceSystem": "synthetic-dms",
  "closedAt": "2026-10-15T07:00:00Z",
  "items": [
    {
      "sourceId": "record-test-001",
      "path": "payload/record.txt",
      "mimeType": "text/plain",
      "digest": {
        "algorithm": "SHA-256",
        "value": "e436e77069edf8e8304082264f9307846d4847c55e249d17560dcdcde49385b8"
      },
      "profileId": "profile-test-01",
      "policyId": "policy-test-v1"
    },
    {
      "sourceId": "record-test-002",
      "path": "payload/record-2.txt",
      "mimeType": "text/plain",
      "digest": {
        "algorithm": "SHA-256",
        "value": "1ce3381cd3564715e1aff7426b16e48409930a4713913d91a472f62dab322eb5"
      },
      "profileId": "profile-test-01",
      "policyId": "policy-test-v1"
    }
  ]
}
Download sample manifest

Partial failure and resumption

The receipt illustrates a negative case: the second file changes after manifest sealing. samples/batch-target retains the original valid data; this receipt was not produced by a backend.

JSON
{
  "batchId": "batch-test-001",
  "state": "PARTIAL",
  "items": [
    {
      "sourceId": "record-test-001",
      "state": "ACCEPTED",
      "archiveId": "arc-test-001"
    },
    {
      "sourceId": "record-test-002",
      "state": "REJECTED",
      "code": "SOURCE_DIGEST_MISMATCH"
    }
  ]
}

Next steps

Search LTANS documentation

Expanded illustration