I have a requirement to reset the form fields to empty when UI Action 'Reset to Draft'
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
13 hours ago
I have a requirement to reset the form fields to empty when UI Action 'Reset to Draft' .There is a UI Action button in the demand table that appears when the state changes to submitted or screening or qualified and for the rest of the stage when i click on reset to draft UI action all the form fields except the number has to set to empty.Please help me to achieve this

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
13 hours ago
You can create UI Action with following
Client - Checked
Onclick - resetFields()
condition - current.state == "submitted" || current.state == "screening" || current.state == "qualified"
// Update the above state condition based on the backed value of the State
Script
function resetFields(){
for(var i = 0; x < g_form.elements.length; i++){
if(g_form.elements[i].fieldName != "number"){
g_form.setValue(g_form.elements[i].fieldName, "");
}
}
}
Palani
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
13 hours ago
In Condition: (current.state == 'submitted' || current.state == 'screening' || current.state == 'qualified')
// Set the state to Draft (replace with correct value or constant)
current.state = 'draft';
// Store the number since we don't want to clear it
var number = current.number;
// Clear all fields except number
var fields = current.getFields();
for (var i = 0; i < fields.size(); i++) {
var fieldName = fields.get(i).getName();
// Skip 'number' and some important system fields
if (fieldName != 'number' && fieldName != 'sys_id' && fieldName != 'sys_created_on' &&
fieldName != 'sys_created_by' && fieldName != 'sys_updated_on' && fieldName != 'sys_updated_by') {
try {
current.setValue(fieldName, '');
} catch (e) {
// If it's a reference or complex field, continue without error
gs.info('Could not clear field: ' + fieldName + ' - ' + e.message);
}
}
}
// Restore number (if needed — usually not necessary, just precaution)
current.number = number;
// Update the record
current.update();
Or Recommended Alternative Approach (Safer)
Instead of looping through all fields, explicitly clear only those you know should be reset:
// List of fields to clear
var fieldsToClear = ['short_description', 'description', 'priority', 'requested_by', 'business_case']; // etc.
fieldsToClear.forEach(function(field) {
if (current.isValidField(field)) {
current.setValue(field, '');
}
});
Thanks,
Vignesh
"If this solution resolves your issue, kindly mark it as correct."
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
13 hours ago
you can use a server side UI action for this
UI Action
Condition:
['2','3','-4'].indexOf(current.state.toSring()) > -1
Script:
clearFields();
function clearFields() {
try {
var fields = current.getFields();
for (var i = 0; i < fields.size(); i++) {
var field = fields.get(i);
var descriptor = field.getED();
var fieldName = descriptor.getName();
current[fieldName] = '';
}
current.update();
} catch (ex) {
gs.info(ex);
}
}
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
13 hours ago
Hi @Trupti Krishnam
I recommend creating a new "After Update" Business Rule to clear the field values, instead of modifying the OOB UI Action script.
This approach ensures that if you ever want to revert to the original OOB functionality, you can simply deactivate the custom Business Rule without affecting the default behavior.
Regards,
Siva