Importing users question

I’m using RT3.4.0

I’ve read through some of the posts and the wiki. Everyone seems to think
it’s possible including myself and honestly, doesn’t seem that hard to do…
however I’ve yet to see someone say, “yes, i imported 100 users with
technique/script, etc”. The script on the wiki shows how to create a user,
but i don’t see how it updates the Group tables.

I was looking around in the DB. I see it creates the entries in the Users,
Groups, and GroupMembers. I believe I could create one “example” user and
see what changes in the DB and script it myself to essentially “clone” the
user 100 more times. I’m just hoping someone may have already created a
“clone” script or can point out things like “don’t forget about updating
”.

I’m no super-DBA or programmer, but i can muddle my way through it. Just
need a shove in the right direction. Perhaps what function is called when
RT auto-creates the users who emailed tickets in?

thanks in advance.

-MatW

Find a local pizza place, music store, museum and more�then map the best
route! Bing Karten - Wegbeschreibungen, Reiseplanung, Verkehrskameras und mehr

Matt;

If you have your users and group already created , you can use the below
scripts to add group membership …
I have a separate script that create users,and another to create groups
if you wish, something to bare in mind when creating users is most of
the time the users exist in the system because the 've emailed the
system and RT auto created them
Roy

#!/usr/bin/perl
use lib “/opt/rt3/lib”;
use strict;
use RT;
use RT::Interface::CLI qw(CleanEnv);
CleanEnv();
RT::LoadConfig();
RT::Init();
my $group = “Your group”;
my @users =(‘user 1’,‘user 2’,‘user 3’) ;

##load Group object
my $gobject = new RT::Group (RT::SystemUser);
$gobject->LoadUserDefinedGroup($group);

foreach my $u (@users) {
##load user object
my $user=RT::User->new(RT::SystemUser);
my ($s, $msg) = $user->Load($u);
print “we loaded user $u his id is $user->Id \n”;
if ($s) {
my ($gmd, $msg) = $gobject->AddMember($user->PrincipalId);
if ($gmd == 0 ) {
print “Could not add $u to this group error is $msg \n”;
}
}
}
exit;

Mat W wrote:

-----Original Message-----
From: rt-users-bounces@lists.bestpractical.com On Behalf Of Mat W
Sent: Wednesday, November 15, 2006 10:06 AM
To: rt-users@lists.bestpractical.com
Subject: [rt-users] importing users question…

I’m using RT3.4.0

I’ve read through some of the posts and the wiki. Everyone
seems to think
it’s possible including myself and honestly, doesn’t seem
that hard to do…
however I’ve yet to see someone say, “yes, i imported 100
users with
technique/script, etc”. The script on the wiki shows how to
create a user,
but i don’t see how it updates the Group tables.

I was looking around in the DB. I see it creates the entries
in the Users,
Groups, and GroupMembers. I believe I could create one
“example” user and
see what changes in the DB and script it myself to
essentially “clone” the
user 100 more times. I’m just hoping someone may have
already created a
“clone” script or can point out things like “don’t forget
about updating
”.

I’m no super-DBA or programmer, but i can muddle my way
through it. Just
need a shove in the right direction. Perhaps what function
is called when
RT auto-creates the users who emailed tickets in?

thanks in advance.

-MatW

Hello Mat,

Could you explain a bit more about what you actually want to do? It sounds
like you just want a script that will create users based on some external
information, but I’m not sure why you are wondering about updating the
Groups table. What code from the wiki are you referring to?

One piece of advice - don’t try to figure out what database tables RT
updates and reverse-engineer that. The API exists so that you don’t need to
do that and so that you can create all the right records without hosing your
database.

We have a script that loads and updates user info every night from an
external source, so if that’s what you are after, it’s definitely doable.

Good luck,
Steve

Stephen Turner
Senior Programmer/Analyst - Client Support Services
MIT Information Services and Technology (IS&T)

essentially, just want to pre-load user’s name, email, office, and phone#
from a basic CSV. part2 would be to populate a few custom fields for the
users.

