Skip to main content

Custom fields with formatted content (HTML or Markdown)

Summary

Currently, custom fields support the following types: Text, Multiline, Integer, Decimal, Boolean, Dropdown, and Date. What’s missing is a type for formatted content —a small table, a list, or a link. octoja can already handle this: A RunScript step declares its outputs, and a WriteCustomField step stores them on the device. However, the result is not readable.

A Multiline field already accepts HTML as-is and returns it unchanged via the API— <b>, <span style>, <a href>, and entities are preserved; nothing is filtered or converted (verified on September 4, 2026). The only thing missing is the display.

Example: the most recent users of a device

A script reads the login events from the past few days from the event log and stores the result on the device: who was last logged in, when, and whether it was a login, logout, or unlock. This is the first question that comes to mind when asking, “Who worked on this computer yesterday?” and when reassigning workstations.

As a table, this can be read in two seconds:

User Time Event DOMAIN\user1 09/03/2026 07:42 Logon DOMAIN\user1 03.09/2026 4:58 PM Logout DOMAIN\serviceaccount 09/04/2026 2:10 AM Login (Service)

In today’s multiline field, the same information is a string that you first have to parse. This applies to everything that conveys more than one value: Secure Boot status, BitLocker status per drive, result of the last backup, open maintenance items, license overviews.

Suggestion

  • A new field type —either HTML with server-side sanitization or Markdown. Markdown would be the more streamlined choice: tables, bold text, links, and code blocks are sufficient for this purpose; the content remains readable even in its raw state; and a script can generate it just as easily as HTML.

  • Display wherever the field appears —device page, customer page, reports.

  • Validation on save: Remove scripts, event handlers, and embedded content; allow text markup, lists, tables, and links. The content comes from the agent and not from a form—but it still needs to be filtered.

  • A specified character limit, checked during writing rather than silently truncated. In other RMMs, it’s 200,000 characters; otherwise, a script that generates a large table would run into a limit it doesn’t recognize.

Why this fits the existing modular system

Half the work is already done: Automations can collect values and write them to their own fields. Without a display page, any multi-line evaluation remains either unreadable or must be recreated as a separate check—even though it requires neither a threshold nor an alarm, but is simply meant to be read.

Status: Completed1 comment

Log in to comment and vote

Comments1

  • Daniel von octoja changed status to Completed
    Team•

    Sep 27

    Pinned

    Markdown kommt 🙂 Wir haben einen eigenen Feldtyp für formatierten Inhalt umgesetzt. Damit lassen sich beispielsweise Tabellen, Listen und Links lesbar darstellen, statt nur als langer Textblock – auch in Berichten. Die Funktion ist im nächsten Update enthalten. Danke für den ausführlichen Vorschlag!