ServiceDesk Plus comes with several built-in modules (such as Requests, Changes, Assets, etc.) with their default configurations (such as Status, Priority Matrix, Closure Code, etc.) But, your organization's needs might require entities, fields, and workflows beyond these default modules and configurations.
In such cases, you can use Custom Modules to create your own modules and configurations, besides subforms and subentities for existing templates.
Role Required: SDAdmin
You can create four types of custom modules: Web Tab, Configuration, Subform, and Subentity.
After you create a custom module, you can start adding relevant data to it. The information entered in custom modules is collected and stored as records.
|
Type |
Purpose |
Examples |
Access From |
|
Web Tab |
Create your own modules to configure, edit, store, and delete records you want. To enhance custom modules' functionality, you can enable advanced features such as Automations, Reports, Import, and more. |
Requests (with automation, reporting, and import features) |
Navigation pane (similar to built-in modules) |
|
Configuration |
Create custom configurations to store values that:
|
Status and similar to those under Admin > Customization. |
Admin > Customization > Custom Configurations |
|
Subform |
|
In a Purchase Order record, a subform can hold multiple line items (item name, quantity, price) linked to that order. |
Web tab, custom configuration, and subentity forms (if added to the template). |
|
Subentity |
Create entities to store additional details and manage a record (parent entity) throughout its life cycle. |
In a project record (parent), Milestones and Tasks are subentities that help you track and manage the project. |
Details page of a record |
Step 3: Define and customize form layout
Step 7: Configure field and form rules
Step 8: Publish the custom module
|
Field Name |
Description |
Comments |
|
Display Name * |
Enter the display name of your custom module. |
This name is displayed in contexts where a single record is referred, such as record forms or record details page. |
|
Display Plural Name * |
Enter the display plural name. |
The plural name will be displayed in places referring to the custom module as a whole, such as navigation menu, list views, and reports. In the navigation menu, the display name will be shown if the custom module contains only one record. |
|
API Name * |
Auto-populated based on Display Name but can be modified. |
|
|
API Plural Name * |
Auto-populated based on Display Plural Name but can be modified. |
|
|
Type * |
Select the required custom module type from the drop-down. |
- |
|
Description |
Enter a description. |
- |
|
Icon |
Click Select Icon and upload your preferred icon for the custom module. |
The maximum file size is 5MB. Supported file formats are JPEG, JPG, PNG, and GIF. |
|
Attachments |
Attach files relevant to custom module configurations. |
The maximum file size is 10MB. |
*Mandatory fields

Use Collaborate on the top right of the configuration page to connect with multiple administrators and configure the module together.

The following sections will appear after the New Custom Module form is saved.
Enable advanced features for web tabs to enhance their functionality.
Certain features, when enabled, can be configured further. To edit such configurations, hover over the feature and click Edit.
After selecting the required features, click Next.

|
Features |
Purpose |
Configuration |
|
Automations |
Allows technicians to configure automation rules for the custom module. Supported automation features are Business Rules, Custom Triggers, Workflows, and Timer Actions. If Automations is enabled, Custom Functions will be enabled automatically and cannot be disabled.
|
- |
|
Custom Functions |
Allows technicians to manipulate the custom module data and execute automated actions, including internal and external API calls. Custom Functions can be used in business rules, custom triggers, and web tab custom actions. |
- |
|
Supports data import for the custom module. Supported file formats are XLS, XLSX, and CSV. |
If Allow to create a new refer entity is enabled, the system will handle new values during import as follows: In the import file, if a field referring to a custom configuration (created via Custom Modules) contains an undefined value, the system will:
From How do you want to import, select how the data should be imported into the custom module:
Click Click Save.
|
|
|
Global Search |
Users can search for specific records from global search, without navigating to the custom module. |
- |
|
Technicians can create and share a customized list view for records matching specific criteria. |
Select where custom views can be shared: Select the roles, support groups, or user groups with whom a technician can share their custom view. Enable defining preferred columns for custom views: If enabled, technicians can select preferred columns for their custom view while creating it. Enable preferred columns override: When enabled, technicians can choose to view the columns in the All Records list view, overriding the columns preferred for the custom view.
|
|
|
Non-login |
Users can view the custom module's data without logging in. |
From Non-login Fields, select the fields to be displayed in the custom module for non-login users. Click the bulk-select icon to select multiple fields. Under Non-login Filters, define field criteria to display only the records matching the criteria.
A Non-login URL will be auto-generated for the module. Share this URL with users to access the module without logging in. The non-login URL will work only after the custom module is published.
|
|
Technicians can remove records from the custom module temporarily by moving them to trash. These records remain inactive until restored. This feature will help avoid accidental deletion of data. |
Set a restoration period (15, 30, or 45 days) after which unrestored records must be deleted permanently.
|
|
|
On a daily schedule, the system will delete the first 25 records that have reached their expiry period. The schedule will run on both active and trashed records. This feature is useful for clearing outdated data periodically. |
Set an expiry period (1, 4, or 8 years) after which records must be deleted permanently. The expiry period is calculated from the record's created date.
|
|
|
Reports |
Allows technicians to generate reports for the custom module data. |
- |
|
Enables technicians to add tags to records and view records linked to the same tag. |
- |
In Fields List, you can add the fields required to collect information and create records in the custom module.
|
Field Type |
Description |
|
Single-line |
Accommodates short text and phrases. |
|
Multi-line |
Accommodates long text and detailed descriptions. |
|
Picklist/ Radio |
Accommodates a list of options. Users can select only one value from the list and record their decisions. |
|
Multiselect/ Checkbox |
Accommodates a list of options. Users can select one or multiple values from the list. |
|
Numeric fields (Numeric, Phone, Currency, Decimal, Percentage) |
Accepts numeric values only. |
|
Date/Time |
Stores date and/or time values. |
|
Decimal |
Accepts decimal values. |
|
Boolean |
Stores binary values. Users can select either True or False (Yes or No). |
|
Color |
|
|
File Upload |
Enables users to upload and store documents, images, or other reference files. |
|
HTML |
|
|
URL |
Accommodates valid URLs only. |