i see the method in the User.pm to create a new user and this was the info
on the
wiki:(download.bestpractical.com/pub/rt/contrib/ gone)

did a login and let RT create an account for the requestor, I see it added
info to the Group and GroupMember table. and i see entries for each user i
created for the IT staff…

| 106 | User 105 | ACL equiv. for user 105 | ACLEquivalence |
UserEquiv | 105 |
| 107 | NULL | NULL | RT::Ticket-Role |
Requestor | 15 |
| 108 | NULL | NULL | RT::Ticket-Role |
Owner | 15 |
| 109 | NULL | NULL | RT::Ticket-Role | Cc
| 15 |
| 110 | NULL | NULL | RT::Ticket-Role |
AdminCc | 15 |

-----Original Message-----
From: rt-users-bounces@lists.bestpractical.com On Behalf Of Mat W
Sent: Wednesday, November 15, 2006 10:06 AM
To: rt-users@lists.bestpractical.com
Subject: [rt-users] importing users question…

I’m using RT3.4.0

I’ve read through some of the posts and the wiki. Everyone
seems to think
it’s possible including myself and honestly, doesn’t seem
that hard to do…
however I’ve yet to see someone say, “yes, i imported 100
users with
technique/script, etc”. The script on the wiki shows how to
create a user,
but i don’t see how it updates the Group tables.

I was looking around in the DB. I see it creates the entries
in the Users,
Groups, and GroupMembers. I believe I could create one
“example” user and
see what changes in the DB and script it myself to
essentially “clone” the
user 100 more times. I’m just hoping someone may have
already created a
“clone” script or can point out things like “don’t forget
about updating
”.

I’m no super-DBA or programmer, but i can muddle my way
through it. Just
need a shove in the right direction. Perhaps what function
is called when
RT auto-creates the users who emailed tickets in?

thanks in advance.

-MatW

Hello Mat,

Could you explain a bit more about what you actually want to do? It sounds
like you just want a script that will create users based on some external
information, but I’m not sure why you are wondering about updating the
Groups table. What code from the wiki are you referring to?

One piece of advice - don’t try to figure out what database tables RT
updates and reverse-engineer that. The API exists so that you don’t need to
do that and so that you can create all the right records without hosing
your
database.

We have a script that loads and updates user info every night from an
external source, so if that’s what you are after, it’s definitely doable.

Good luck,
Steve


Stephen Turner
Senior Programmer/Analyst - Client Support Services
MIT Information Services and Technology (IS&T)

Stay in touch with old friends and meet new ones with Windows Live Spaces
http://clk.atdmt.com/MSN/go/msnnkwsp0070000001msn/direct/01/?href=http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends.aspx&mkt=en-us

We’re looking to roll-out a new RT install globally (I use it locally w/ my
Jr. Admin). So the only users are the IT Staff Logins currently on the new
system. Originally, I created a “shared” username people log in with, then
fill-in a submission form. When the “requestor” doesn’t exist RT creates an
unprivliged account it appears. I essentially want to just preload those
accounts for each user with the contact info and such which wouldn’t be
populated in the RT autocreation. Once those are in, I have some Custom
Fields I’m going to load in for users.

Matt;

If you have your users and group already created , you can use the below
scripts to add group membership …
I have a separate script that create users,and another to create groups if
you wish, something to bare in mind when creating users is most of the time
the users exist in the system because the 've emailed the system and RT
auto created them
Roy

#!/usr/bin/perl
use lib “/opt/rt3/lib”;
use strict;
use RT;
use RT::Interface::CLI qw(CleanEnv);
CleanEnv();
RT::LoadConfig();
RT::Init();
my $group = “Your group”;
my @users =(‘user 1’,‘user 2’,‘user 3’) ;

##load Group object
my $gobject = new RT::Group (RT::SystemUser);
$gobject->LoadUserDefinedGroup($group);

foreach my $u (@users) {
##load user object
my $user=RT::User->new(RT::SystemUser);
my ($s, $msg) = $user->Load($u);
print “we loaded user $u his id is $user->Id \n”;
if ($s) {
my ($gmd, $msg) = $gobject->AddMember($user->PrincipalId);
if ($gmd == 0 ) {
print “Could not add $u to this group error is $msg \n”;
}
}
}
exit;

