Triggers
A new file in a folder, a schedule or a click starts the workflow. To the triggers
RUNOS is a workflow automation tool for Windows. A workflow consists of a trigger that starts it and a list of actions that do the work one after another. RUNOS runs locally on your PC, in the background in the notification area of the taskbar, and is free.
Triggers
A new file in a folder, a schedule or a click starts the workflow. To the triggers
Actions
Send mails (SMTP, mail program), call APIs and create e-invoices. To the actions
Operations
Decide (IF), repeat (Loop), run side by side (Parallel) and reshape data with JavaScript (Code). To the operations
Connectors
Store credentials and OAuth sign-ins once, use them in every workflow. To the connectors
Every invoice that the ERP prints through the PDF printer into the folder
C:\RUNOS\Invoicesshould be mailed to the customer as an XRechnung.
In RUNOS this is one workflow with
Every run is logged. If something fails, the file goes to the Failed folder, you are notified, and your own error actions can run.
Client: Outlook: classic OutlookRunOS.exe; the name stays the same for every version.C:\Program Files\RUNOS\RunOS.exe, and start it. No installation is needed.RUNOS shortcut is already there. The shortcut points to the .exe in its current place.RUNOS runs only once per Windows session. If it is started a second time, the older instance exits and the new one takes over. When you close the window, RUNOS keeps running in the notification area and your workflows keep running. Exit in the tray menu stops all workflows.
RUNOS is free. Each installation still gets its own license, bound to this PC:
You see the status under Settings → License, with the Installation ID (for support) and Check now.
Shortly after it starts, and every 6 hours after that, RUNOS checks whether a new version is out. If there is one, the update icon (an arrow with a red dot) appears in the activity bar above Help, and a notification points to it. Clicking the icon shows which version is coming and how much is downloaded; Update now downloads it, replaces RUNOS and restarts it. To check yourself, use Settings → About → Check for updates.
.exe where it is. Autostart and shortcuts stay valid. If the file is still named after its version (runos_3.66.exe, the former download name), it is renamed to RunOS.exe on the way, unless the folder already has a RunOS.exe. Autostart follows by itself; create a shortcut to the old name once more. If RUNOS is in a folder your user cannot write to (e.g. C:\Program Files\RUNOS), Windows asks for administrator rights..exe at the time (terminal server) keep the old version until they next start RUNOS.Version 3.66 and older have no update icon yet. There, update once by hand: exit RUNOS from the tray menu, replace the old .exe with the new one from systemberg.de/runos/download (same place) and start RUNOS again.
What changed in which version is listed in the changelog.
The activity bar is on the left of the RUNOS window:
| View | Content |
|---|---|
| Workflows | List of all workflows with state, trigger and recent runs; New creates a workflow, blank or from a template |
| Logs | The log of all workflows, filterable by level, workflow and user |
| Connectors | Saved access to services and APIs, see Connectors |
| E-invoice (XRechnung) | Fill in an invoice field by field and see its JSON, XML and checks, see The E-invoice view |
| Printer | Create, change and delete PDF printers that save every printout as a PDF into a folder, see PDF printer |
| Help | Contact by e-mail to info@systemberg.de |
| Settings | Language, autostart, log, script blocks, KoSIT validator, license, see Settings |
Workflow list: each row shows the name and trigger, the Start / Stop button and the recent runs as dots: green succeeded, yellow with a warning or cancelled, red failed. Clearing the log (bin) also removes these dots, with workflows picked in the filter only theirs. A click opens the workflow in the editor; the context menu starts, stops or deletes it. Change the order by drag and drop, with a click on the grip at the left of the row, or with context menu → Move (up, down, to the top, to the bottom); for the selected workflow Alt+↑ / Alt+↓ work too. When RUNOS runs as administrator there is no drag and drop (Windows does not allow it for programs with administrator rights); the context menu and keys work then too.
Workflow editor: it opens in a tab, which you can also drag into a window of its own.
| Element | Function |
|---|---|
| Name | Click the name to rename. The name in the JSON is updated too. |
| Visual / JSON / Script | Switches between the diagram, the JSON editor and the script blocks a file must carry for this workflow, see below. A workflow opens as a diagram when its JSON is valid. |
| Save (Ctrl+S) | Checks the JSON and saves. Afterwards the value of Autostart applies. |
| Run (F5) | Runs the actions once, with the JSON in the editor, saved or not. |
| Listen | Turns the trigger on for testing while the tab is open. |
| Start / Stop | Starts or stops the saved workflow, like the button in the workflow list. The state is kept after a RUNOS restart. |
| JSON editor | After {{ it suggests the variables of this workflow, after a dot their fields. |
| Log | Shows and hides this workflow’s log below the editor (hidden when the tab opens). The numbers on the button count its entries: red errors, yellow warnings, blue info. A double-click shows an entry in full; the bin deletes only this workflow’s entries and its dots in the workflow list. |
Diagram (Visual): the workflow from top to bottom: the trigger with the Initial data beside it, the actions in their order, for If the branches If true and If false side by side, for Loop a frame around the actions that run for each item, for Parallel one column per branch with its name. The OnError actions are to the right. Each action shows its name, its kind and its most important setting; switched-off actions ("Enabled": false) are faded and marked Off, and the Description appears when you point at the action.
If, Loop and Parallel can be collapsed.If, Loop or Parallel takes everything inside it along; the lines follow. RUNOS stores the positions in the workflow under "Layout", and Tidy up (top left) restores the automatic layout. Dragging an action onto a + instead changes its place in the order, also into or out of a branch. Above the action: switch on and off, duplicate, show in JSON, move up / down, delete.Parallel you add, rename or remove branches there), On error (its own OnErrorPolicy) and the whole action as JSON. After {{ the field suggests the values of earlier actions, for actions with test data their real keys. When an action is renamed, the {{Name.…}} references to it are renamed too.Autostart, time limit, OnErrorPolicy, OnWarningPolicy).{{InitialData.…}} values. Clicking an entry selects the action./* … */), the diagram is view-only until you choose: keep the comments directly above an action as its Description, or remove all comments. Both can be undone in the JSON with Ctrl+Z.Log: each row has time, level (Trace, Debug, Info, Success, Warning, Error, Critical), user, source, title and message. User is the Windows user whose RUNOS wrote the entry (empty for entries from older versions); the Users filter shows only that user’s entries when several users share a data folder. With a user picked, the trash button clears only the entries shown. Save log to file exports the visible entries as text or CSV. For troubleshooting, turn on the Trace filter: you then see how every variable was resolved and which parameters every action received.
In this example RUNOS watches a folder. For every PDF that arrives there, a new mail opens in the mail program with the PDF attached.
PDF by mail and confirm with Create.{ "Name": "PDF by mail", "Autostart": false,
"Trigger": { "Type": "File", "Name": "Inbox", "Parameters": { "Pool": "C:\\RUNOS\\Inbox", "Filter": "*.pdf", "CronExpression": "0/10 * * * * ?" } },
"Actions": [ { "Type": "MAPI", "Name": "OpenMail", "Parameters": { "Client": "Default", "Mode": "Display", "To": "customer@example.com", "Subject": "Your document from %DATE%", "Body": "Hello,\n\nplease find attached the document {{FileName}}.", "Attachments": "{{FilePath}}" } } ]}C:\RUNOS\Inbox. Within 10 seconds the mail opens."Autostart": true and save. From now on the workflow runs permanently, also after a restart.New in the workflow list asks for the name of the new workflow and, above it, offers the templates: a blank workflow or a ready, commented example to adapt. Picking a template suggests its name. Comments (/* … */) in the JSON explain every setting.
The templates come from the RUNOS server each time the dialog opens, so new and improved templates arrive without a new RUNOS version. Without an internet connection the dialog offers only the blank workflow.
| Template | Shows |
|---|---|
| Gedruckte Rechnung als XRechnung | ERP invoice printed on the PDF printer → validated XRechnung in a ZUGFeRD PDF → mail, see XRechnung example |
| XRechnung per E-Mail | Create, validate and mail an XRechnung from invoice data in the workflow |
| XRechnung-Referenz (alle Felder) | Every field of an XRechnung with its description, as a reference |
| PDF-Drucker → E-Mail / → Outlook / → Archiv | Every print on the PDF printer by mail (SMTP), as an Outlook mail to check, or filed by year and month |
| Eingehende Dateien drucken | Print every file saved into a folder |
| Ordner → Netzwerkfreigabe, Ordner → SFTP-Server | Move new files to a share or upload them to an SFTP server |
| Tägliche Ordnersicherung | Copy a folder every weekday evening (Time trigger) |
| Mail über Microsoft 365, Mail im klassischen Outlook | Mail with attachment through Microsoft 365 / Outlook.com or classic Outlook (MAPI) |
| API-Abfrage mit Bedingung | HTTP query of a weather API, If decision, mail by SMTP |
The templates use placeholders such as smtp.example.com and the Basic connector Mailserver for mail credentials; the comment at the top of each template says what to set up once.
A workflow is a JSON object. Field names are case-insensitive. Comments /* … */ and // … are allowed.
{ "Name": "Send invoices", "Autostart": true, "InitialData": { "Recipient": "accounting@example.com" }, "Trigger": { "Type": "File", "Name": "Inbox", "Parameters": { "Pool": "C:\\RUNOS\\Invoices", "Filter": "*.pdf" } }, "Actions": [ { "Type": "SMTP", "Name": "Send", "Parameters": { "To": "{{InitialData.Recipient}}" } } ], "OnError": [ { "Type": "SMTP", "Name": "ErrorMail", "Parameters": { "Subject": "Error: {{Error.Message}}" } } ], "TimeoutSeconds": 0, "OnErrorPolicy": { "Strategy": "CancelRun" }, "OnWarningPolicy": { "Strategy": "LogOnly" }}| Field | Required | Meaning |
|---|---|---|
Name |
yes | Name of the workflow |
Autostart |
no | true: runs after saving and after every start of RUNOS. Default false. |
InitialData |
no | Any data every action can read as {{InitialData.…}}, e.g. addresses or fixed invoice data |
Trigger |
yes | The trigger: File, Printer, Time or Manual |
Actions |
yes | List of actions, at least one. They run one after another. |
OnError |
no | Actions that run when a run fails, see Error handling |
TimeoutSeconds |
no | Time limit per action in seconds. 0 = no limit. |
OnErrorPolicy, OnWarningPolicy |
no | What happens on errors and warnings, for all actions without their own policy |
Layout |
no | For the diagram only: where you moved actions to. RUNOS runs the workflow regardless of it. |
Triggers and actions have the same structure:
| Field | Meaning |
|---|---|
Type |
Type of the trigger (File, Printer, Time, Manual) or action (XRechnung, SMTP, MAPI, Outlook365, HttpRequest, If, Loop, Parallel, StopWorkflow) |
Name |
Unique name. Later actions read the result through it, e.g. {{Send.Response.Results.Status}}. |
Parameters |
The settings; which exist is listed on the page of each action. Unknown parameters are ignored. |
OnErrorPolicy, OnWarningPolicy |
Actions only: their own policy, replacing the workflow’s |
Description |
Actions only, optional: a description for people, shown in the diagram when you point at the action. RUNOS does not use it. |
Enabled |
Actions only, optional: false switches the action off, see below. When it is missing, the action is on. |
"Enabled": false switches an action off without deleting it: { "Type": "SMTP", "Name": "Send", "Enabled": false, … }. It does not run, and for If, Loop and Parallel neither does anything inside them; the run continues with the next action. Later actions that read {{Send.…}} get no value. This works in Actions, in OnError and in the branches of If, Loop and Parallel. If every action in Actions is switched off, the workflow cannot be loaded.
The older form with # before the type ("Type": "#SMTP") still works, but only directly in Actions and OnError.
Every action stores its result under its name, with this basic structure:
{ "Name": "Send", "Type": "SMTP", "Parameters": { … }, "Response": { "Results": [ { … } ], "SuccessCount": 1, "ErrorCount": 0 }, "Meta": { "Host": "PC-ACCOUNTING" }, "Status": { "State": "Completed", "Warnings": [], "Errors": [] }}Status.State is Completed, Failed, Skipped or Cancelled. Every firing starts its own, independent run.
Placeholders are allowed in almost every parameter. RUNOS replaces them right before the action runs:
%…% for date, time, folders and environment variables. They are replaced first.{{…}} for data from the workflow: results of the trigger and actions, InitialData, connectors.{{…}}A placeholder is a path of names separated by dots, e.g. {{CreateInvoice.Response.Results.FilePath}}. Case does not matter.
| Root | Content | Available |
|---|---|---|
InitialData |
the workflow’s InitialData, extended by parameter sets and script blocks |
always |
Trigger or name of the trigger |
result of the trigger | always |
| name of an action | result of that action | after the action |
FilePath, FileName, FileContent |
file of this run and its text | File trigger |
Error |
the error that ended the run | in OnError |
item, index, count |
current element, position (from 0), count | in a Loop |
connector |
saved connectors | always |
| own values | global values from a script block | File trigger |
| Notation | Result |
|---|---|
Results.0 or Results[0] |
first element of a list (from 0) |
Results.first / .last / .count / .any |
first / last element, count, not empty |
Results.FilePath |
a field name on a list automatically uses the first element |
.toString(), .toInt(), .toDouble(), .toBool() |
convert the value |
.toBase64() |
Base64 of the text; if the value is an existing file path, of the file’s content |
.length() |
length of a text |
{{!path}} always returns text.%…%| Placeholder | Example | Note |
|---|---|---|
%DATE% / %TIME% |
2026-10-08 / 14-05-09 |
|
%yyyy% / %yy% / %MM% / %dd% |
2026 / 26 / 10 / 08 |
%MM% = month, upper case |
%HH% / %hh% / %mm% / %ss% / %fff% |
14 / 02 / 05 / 09 / 123 |
%mm% = minute, lower case |
%userdesktop%, %userdocuments%, %userdownloads% |
Desktop, Documents, Downloads | |
%userprofile%, %userappdata%, %local% |
user folder, AppData\Roaming, AppData\Local |
|
%programdata%, %programfiles%, %base% |
C:\ProgramData, C:\Program Files, folder of RUNOS |
|
%username%, %machinename%, %osversion% |
user, PC name, Windows version | |
%NAME% |
any Windows environment variable, e.g. %TEMP% |
Example: Export_%yyyy%-%MM%-%dd%_%HH%-%mm%.csv → Export_2026-10-08_14-05.csv. Placeholders may stand right next to each other (%HH%%mm%%ss%). An unknown %…% is left as it is.
The parameters Body and Signatur of the mail actions also take the path of a text or HTML file; placeholders inside it are replaced too. Placeholders don’t calculate; for decisions there is IF, for calculating and reshaping Code.
A run can fail at an action, at the time limit (TimeoutSeconds) or already at the trigger (folder not readable, faulty script block). Then:
<Pool>\Spooler\Failed\<ID>\.{{Error…}}.CancelWorkflow and the StopWorkflow action stop it.OnErrorPolicy"OnErrorPolicy": { "Strategy": "RetryThenNotify", "MaxRetries": 3, "InitialDelaySeconds": 5, "BackoffStrategy": "exponential" }Strategy |
Effect |
|---|---|
CancelRun |
Default. The run ends as failed, the workflow keeps running. |
CancelWorkflow |
The run ends and the workflow is stopped, also across a restart. |
SkipAction |
Mark the action as skipped and continue with the next one. In the log: “Skipping the failed action; the run continues.” |
Retry / RetryThenNotify |
Up to MaxRetries retries, then like CancelRun |
RetryThenSkip |
Up to MaxRetries retries, then like SkipAction. In the log: “Skipping the action after N failed attempts; the run continues.” (N = attempts in total) |
MaxRetries (default 0), InitialDelaySeconds (default 1) and BackoffStrategy (exponential: 1×, 2×, 4× … or linear) control the retries. An action’s policy takes precedence over the workflow’s. Write Strategy exactly as in the table: any other value (also skipaction in lower case) works like CancelRun; if it starts with Retry, it retries first. An OnErrorPolicy without Strategy means CancelRun, not the workflow’s policy. In the diagram, each action’s On error tab shows what actually applies at its place.
An action’s own policy also applies to actions in If, Loop, Parallel and OnError. An action in If, Loop or Parallel without a policy of its own does not take the workflow’s: if it fails, the If fails (and the If’s policy applies), the Loop iteration counts as an error, or its branch and with it the Parallel fails. With "OnErrorPolicy": { "Strategy": "SkipAction" } on the action itself, the branch or iteration carries on.
OnWarningPolicy applies to actions that end with warnings: LogOnly (default), Retry (with RetryCount and RetryDelaySeconds) or SkipAction.
OnError is a second action list that runs only when a run fails:
"OnError": [ { "Type": "SMTP", "Name": "ReportError", "Parameters": { "To": "it@example.com", "Subject": "RUNOS: {{Error.Workflow}} failed", "Body": "Action: {{Error.Action}}\nError: {{Error.Message}}\nFile: {{Error.FileName}}\nTime: {{Error.Time}}", "SmtpServer": "smtp.example.com", "SmtpUser": "runos@example.com", "SmtpPassword": "{{connector.Mailserver.Password}}", "From": "runos@example.com" } }]Field of Error |
Content |
|---|---|
Message, Errors |
error message, all messages as a list |
Source |
Action or Trigger |
Action, ActionType |
name and type of the failed action |
Workflow, Machine, InstanceId |
workflow, PC, ID of the run |
Time / TimeUtc |
point in time (local / UTC) |
FileName, FilePath |
file of the run, if any |
If all OnError actions succeed, the error counts as handled. OnError actions use only their own OnErrorPolicy, never the workflow’s; if one fails, the rest are skipped and RUNOS shows the error message. OnError never starts again from there, so an error loop is not possible.
{{FilePath}} stays empty. Afterwards the test view shows every action’s data, and the diagram marks every action with its result.InitialData. This lets you try a workflow with different data without changing the JSON. They apply to Run and Test step.In the log you see TriggerFired per run, ActionCompleted per action, errors and warnings, and a Summary.
The test view shows three columns side by side for an action. In the diagram you open it with the columns button at the top of an action’s settings panel; a newly added action opens in it straight away. Esc or the shrink button takes you back to the diagram.
| Column | Content |
|---|---|
| Input | The data the action can use: each earlier action (nearest first) with the data of its last run or test as a tree or, while it has none, with the fields its type puts out; the trigger’s variables (e.g. {{FilePath}}); the initial data (InitialData); inside a Loop item, index and count; in the OnError column Error.*; the saved connectors as {{connector.<Name>.<Field>}} (secret values such as password, API key or token only show as “(hidden)”; the run reads the real value). The search box at the top filters all sources by key, reference or value. The If, Loop or Parallel the action sits in is not listed: it has no result until its contents have run. Test on an earlier action runs that action so its data is there. Clear data forgets all test data. |
| Settings | The form or parameters, On error and the action as JSON, as in the settings panel. |
| Output | Test step (also at the top of the settings panel), then the state (Success, Success with warnings or Failed), the duration, errors and warnings and the result as a tree or JSON: Response, Status, the resolved Parameters and Meta. |
Values by drag and drop: drag a value from the Input or Output tree onto a field. It is inserted where you drop it as its {{…}} reference, e.g. {{LookupSupplier.Response.Body.id}}. Dropped on a list, a switch or a number field, the whole field becomes that reference. While you drag, the reference follows the pointer and the field below it is highlighted. Clicking a value copies its reference; clicking an entry with contents (e.g. “8 fields”) opens it. Keys containing ., [, ], {, }, (, ) or " cannot be referenced in {{…}} and therefore cannot be dragged.
Test step runs only this one action, right now, on the data the earlier steps left (their last run or test) and with the InitialData of the selected parameter set. The workflow does not need to be saved or complete, but the action needs a name. Error policy, retries and time limit do not apply to a test. For If, Loop and Parallel the actions inside run too.
Run (F5) fills the test data too: afterwards every action shows its data, and the diagram marks it with its result (green check without errors, yellow with warnings, red failed; a spinner while testing).
Test data is kept while the editor tab is open and is never saved with the workflow, since it may contain sensitive data. Long texts and lists are shortened for display only; tests use the full data.
Open the settings with the gear at the bottom of the activity bar. The PDF printer is created under Printer in the activity bar, see PDF printer.
| Setting | Meaning |
|---|---|
| Display language | System default, German, English, French, Italian or Spanish. Takes effect after a restart (Restart now). |
| Start with Windows | RUNOS starts minimized in the notification area at sign-in, without opening its window; the workflows run anyway. Click the RUNOS icon in the notification area to open it. On after the first start. |
| Show error pop-up | When a run fails, a window opens in the foreground. |
| Start KoSIT validator with Windows | Loads the e-invoice rules as soon as RUNOS starts. Off by default: the validator then starts with the first XRechnung, which waits once for about 15–20 seconds, or with Start under E-invoice validation. Switching it off does not end a running validator; it runs until RUNOS ends. |
| Keep log entries for | Current session only, 1 day or several days (default 7) |
| Script blocks | Block markers (default #RUNOS / #RUNOS), separators between blocks (e.g. ` |
| E-invoice validation | State of the KoSIT validator (Running, Starting…, Stopped, Error, Fallback mode) with Start / Restart and a short message; details in the log, see If the validator does not start |
| License | License state, Installation ID with Copy ID, Check now |
| AI agents | MCP server for AI agents on/off (default off) and Connect an AI agent with Copy Claude Code command, Copy JSON, New key, see AI agents (MCP) |
| Send usage statistics | Once a day figures such as app starts, crashes, number and success of runs, action types with errors, versions. Never workflow names, file names, paths, content or messages. |
Every Windows user has their own data, so several users of one PC (a terminal server) work with RUNOS independently and need no write access to shared folders.
| Path | Content |
|---|---|
Documents\RUNOS\Config\Settings.json |
settings |
Documents\RUNOS\Config\DB\ |
workflows, connectors, log, run history, parameter sets |
Documents\RUNOS\Config\License.json |
license of this install |
Documents\RUNOS\Pools\<printer name>\ |
your folder of a PDF printer, unless you chose another |
%LOCALAPPDATA%\RUNOS\ |
work folder of the XRechnung action, KoSIT validator and reports |
Settings → Data folder shows the path and opens it. Change… moves the data to another folder of your choice (empty or new, for example on another drive): RUNOS restarts and moves settings, license, workflows, connectors and log there before it opens anything; the old folder is deleted afterwards. The choice applies to your Windows user only and is stored under HKEY_CURRENT_USER\Software\RUNOS (DataFolder). If the chosen folder already contains RUNOS data (Settings.json or DB), RUNOS moves nothing and asks whether you want to use that folder, see Shared data folder. Any other folder that is not empty is refused. Documents is the user’s Documents folder, also when it is redirected (for example to a network drive). The files that ship with RUNOS (connector templates, KoSIT rules, color profile) are read from the Repository folder next to RUNOS.exe.
To back up, exit RUNOS and copy Documents\RUNOS\Config. Encrypted connector secrets can only be read by the same Windows user on the same PC.
Several Windows users can use one user’s workflows. Only this owner changes them; every change reaches the other users (members) at once, without a restart.
C:\RUNOS-Data (not one user’s Documents folder, which the others are not allowed to open).Owner.txt in the folder.| Shared (in the owner’s folder) | Per user (in the member’s own folder) |
|---|---|
| Workflows, shared connectors | Own connectors with their credentials |
| Log (User column) | Settings, license |
| Log retention, script blocks (set by the owner) | Start/stop of each workflow, recent-run dots |
| Parameter sets (until the member saves their own) | Own parameter sets and Script choices |
Autostart applies to the members again, as it does for the owner.Mail), the same workflow uses each user’s own address and password.DB\SharedConnectors.db in the shared folder, and every member’s workflows can use it. The list marks it shared. Members see it, can test it and refresh its token, but cannot change or delete it; Duplicate turns it into a connector of their own. If a member has an own connector with the same name, theirs wins. A shared connector’s secrets are encrypted for this PC instead of for one user: every user of this PC (terminal server) can read them, another PC cannot. Unchecking it and saving makes it the owner’s own connector again.Documents\RUNOS\Config, else Documents\RUNOS\Personal) and uses the shared folder as a member from then on. The next time the new owner starts RUNOS, they take the folder over: their license, own connectors, settings, run history and start/stop choices come with them; workflows, log, shared connectors, parameter sets, log retention and script blocks stay as they are. Until then nobody changes the workflows.%userdocuments%\RUNOS\Pool1 instead of a fixed path. Then every user watches their own folder. A fixed path such as C:\Inbox would be watched by all logged-in users at the same time.Update from an older version: until now the data was in C:\ProgramData\RUNOS, shared by all users of the PC. At its first start, the new version copies Settings.json, License.json and the DB folder from there into the user’s Documents\RUNOS\Config, once per Windows user, so everyone keeps their workflows and settings. On a terminal server every user thus starts with the workflows that were shared until then, and from then on each user’s changes stay their own. C:\ProgramData\RUNOS is left as it was; delete it once all users have started the new version. If RUNOS cannot write to Documents\RUNOS\Config (the network drive is offline, or Windows Security → Controlled folder access blocks it), it does not start and says so.
Is RUNOS free? Yes, RUNOS is free.
Do workflows run when nobody is signed in? No. RUNOS runs in the session of a signed-in user. For a PC that works unattended, leave a user signed in (a locked screen is fine).
My workflow doesn’t start when a file arrives. Is the workflow running (the list shows Stop)? Does the file match Filter? If several workflows share the folder, does the file name this workflow in its script blocks (Shared pool)? Is there a license message in the log?
My workflow was suddenly stopped. By "Strategy": "CancelWorkflow", a StopWorkflow action or by saving with "Autostart": false. The cause is in the log.
A placeholder stays empty. Open the log with the Trace filter: it shows what every placeholder resolved to. Common causes: a typo in the action name, the action hasn’t run yet, or the value of an HTTP response is under Response.Body.
Does RUNOS work with the new Outlook? The new Outlook cannot be controlled by any program. Send through Microsoft 365; for classic Outlook there is MAPI.
Are my invoices uploaded anywhere? No. Creating and validating the XRechnung happens entirely on your PC.
Write to us at info@systemberg.de; in RUNOS, Help → Contact us → Write e-mail opens your mail program. Helpful are the version (Settings → About), the installation ID and the workflow JSON without passwords; for errors also the log (Logs → Save log to file).