Add and customize sections and fields
In Form Customizer, you can define the form layout for the custom module. You can add sections, fields, and subforms and customize the style properties of each of them.
You can rearrange sections, fields, and subforms within the form by drag-and-drop actions.
Under Available Fields and Subforms in the left pane, you will find a list of fields added under Fields List, default subforms, and published custom subforms.

By default, a double-column section is added to the form layout. You can add more sections and fields as needed.
in the left pane.To customize a section,
.

From the left pane, drag the required fields to the target placeholder within the desired sections.
To add a new field,
|
Field Property |
Available for (Field Types) |
Description |
|
Field Name* |
All field types |
Enter a field name. |
|
API Field Name* |
All field types |
This is auto-populated based on the field name but can be edited. The field value must follow snake_case. |
|
Holds personally identifiable information (PII) |
Single-line, Multi-line, Picklist, Radio, Numeric, Date, Date/Time, Email, Phone |
Enable the checkbox to mark that the field holds PII. This is useful during migration and data deletion. |
|
Encrypt the Field |
Single-line, Multi-line, Email, Phone |
Enable the checkbox to encrypt the field value. This ensures sensitive information in the database remains unreadable to unauthorized users and in compliance with data protection standards. |
|
Description |
All field types |
Enter a description for the field. |
|
Help Text |
All field types |
Provide additional context about the field. The text will appear as a tooltip when users hover over the field, helping them understand what information to enter. |
|
Copy Description Content to Help Text |
All field types |
Enable the checkbox to copy the Description content to Help Text. |
|
Mark as Mandatory |
All field types |
Enable the checkbox to make the field a required entry. To save or submit the form, users must provide a value in this field. |
|
Unique |
Single-line |
Enable the checkbox to ensure no two records in the module contain the same value in the field. This prevents duplicate data entry. |
|
Primary Field |
Single-line |
Enable the checkbox to set the field as the primary identifier for the record. This field's value will be used to refer the record across the application. |
|
Default Value |
Single-line, Multi-line, Numeric, Boolean, and Date |
Set a default value for the field. The field will be auto-filled with this value when the form is opened. |
|
Values |
Picklist, Multi-select, Checkbox, and Radio |
On the right pane, type the values for options and hit Enter. Each value can have up to 50 characters, except > and <. |
|
Explore Related Fields |
Picklist, Multi-select, Checkbox, and Radio |
From the drop-down, select a field to reuse its values. Only fields of similar field types and used within custom modules will be available for selection. Explore Related Fields will be disabled if Reference Entity is enabled. |
|
Reference Entity |
Picklist, Multi-select, Checkbox, and Radio |
|
|
Length |
Single-line and Numeric |
Enter the minimum and maximum number of characters allowed for this field. A maximum of 100 characters can be allowed. |
|
Allow numbers only |
Single-line |
Enable the checkbox to allow numeric values only. |
*Mandatory fields

In the Customization tab within the slide-out, you can customize the field style.

