1. Problem Summary
The SIMATIC PCS 7 BATCH control center (BatchCC) refuses to archive a closed or aborted batch and returns a dialog with the message:
No empty strings permitted.
The condition appears immediately after the operator selects Archive on a batch order that was started, stopped, aborted, and closed. The fault is not transient: re-attempting the archive operation reproduces the same dialog until the underlying configuration is repaired. The message is generated inside the SIMATIC BATCH archive component (BATCH Archive Service / BATCHArchiveSrv.exe) and is logged against the batch control server's local event log and the WinCC diagnostics files.
This error is one of the most frequently reported archive-side faults on PCS 7 V8.x and V9.x installations where the archive target is undefined, the path is given as a local drive, the share is unreachable, or the archive method is set to a transport (XML/FTP/ODBC) without a corresponding destination string.
2. Symptom Identification
Before changing configuration, capture the following information so the root cause can be confirmed:
- Open the Batch Control Center on the BATCH server.
- Select the affected batch, right-click, and choose Archive.
- Observe the dialog title (it will read "Archive Batch") and the body text "No empty strings permitted".
- Click OK; the batch is left in the closed but un-archived state and can be reopened for investigation.
- Open the Windows Event Viewer on the BATCH server. Under Applications and Services Logs → SIMATIC BATCH, locate the matching entry. Typical Event ID values: 1, 1000, or 1500 with category "Archive Service" and description text matching the dialog.
- Open
C:\ProgramData\Siemens\Automation\BatchCC\Log(path varies by PCS 7 version) and inspect the most recentBatchCC_*.logfor the substring No empty strings.
3. Root Cause Analysis
The "No empty strings permitted" exception is a System.ArgumentException thrown by the .NET assembly Siemens.Simatic.Batch.Archive.dll when a required archive parameter resolves to an empty value at runtime. The exception is surfaced as a Win32 message box by the BatchCC frontend. In practice, the empty string is one of the following:
| # | Root cause | Where the empty value lives | Verification |
|---|---|---|---|
| R1 | Archive folder path is blank | BatchCC → Options → Settings → Archive → Archive path | Field is empty or contains only whitespace |
| R2 | Archive folder path is a local drive letter (e.g. C:\Batches) but the BATCH service runs under a non-interactive account |
Same as R1 | Replace with UNC path |
| R3 | Archive method is set to XML via FTP, XML to directory, or ODBC but the corresponding target (FTP URL, target directory, ODBC DSN) is blank | Options → Settings → Archive tab | Each transport field must contain a non-empty string |
| R4 | Network share exists but is not reachable under the BATCH service account | UNC path validation | Test with NET USE \\server\share under the service account |
| R5 | Group policy redirected the archive folder to a per-user location that resolves to an empty string on the BATCH service identity | User profile path | Inspect service account's %USERPROFILE%
|
| R6 | Recipe / master recipe procedure has a parameter whose Name or Value is an empty string at archive time |
Recipe editor in the BatchCC library | Open the master recipe and inspect input / output parameters |
| R7 | Operating parameter set used to start the batch contains an empty string for a mandatory parameter | Batch start dialog → Master recipe parameters | Re-open the batch and inspect the parameter list |
R1 through R5 are account/configuration problems and account for the vast majority of occurrences. R6 and R7 are recipe-level issues that produce the same dialog but are detected at a different stage of the archive pipeline; the BatchCC error string is identical, so the two failure modes must be distinguished by the diagnostic log.
4. Architecture Background
SIMATIC BATCH is a server-side component of PCS 7 that runs alongside WinCC and the AS runtime. The components involved in archive are:
- Batch Control Center (BatchCC) – operator and engineering client; launches archive operations.
-
Batch Server – hosts the
BATCHServer.exeservice and the SQL ServerBatchDBdatabase. -
Archive Service –
BATCHArchiveSrv.exe, responsible for serializing closed batches to XML and writing them to the archive target. Reads its configuration fromSIMATIC BATCH Configuration → Archivestored underHKEY_LOCAL_MACHINE\SOFTWARE\Siemens\Automation\Batch\Archive. - Archive Target – the destination for archived batches. Can be a local folder, a UNC share, an FTP server, or an ODBC-compliant RDBMS.
The archive process is initiated by a click on Archive in BatchCC, which sends an RPC to the Batch Server. The Batch Server validates that every required archive parameter is a non-empty string before calling the Archive Service. Any parameter that evaluates to System.String.Empty raises the .NET exception, which is caught and surfaced as the user-visible dialog.
5. Preconditions for Resolution
- You must be a member of the Windows group
SIMATIC BATCH Administratorson the BATCH server. - The BatchCC must be closed on every engineering station connected to the same BatchDB; otherwise configuration changes are overwritten by the running client.
- The Windows user running
BATCHArchiveSrv.exemust haveRead,Write,Modify, andDeleteNTFS permissions on the archive share. - If the share is on a remote file server, that server must be reachable on TCP port 445 (SMB) from the BATCH server, and the network path must resolve in both directions.
- For ODBC targets, the 32-bit ODBC administrator on the BATCH server must contain a valid DSN (
C:\Windows\SysWOW64\odbcad32.exe) with credentials able to insert into the destination table.
6. Step-by-Step Resolution
6.1 Configure the archive path with a UNC name
- Open BatchCC on the BATCH server.
- From the menu bar choose Options → Settings.
- Open the Archive tab.
- In the Archive path field, type a UNC path, for example:
\\BATCH-FS01\BATCH_Archive\Plant_41 - If the project uses an FTP target, populate FTP server, FTP user, FTP password, and FTP target path fields. None of these may remain empty.
- Click Apply then OK.
- Restart the SIMATIC BATCH Archive Service from the Windows services.msc console.
6.2 Create the share and grant permissions
- On the file server (e.g.
BATCH-FS01), create the folderC:\BATCH_Archive\Plant_41. - Right-click the folder, choose Properties → Sharing → Advanced Sharing.
- Tick Share this folder, set share name to
BATCH_Archive. - Click Permissions; add the BATCH service account (typically
SIMATIC BATCHorsvcBatch) with Full Control. - Switch to the Security tab and add the same account with Modify NTFS rights.
- On the BATCH server, open an elevated command prompt and execute:
NET USE \\BATCH-FS01\BATCH_Archive /USER:<domain>\svcBatch *If the command returns The command completed successfully, the share is reachable.
6.3 Validate the archive method
From Options → Settings → Archive, the Method drop-down can be:
| Method | Required non-empty fields | Use case |
|---|---|---|
| XML (local) | Archive path (UNC) | Default; file-based archive to a network share |
| XML via FTP | Archive path, FTP server, FTP user, FTP password, FTP target path | Cross-site archive to a remote FTP host |
| ODBC | Archive path, ODBC DSN, ODBC user, ODBC password, ODBC target table | Direct insert into an audit database |
| Compliance XML | Archive path, Compliance target path, digital signature certificate | Regulated industries (FDA 21 CFR Part 11) |
If any of the fields listed above is blank, the Archive Service raises No empty strings permitted. Complete every field or switch back to XML (local) with only the archive path populated.
6.4 Recipe-level correction (if R6 / R7 is the cause)
- In BatchCC, open the Library view and select the master recipe used by the failed batch.
- Double-click each procedure and inspect the parameter list (input, output, and in/out parameters).
- Any parameter whose Name or default Value is empty must be filled in. The Archive Service treats both fields as required; an empty parameter value will fail the validation step.
- Check, compile, and release the recipe back to the BatchDB.
- Restart the failed batch using a corrected operating parameter set; archive should now succeed.
7. Verification
- Open BatchCC, locate a test batch (or create one with a simple master recipe).
- Start, stop, abort, close the batch.
- Right-click and select Archive. The dialog must close without an error.
- Navigate to the archive share (e.g.
\\BATCH-FS01\BATCH_Archive\Plant_41) and confirm a new XML file with the batch name and a timestamp is present. - Open the file in any XML viewer; the root element should be
<Batch>containing the full batch log, recipe, and parameter set. - Confirm the Event Viewer no longer records an archive exception for the test batch.
8. Configuration Reference
| Setting | Location | Default | Recommended value |
|---|---|---|---|
| Archive path | Options → Settings → Archive | empty | \\<server>\<share>\<area> |
| Archive method | Options → Settings → Archive | XML (local) | XML (local) or as required by SOP |
| Archive service account |
services.msc → SIMATIC BATCH Archive Service → Log On |
Local System | Domain service account with share permissions |
| Auto-archive on close | Options → Settings → Archive → Automatically archive closed batches | Off | On for regulated environments |
| Retention period (days) | Options → Settings → Archive | 365 | Per site SOP |
| Maximum archive file size (MB) | Registry: HKLM\SOFTWARE\Siemens\Automation\Batch\Archive\MaxFileSize
|
1024 | 512 to avoid large-file issues on SMB shares |
9. Registry-Level Override (Advanced)
For scripted or unattended installations, the archive settings can be pushed through the registry:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Siemens\Automation\Batch\Archive]
"ArchivePath"="\\\\BATCH-FS01\\BATCH_Archive\\Plant_41"
"ArchiveMethod"=dword:00000001
"FtpServer"=""
"FtpUser"=""
"FtpPassword"=""
"OdbcDsn"=""
"AutoArchive"=dword:00000001
After importing the .reg file, restart the SIMATIC BATCH Archive Service and re-test. Avoid editing the registry while BatchCC is open.
10. Troubleshooting Matrix
| Symptom | Likely cause | Diagnostic | Fix |
|---|---|---|---|
| "No empty strings permitted" on Archive | R1/R2: blank or local path | Check Archive tab | Use UNC path |
| Same error after setting UNC path | R4: SMB permissions |
NET USE test |
Grant share + NTFS rights |
| Same error with XML via FTP | R3: FTP fields blank | Inspect FTP fields | Fill FTP server / user / password |
| Same error with ODBC method | R3: ODBC DSN blank | odbcad32.exe | Create and select DSN |
| Same error for one specific batch | R6/R7: recipe parameter | Inspect batch parameters | Fill empty parameter values |
| Archive succeeds once then fails | R5: per-user profile redirection | Check service account profile | Set local profile path or use dedicated service account |
| Error 5 (Access Denied) follows the empty-string message | R4 + UAC | Run BatchCC elevated | Disable UAC or run as admin |
| Error persists after restart | SQL replication lag | Inspect BatchDB replication state | Wait for replication or resync |
11. Preventive Measures
- Document the archive path as part of the project backup and restore procedure; an empty archive path is the single most common source of this fault.
- Use a dedicated domain service account for the SIMATIC BATCH Archive Service; do not run it under Local System on multi-node deployments.
- Add a project commissioning checklist line item: "Archive path is a valid UNC share reachable from the BATCH service account".
- Enable Automatically archive closed batches so the operator is never asked to archive manually; this also avoids the user accidentally clicking Archive before all batch data is committed.
- Schedule a daily script that verifies the share is reachable and writes a sentinel file; alert if the sentinel is missing.
- Validate master recipes during the engineering phase using the BatchCC Check function; recipes with empty parameters are rejected by Check but only if explicitly configured to enforce non-empty parameters.
What does "No empty strings permitted" mean in SIMATIC PCS 7 BATCH?
It is a .NET ArgumentException raised by the SIMATIC BATCH Archive Service when a required archive parameter resolves to String.Empty. The most common trigger is an empty archive path field or a partial configuration of the selected archive method (FTP, ODBC, or compliance).
How do I configure the archive path for SIMATIC BATCH?
Open BatchCC, select Options → Settings → Archive, and enter a UNC path such as \\BATCH-FS01\BATCH_Archive\Plant_41. Local drive letters are not accepted by the Archive Service when it runs as a non-interactive user. Restart the SIMATIC BATCH Archive Service after changing the path.
Can a master recipe with empty parameters cause this error?
Yes. If any input, output, or in/out parameter in the master recipe or in the operating parameter set used to start the batch is an empty string, the archive validation fails with the same dialog. Inspect the parameter list in the BatchCC library and fill any blank values.
Which PCS 7 versions are affected?
The error has been reported on PCS 7 V8.0 through V9.1 including SP updates. The fix is configuration-only and applies to all versions; no firmware or software patch is required. Behaviour is identical on V9.0 SP6 and later where the compliance archive target was introduced.
How do I verify the archive target is reachable from the BATCH server?
Open an elevated command prompt on the BATCH server, run NET USE \\BATCH-FS01\BATCH_Archive /USER:<domain>\svcBatch *, and confirm The command completed successfully. If the command fails, resolve SMB name resolution, firewall rules on TCP 445, and share/NTFS permissions before retrying the archive.