Skip to content

Virtual Files

Virtual files define the storage paths and naming rules for exchanged files.

Virtual Files

Concept

A virtual file is an abstraction that allows you to:

  • Define where to store received files
  • Define where to look for files to send
  • Apply naming rules
  • Organize exchanges by type

Create a Virtual File

Via the Interface

  1. Select your cluster
  2. Go to Virtual Files
  3. Click Add Virtual File
  4. Fill in the virtual file information
  5. Click Create

Virtual File Form

Via API

bash
curl -X POST http://localhost:8080/api/v1/clusters/{clusterId}/virtual-files \
  -u admin:admin \
  -H "Content-Type: application/json" \
  -d '{
    "fileId": "TRANSFERS",
    "name": "SEPA transfer files",
    "sendDirectory": "/data/send/transfers",
    "receiveDirectory": "/data/received/transfers",
    "filenamePattern": "*.xml"
  }'

Parameters

ParameterDescription
fileIdUnique identifier (PI_12)
nameDisplay name
sendDirectoryDirectory for files to send
receiveDirectoryDirectory for received files
receiveFilenamePatternNaming pattern with placeholders
overwriteOverwrite existing files
directionRECEIVE, SEND or BOTH

Naming Pattern with Placeholders

For received files, you can define a dynamic naming pattern using placeholders.

Available Placeholders

PlaceholderDescription
${partner}Partner ID (PI 3 - Requester)
${virtualFile}Virtual file name (PI 12)
${transferId}Transfer ID (PI 13)
${timestamp}Timestamp (yyyyMMdd_HHmmss)
${date}Date (yyyyMMdd)
${time}Time (HHmmss)
${year}, ${month}, ${day}Date components
${uuid}Unique UUID

Pattern Examples

${partner}/${virtualFile}_${timestamp}

Result: PARTNER01/TRANSFERS_20251211_213000

${date}/${partner}_${transferId}

Result: 20251211/PARTNER01_12345

PeSIT Wizard Note

The PeSIT protocol does not transmit the physical source filename, only the virtual file identifier (PI 12). Placeholders like ${file}, ${basename}, ${ext} are therefore not available.

/data
├── send/
│   ├── transfers/       # TRANSFERS - files to send
│   ├── direct-debits/   # DIRECT_DEBITS
│   └── misc/            # MISC

└── received/
    ├── statements/      # STATEMENTS - received files
    ├── ack/             # ACK - acknowledgements
    └── misc/            # MISC

Configuration Examples

SEPA Transfers

json
{
  "fileId": "TRANSFERS",
  "name": "SEPA Transfers",
  "sendDirectory": "/data/send/transfers",
  "receiveDirectory": "/data/received/transfers",
  "filenamePattern": "pain.001.*.xml"
}

Account Statements

json
{
  "fileId": "STATEMENTS",
  "name": "Account Statements",
  "sendDirectory": "/data/send/statements",
  "receiveDirectory": "/data/received/statements",
  "filenamePattern": "camt.053.*.xml"
}

SEPA Direct Debits

json
{
  "fileId": "DIRECT_DEBITS",
  "name": "SEPA Direct Debits",
  "sendDirectory": "/data/send/direct-debits",
  "receiveDirectory": "/data/received/direct-debits",
  "filenamePattern": "pain.008.*.xml"
}

Directory Permissions

Ensure the PeSIT Wizard server has write permissions:

bash
# Inside the container
chown -R pesitwizard:pesitwizard /data
chmod -R 755 /data

Best Practices

  1. One virtual file per type: Separate transfers, direct debits, statements
  2. Explicit naming: SEPA_TRANSFERS rather than TRF
  3. Absolute paths: Use /data/... and not ./data/...
  4. Restrictive patterns: Limit accepted extensions

PeSIT Wizard Enterprise - Console d'administration