to edit its properties. You can also edit the field properties from the Fields List tab. Click the edit icon next to the required field name and edit the details.
and click OK.To delete the fields within a custom module,
next to the required field.
After you configure the form layout, click Next at the bottom of the Form Customizer tab.
In the Permissions tab, you can set user criteria to define permissions for the custom module.
The user who created the custom module will have full access, regardless of whether they meet any of the criteria.
|
Module-Level Permission |
Allowed Actions |
|
View |
View only |
|
Add |
View and add records |
|
Edit |
View, add, and edit records |
|
Delete |
View, add, and delete records |
|
All operations |
View, add, edit, and delete records |
After you finish all necessary configurations, click Save.

In Sub Entity, you can add subentities required for the web tab.
You can also create your own subentities. See how.
● Custom subentity
● Task
● Comment
● Notification
● Work log
● Checklist
● Reminder
|
Field |
Configuration |
|
Dependencies |
Enable the checkbox to support task dependency mapping. |
|
Sub Entities |
Select the subentities you want to associate with Task. |
|
Fields |
Select the fields to be shown on the task form, in addition to default fields. |
|
Operations |
Select the operations to be available on the task list view toolbar. |
|
Group Criteria |
Set criteria to populate the Group drop-down on the task form with groups that meet the criteria. |
|
Owner Criteria |
Set criteria to populate the Owner drop-down on the task form with users who meet the criteria. |

|
Field |
Configuration |
|
Mentions |
Enable this option to allow @mentions within comments. |
|
Mentions criteria |
Set user criteria to define which users can be tagged. |
|
Reactions |
Enable this option to allow emojis in comments. |
|
Replies |
Enable this option to allow users to reply to comments. |

|
Field |
Configuration |
|
Delimiter |
Set a delimiter that helps technicians identify the custom module of a conversation. This delimiter is prefixed to the record ID and added to the subject line of conversations automatically. A delimiter must contain two letters only. Example: If the delimiter is set as CL, a record ID will appear in the subject line as #CL-$RecordID## |

|
Field |
Configuration |
|
Maximum records allowed |
Set the maximum number of reminders that can be set. |

|
Field |
Configuration |
|
Allow null time entry |
Enable this option to allow saving a work log without specifying time details. |
|
Auto-fill work log start and end time based on Time Taken |
If enabled, the end time will be filled in with the current date and the start time will be filled in automatically based on the Time Taken value technicians enter. Otherwise, start and end time fields will be empty and marked as mandatory. |
|
Include Cost Fields |
Enable this option to capture cost-related details in the work log, such as rate, total cost, or billable amount. |
|
Include non-operational hours by default |
If enabled, the Include non-operational hours option will be enabled. |
|
Owner Criteria |
Define criteria to populate the Owner drop-down with users who meet the criteria. |

For example, in an onboarding record, a checklist can include tasks like setting up a laptop, creating email accounts, and assigning access rights. The record can only be closed once all tasks are checked off.
|
Field |
Configuration |
|
Maximum records allowed |
Set the maximum number of checklists that can be associated with a record. |

