[rt-users] Creating New User through API

Emmanuel Lacour elacour at easter-eggs.com
Wed Jun 16 01:51:08 EDT 2010

On Tue, Jun 15, 2010 at 02:20:45PM -0400, scott 2600 wrote:
> Hello -
> We run a call center for our local schools.  One thing we have done recently
> is create a web based system for our interns that man the helpdesk so they
> receive a  call with a problem, obtain the user's email address and are able
> to pull up all kinds of information about their district (outages in
> district, past tickets and open tickets for the user etc).
> Everything works great, except if the user has never submitted a ticket in
> RT.
> What I had started with was creating  a new entry in the USERS table for
> them.  I missed groupmembers and cachedgroupmembers - but I think I want to
> abandon touching the db direct and using the API (I did the db direct for
> expediency for our needs).
> So I need help working with the RT::User API.   Maybe this is  just a Perl
> 101 lesson, but where do I find how to use the calls that are available in
> there?   Is there a good spot that has some code examples on how to use that
> ?   I have the book RT Essentials and I see it exists, but haven't put
> together how to use any of the f unctions (or what they are), and a Google
> search didn't yield what I needed either.
> I appreciate any and all suggestions.

Short and incomplete explanation: every RT objects (User, Groups, Users,
Groups, Ticket, ...) are documented in corresponding file in
lib/RT/....pm, for example perldoc lib/RT/User_Overlay.pm.

But the easiest way to start understanding how it could be used is to
look at code used in mason templates, for example

You can also find examples in scrips actions/conditions provided at

In your case, creating a new user can be done with something like:

my $User = RT::User->new( $RT::SystemUser );
my ($val, $msg) = $User->LoadOrCreateByEmail( 'hi_address at email' );
unless ( $val ) {
    warn "Couldn't create or load user: $msg\n";

but if you wan't to create it with specific Name, RealName, ... you have

first check if it doesn't already exists with $User->Load(...) or
$User->LoadByEmail(...);, then create it with $User->Create(...)

More information about the rt-users mailing list