Fill in per load
Delphoria required
Rule: if a source field has no destination, the load fails validation — do not silently drop.
A B C D E F G H
2 1 DLPUniqueID String(40) Yes — Unique, not null, format regex
3 2 DocID String(40) Yes — Unique
4 3 BeginBates String(20) Post-Prod — Null pre-production
5 4 EndBates String(20) Post-Prod — Null pre-production
6 5 BeginAttach String(20) Yes — Family integrity check
7 6 EndAttach String(20) Yes — Family integrity check
8 7 Custodian String(80) Yes Trim, title-case Not null; in Custodian list
9 8 CustodianCode String(6) Yes Uppercase Regex ^[A-Z]{2,6}$
10 9 SourceCode String(6) Yes Uppercase Enum: M365, LAP, MOB, WA, SLK, TMS, OD, GDR, BOX, NET, SOC, SIG, GWS
11 10 FileName String(255) Yes — Not null
12 11 FilePath String(1024) Yes Backslash → forward —
13 12 FileSize Int Yes Coerce to Int > 0 unless zero-byte flagged
14 13 FileExtension String(10) Yes Lowercase, strip dot —
15 14 FileType String(40) Yes — —
16 15 MD5Hash String(32) Yes Lowercase Regex ^[a-f0-9]{32}$
17 16 SHA256Hash String(64) Yes Lowercase Regex ^[a-f0-9]{64}$
18 17 Author String(255) Yes Trim May be null
19 18 DateCreated DateTime Yes ISO 8601 UTC TZ suffix required
20 19 DateModified DateTime Yes ISO 8601 UTC —
21 20 DateSent DateTime Yes ISO 8601 UTC Email only
22 21 DateReceived DateTime Yes ISO 8601 UTC Email only
23 22 From String(500) Yes — Email only
24 23 To String(4000) Yes Semicolon join —
25 24 Cc String(4000) Yes Semicolon join —
26 25 Bcc String(4000) Yes Semicolon join —
27 26 Subject String(500) Yes Verbatim —
28 27 ConversationID String(128) Yes — —
29 28 ThreadingID String(40) Yes — —
30 29 AllCustodians String(4000) Yes Semicolon join Non-null if dedup'd
31 30 NativeFilePath String(1024) Yes Forward slash Path exists check
32 31 TextPath String(1024) Yes Forward slash Path exists check
33 32 OCRPath String(1024) Yes Forward slash Path exists check
34 33 ProtocolVersion String(10) Yes — Non-null
35 34 CollectionDate DateTime Yes ISO 8601 UTC Non-null
Sign-off. When column D is complete for every row, the review-tool admin runs the load in a dry mode and reports back with a validation summary. Only after zero validation errors does the actual load proceed. If the vendor pushes to skip the dry run, don't.