. To remove a subentity, hover over it and click the delete icon
. You will find the removed subentity in the left pane.
Using Custom Actions, you can configure personalized actions and shortcuts for frequent operations in a web tab.
The operations include:
|
Action |
What it does |
Use Case |
|
Quick add |
Without navigating to the form, create records with pre-filled values or by entering only key fields. |
An HR can quickly log onboarding requests with pre-filled values (for example, Department - HR; Priority - Medium). They would need to enter only the employee’s name and start date. |
|
Bulk edit |
Update one or more records by editing specific fields with pre-filled values or via user input. |
After a schedule change, the HR manager can reschedule and bulk-update the joining dates of multiple hires. |
|
Trigger custom function |
Run predefined custom functions across multiple records. |
A vendor manager can trigger reminders to technicians for contracts nearing expiry. |
Custom actions will appear in Actions on the list view toolbar and the details page toolbar.
Along with custom actions you create, the tab also lists default actions supported for the custom module, such as adding and editing records via form, viewing history and conversations. Other actions are shown in the list based on the features enabled under the Details tab.
To create a custom action,
|
Field |
Description |
|
Display Name * |
Specify the name to be displayed for the custom action in Actions. |
|
API Name * |
Auto-populated based on the display name, but can be customized. |
|
Operation * |
Choose an operation: • Add: Create records. Edit: Bulk-edit specific fields or run a custom function across multiple records. If the form contains more than 10 mandatory fields, only Edit can be configured.
|
|
Actions: Choose one to define the custom action. |
|
|
Custom Function (Edit only) |
Available only if Custom Function is enabled in the Details tab.
From the drop-down, select an existing custom function (under Admin > Developer Space > Custom Function > <web tab>) or click Add New to create one. |
|
Field Update |
Select and configure the fields to be included in the custom action. You can select up to 10 fields.
Field Name: Fields added to the form layout will be available for selection. Select a field from the drop-down. Default Value: Set a default value that will be set or displayed in the field when the custom action form is accessed. Form Data: Enable the checkbox to allow user input for the field when executing the action. Enabled by default for field types that do not support Default Value. Mandatory Field: Enable the checkbox to make the field a mandatory input when executing the action. |
*Mandatory
In the Field and Form Rules tab, you can configure rules that dynamically modify template forms based on user input.
These actions can be configured to execute when any/all of the following events occur in the web tab form:
|
Form Event |
Description |
|
On form load |
Rule will execute each time the request form is loaded. |
|
On form change |
Rule will execute when the specified form field is modified. |
|
On form submit |
Rule will execute on form submission. |
To configure a rule,
For more information, click here.
.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9kemY4dnF2MjRlcWhnLmNsb3VkZnJvbnQubmV0L3VzZXJmaWxlcy84NjYvMTQyNjIvY2tmaW5kZXIvaW1hZ2VzL3F1LzIwMjUvaW1hZ2UoNjUpLnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc2NzMyOTY4MH19fV19&Signature=pBd1CAPCLptaYT~SMBeZTpZZaV4l6~JwOI6K6iMkmXHBX15jrH8gjeVLOmJ36RHYW5CFFE00XAj6QTlbl7bOYfTLiL-YriYtM957lk4Ni-I~3KRhgrtGbThtbay6AnNZuRmRHGkMpqZ4J3N-1Uu7ps0RO~kL8nGvUyo5CI4G0nU4oaqmwOBrCnWAnYY4K03Cep4KwOj0PKi3AkdRlYUkEI~XGpINHGKWjKlHvfKOQ8EIeMmSe9JnQ6JgbahgIMTq9OEPDv-4WsedrlralfWatSYLHF7dg~sT2tU2ODJR77iSg5F8xN4~fWKDUYzlnIb9dLSkMYjAunhLlHRStHy3cQ__&Key-Pair-Id=K2TK3EG287XSFC)
Use the status drop-down at the top right of the configuration page to mark the status of a custom module and control its accessibility.
.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9kemY4dnF2MjRlcWhnLmNsb3VkZnJvbnQubmV0L3VzZXJmaWxlcy84NjYvMTQyNjIvY2tmaW5kZXIvaW1hZ2VzL3F1LzIwMjUvaW1hZ2UoNjYpLnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc2NzMyOTY4MH19fV19&Signature=R4-FTCC95e3620Bb-hw8zxZxWIRp32rD7cF5Z~wnmpiAGQDPdZ7WNy723kmbDSoihA-ZkinefVm-330QDUnFCk2qZbRKq8zVStnwE6D3bl0A3qJOb3g8fhKX36UrzFGDINA8sKZsldYbAiDyJ6Sjlf415JAK13rhZMpnl0SlG9etWilyAHkpYoQQtRq3EUbg7bWeXayxAoJhGwqIsnSSZQ~xCZi1GhMVGRiGRw~kQhjzOfNUHB~onR11TxMMaldZWO~FXg5SXewysMm61aw3kl0nH6IRMrQbE4qyDl~kxtqjFpLZQ6~wT7k-nuvKpcwZ0pryViQybH8V10kvGck07Q__&Key-Pair-Id=K2TK3EG287XSFC)
The available statuses are:
|
Status |
Description |
|
Draft |
A custom module is being created. |
|
Published |
Custom module is active and ready to access. |
|
Suspended |
Custom module is temporarily disabled for user access. |
|
Retired |
Custom module is permanently disabled for user access. However, the module data will remain in the database. After you retire a custom module, it cannot be edited or reused. |
(Web Tab-Only) After publishing the custom module, you can create different layouts for the record details page under the Details Customizer tab. To know how to customize layout, click here.
You can only edit custom modules in Draft.
To delete a custom module,
next to the custom module name.You can access a web tab from the navigation pane. To learn more about managing records in a web tab, click here.
To access custom configurations, go to Admin > Customization > Custom Configurations. Each custom configuration will be displayed as tabs in the list view. To learn more about managing custom configurations, click here.
You can access subforms and subentities from web tabs and custom configurations that use them.
On the custom module list view, you can perform the following actions:
On the list view, you will find a list of all custom modules. Use module and status filters to display custom modules of specific types and statuses.
Click + New to create a custom module.

next to the required custom module.
next to the required custom configuration.
You cannot move a custom configuration to ESM Directory if it contains portal-specific refer entity fields.
Click Search
on the top and use keywords on the required column to search for a custom module.
Select the number of records to be shown per page from the drop-down on the top. You can also navigate to different index pages by using the navigation buttons.

