Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
Inbound Email Action to Create User and Assign Groups

If an admin sends an email with specific user details, the script automatically:
Creates a new user (if not existing).
Assigns them to multiple groups.

Create new Inbound Action:
Target table: sys_user
Type: New / Reply (depending on how you want it triggered)

Example Email Format

Subject: Create New User
Name: Abc Xyz
Email: abc.xyz@example.com
UserID: abc_xyz
Department: IT
Groups: Network Team, Application Support, Database Admins

Working:

Script reads each line from email body.
Extracts values for each field (Name, Email, etc.) using regex.
Checks if the user exists → if not, creates it.
Adds the user to the given list of groups.
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
(function runInboundAction(email, action) {

var body = email.body_text;

// Function to extract field values using regex
function fetchFieldValue(label) {
var regex = new RegExp(label + "\\s*:\\s*(.*)", "i");
var match = body.match(regex);
return match ? match[1].trim() : "";
}

// Extract values from email
var name = fetchFieldValue("Name");
var emailAddr = fetchFieldValue("Email");
var userID = fetchFieldValue("UserID");
var department = fetchFieldValue("Department");
var groupsStr = fetchFieldValue("Groups");
var groups = groupsStr ? groupsStr.split(",") : [];

if (!emailAddr) {
gs.log("Inbound Email User Creation: Email missing. Aborting.");
return;
}

// Check if user already exists
var existingUser = new GlideRecord("sys_user");
existingUser.addQuery("email", emailAddr);
existingUser.query();

var userSysId;

if (existingUser.next()) {
gs.log("User already exists: " + emailAddr);
userSysId = existingUser.sys_id.toString();
} else {
// Create new user
var newUser = new GlideRecord("sys_user");
newUser.initialize();
newUser.name = name;
newUser.email = emailAddr;
newUser.user_name = userID;
newUser.department = department;
userSysId = newUser.insert();
gs.log("New user created: " + name + " (" + emailAddr + ")");
}

// Add user to groups
groups.forEach(function(groupName) {
groupName = groupName.trim();
if (groupName) {
var group = new GlideRecord("sys_user_group");
group.addQuery("name", groupName);
group.query();
if (group.next()) {
var mem = new GlideRecord("sys_user_grmember");
mem.initialize();
mem.user = userSysId;
mem.group = group.sys_id;
mem.insert();
gs.log("User added to group: " + groupName);
} else {
gs.log("Group not found: " + groupName);
}
}
});

})(email, action);


Loading