Mat W wrote:

I’m using RT3.4.0

I’ve read through some of the posts and the wiki. Everyone seems to think
it’s possible including myself and honestly, doesn’t seem that hard to
do… however I’ve yet to see someone say, “yes, i imported 100 users with
technique/script, etc”. The script on the wiki shows how to create
a user, but i don’t see how it updates the Group tables.

I was looking around in the DB. I see it creates the entries in the Users,
Groups, and GroupMembers. I believe I could create one “example” user and
see what changes in the DB and script it myself to essentially “clone” the
user 100 more times. I’m just hoping someone may have already created a
“clone” script or can point out things like “don’t forget about updating
”.

I’m no super-DBA or programmer, but i can muddle my way through it. Just
need a shove in the right direction. Perhaps what function is called when
RT auto-creates the users who emailed tickets in?

thanks in advance.

-MatW


Find a local pizza place, music store, museum and more�then map the best
route! Bing Maps - Directions, trip planning, traffic cameras & more


The rt-users Archives

Community help: http://wiki.bestpractical.com
Commercial support: sales@bestpractical.com

Discover RT’s hidden secrets with RT Essentials from O’Reilly Media. Buy a
copy at http://rtbook.bestpractical.com

Find a local pizza place, music store, museum and more�then map the best
route! Bing Maps - Directions, trip planning, traffic cameras & more

-----Original Message-----
From: rt-users-bounces@lists.bestpractical.com
[mailto:rt-users-bounces@lists.bestpractical.com] On Behalf Of Mat W
Sent: Wednesday, November 15, 2006 11:19 AM
To: sturner@mit.edu
Cc: rt-users@lists.bestpractical.com
Subject: RE: [rt-users] importing users question…

essentially, just want to pre-load user’s name, email,
office, and phone#
from a basic CSV. part2 would be to populate a few custom
fields for the
users.

i see the method in the User.pm to create a new user and this
was the info
on the
wiki:(download.bestpractical.com/pub/rt/contrib/ gone
her/rtadduser)

did a login and let RT create an account for the requestor, I
see it added
info to the Group and GroupMember table. and i see entries
for each user i
created for the IT staff…

Mat,

If you use the code from the wiki, the User->Create method will do all the
necessary group table updates/inserts for you - no need to worry about
updating database tables yourself.

Steve

Stephen Turner
Senior Programmer/Analyst - Client Support Services
MIT Information Services and Technology (IS&T)

i have the little perl scirpt that adds users via the backend just fine.
now how do i script it so the users get added to a group? I’m thinking it’s
the GroupMember.pm file using the “Create” method.

Anyone just want to sanity check my logic?

MSN Shopping has everything on your holiday list. Get expert picks by style,
age, and price. Try it!
http://shopping.msn.com/content/shp/?ctId=8000,ptnrid=176,ptnrdata=200601&tcode=wlmtagline

-----Original Message-----
From: rt-users-bounces@lists.bestpractical.com
[mailto:rt-users-bounces@lists.bestpractical.com] On Behalf Of Mat W
Sent: Monday, November 20, 2006 3:28 PM
To: rt-users@lists.bestpractical.com
Subject: [rt-users] importing users question…and adding
them to a group

i have the little perl scirpt that adds users via the backend
just fine.
now how do i script it so the users get added to a group?
I’m thinking it’s
the GroupMember.pm file using the “Create” method.

No, you first need to load the group and then add add the user to the group:

my $groupname = ‘a-group-name’;
my $username = ‘a-user-name’;

my $group = RT::Group->new(RT::SystemUser);
$group->LoadUserDefinedGroup($groupname);

my $user = RT::User->new(RT::SystemUser);
$user->Load($username);

$group->AddMember($user->PrincipalObj->id);

To figure out these kinds of things I’ve always found it helpful to go to
the relevant place in the web interface (in this place the group “Members”
screen) to see how things are done.

Steve