SuiteQL Query Library

Employees: Roles and Permissions

Returns all employees, their assigned roles, and the permissions granted.

-- Contributor: Tim Dietrich (timdietrich@me.com)
-- Additional Info: https://timdietrich.me/blog/netsuite-suiteql-employees-supervisors-roles-permissions/
SELECT
	Employee.ID AS EmployeeID,	
	Employee.LastName,
	Employee.FirstName,
	Employee.Title,
	Employee.Email,
	Supervisor.LastName AS SupervisorLastName,
	Supervisor.FirstName AS SupervisorFirstName,
	Supervisor.Title AS SupervisorTitle,
	Supervisor.Email AS SupervisorEmail,
	Role.Name AS RoleName,
	RolePermissions.Name AS PermissionName,
	BUILTIN.DF( RolePermissions.PermLevel ) AS PermissionLevel
FROM
	Employee
	LEFT OUTER JOIN Employee AS Supervisor ON
		( Supervisor.ID = Employee.Supervisor )
	INNER JOIN EmployeeRolesForSearch ON
		( EmployeeRolesForSearch.Entity = Employee.ID )
	INNER JOIN Role ON
		( Role.ID = EmployeeRolesForSearch.Role )
		AND ( Role.IsInactive = 'F' )
	INNER JOIN RolePermissions ON
		( RolePermissions.Role = Role.ID )	
WHERE
	( Employee.IsInactive = 'F' )
	AND ( Employee.GiveAccess = 'T' )
ORDER BY
	Employee.LastName,
	Employee.FirstName

Click here to return to the list of available queries.

About Me

Hello, I’m Tim Dietrich. I design and build custom software for businesses running on NetSuite — from mobile apps and Web portals to Web APIs and integrations.

I’ve created several widely used open-source solutions for the NetSuite community, including the SuiteQL Query Tool and SuiteAPI, which help developers and businesses get more out of their systems.

I’m also the founder of SuiteStep, a NetSuite development studio focused on pushing the boundaries of what’s possible on the platform. Through SuiteStep, I deliver custom software and AI-driven solutions that make NetSuite more powerful, accessible, and future-ready.

Copyright © 2025 Tim Dietrich.