Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Request Tracker: Users

round-robin auto assignment?

 

 

Request Tracker users RSS feed   Index | Next | Previous | View Threaded


mrz at intelenet

Dec 15, 2004, 1:30 PM

Post #1 of 13 (3374 views)
Permalink
round-robin auto assignment?

Would like to auto assign incoming "sales" tickets amongst users in the
"sales" group. I imagine that's possible with an On-Create but I'm not sure
what that code would look like.

Has anyone already invented this wheel?

_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Be sure to check out the RT wiki at http://wiki.bestpractical.com


rt at chaka

Dec 15, 2004, 2:17 PM

Post #2 of 13 (3336 views)
Permalink
Re: round-robin auto assignment? [In reply to]

The scrip needs to figure out the last ticket created in the
queue, figure out who it was assigned to, and then assign
to the next person in a list that is also stored in the
scrip.

Here is a start but there may be subtle bugs:

my @owners = qw( george sam bill fred ); #could create a group for this
push(@owners, @owners);

my $tickets = RT::Tickets->new($RT::System);
$tickets->LimitQueue(VALUE => 'my queue');
$tickets->LimitId(VALUE => $Ticket->Id, OPERATOR => '!=');
$tickets->OrderBy( FIELD => 'id', ORDER => 'DESC' );
my $last_ticket = $tickets->First;
my $last_owner = $last_ticket->Owner->Name;

my $i = 0;
my $new_owner;

while (1) {
if ($owners[$i] eq $last_owner) {
$new_owner = $owners[$i+1];
$Ticket->SetOwner($new_owner);
last;
}
}

On Wed, Dec 15, 2004 at 01:30:02PM -0800, matthew zeier wrote:
>
> Would like to auto assign incoming "sales" tickets amongst users in the
> "sales" group. I imagine that's possible with an On-Create but I'm not
> sure what that code would look like.
>
> Has anyone already invented this wheel?
>
> _______________________________________________
> http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users
>
> Be sure to check out the RT wiki at http://wiki.bestpractical.com
_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Be sure to check out the RT wiki at http://wiki.bestpractical.com


mrz at intelenet

Dec 15, 2004, 3:44 PM

Post #3 of 13 (3335 views)
Permalink
Re: round-robin auto assignment? [In reply to]

Condition: On Create
Action: User Defined
Template: blank
Stage: TransactionCreate

I pasted what you had into "Custom action prep code" . Its a scrip just
for a particular queue. I'm seeing the following error:


[Wed Dec 15 23:35:51 2004] [error]: Scrip 57 Prepare failed: Global symbol
"$Ticket" requires explicit package name at (eval 2222) line 6.
Global symbol "$Ticket" requires explicit package name at (eval 2222) line
17.
(/opt/rt3/lib/RT/Action/UserDefined.pm:65)

What's the right way to reference $Ticket?

my @owners = qw( mrz jstein vzwick ); #could create a group for this
push(@owners, @owners);

my $tickets = RT::Tickets->new($RT::System);
$tickets->LimitQueue(VALUE => 'my queue');
$tickets->LimitId(VALUE => $Ticket->Id, OPERATOR => '!=');
$tickets->OrderBy( FIELD => 'id', ORDER => 'DESC' );
my $last_ticket = $tickets->First;
my $last_owner = $last_ticket->Owner->Name;

my $i = 0;
my $new_owner;

while (1) {
if ($owners[$i] eq $last_owner) {
$new_owner = $owners[$i+1];
$Ticket->SetOwner($new_owner);
last;
}
}

_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Be sure to check out the RT wiki at http://wiki.bestpractical.com


mrz at intelenet

Dec 15, 2004, 8:44 PM

Post #4 of 13 (3347 views)
Permalink
Re: round-robin auto assignment? [In reply to]

I forgot to change 'my queue' to something more meaningful. However, I
don't think this scrip is even being called. Here's my log output:

[Thu Dec 16 04:37:35 2004] [debug]: About to think about scrips for
transaction147917 (/opt/rt3/lib/RT/Transaction_Overlay.pm:140)
[Thu Dec 16 04:37:35 2004] [debug]: About to prepare scrips for
transaction147917 (/opt/rt3/lib/RT/Transaction_Overlay.pm:144)
[Thu Dec 16 04:37:35 2004] [debug]: Found 4 scrips
(/opt/rt3/lib/RT/Scrips_Overlay.pm:349)
[Thu Dec 16 04:37:35 2004] [debug]: Converting 'utf-8' to 'us-ascii'
for text/plain - [intelenet.net #26582] t2
(/opt/rt3/lib/RT/I18N.pm:222)
[Thu Dec 16 04:37:35 2004] [debug]: Converting 'utf-8' to 'us-ascii'
for text/plain - [intelenet.net #26582] t2
(/opt/rt3/lib/RT/I18N.pm:222)
[Thu Dec 16 04:37:36 2004] [debug]: About to commit scrips for
transaction147917 (/opt/rt3/lib/RT/Transaction_Overlay.pm:153)
[Thu Dec 16 04:37:36 2004] [info]:
<rt-3.2.2-26582-147917-3.10.6204116387742 [at] intelenet> #26582/147917
- Scrip 3 Create - Notify AdminCcs
(/opt/rt3/lib/RT/Action/SendEmail.pm:231)
[Thu Dec 16 04:37:36 2004] [info]:
<rt-3.2.2-26582-147917-3.10.6204116387742 [at] intelenet> sent To:
"AdminCc of InteleNet Ticket #26582":; Cc: Bcc: van@t
(/opt/rt3/lib/RT/Action/SendEmail.pm:291)
[Thu Dec 16 04:37:36 2004] [info]:
<rt-3.2.2-26582-147917-14.10.6792598340465 [at] intelenet> #26582/147917
- Scrip 14 On Transaction, Nofity Owner
(/opt/rt3/lib/RT/Action/SendEmail.pm:231)
[Thu Dec 16 04:37:36 2004] [info]:
<rt-3.2.2-26582-147917-14.10.6792598340465 [at] intelenet> No recipients
found. Not sending.
(/opt/rt3/lib/RT/Action/SendEmail.pm:243)
[Thu Dec 16 04:37:36 2004] [info]: Ticket 26582 created in queue 'ICI
Internal' by mrz (/opt/rt3/lib/RT/Ticket_Overlay.pm:718)


On Dec 15, 2004, at 3:44 PM, matthew zeier wrote:

>
> Condition: On Create
> Action: User Defined
> Template: blank
> Stage: TransactionCreate
>
> I pasted what you had into "Custom action prep code" . Its a scrip
> just for a particular queue. I'm seeing the following error:
>
>
> [Wed Dec 15 23:35:51 2004] [error]: Scrip 57 Prepare failed: Global
> symbol "$Ticket" requires explicit package name at (eval 2222) line 6.
> Global symbol "$Ticket" requires explicit package name at (eval 2222)
> line 17.
> (/opt/rt3/lib/RT/Action/UserDefined.pm:65)
>
> What's the right way to reference $Ticket?
>
> my @owners = qw( mrz jstein vzwick ); #could create a group for this
> push(@owners, @owners);
>
> my $tickets = RT::Tickets->new($RT::System);
> $tickets->LimitQueue(VALUE => 'my queue');
> $tickets->LimitId(VALUE => $Ticket->Id, OPERATOR => '!=');
> $tickets->OrderBy( FIELD => 'id', ORDER => 'DESC' );
> my $last_ticket = $tickets->First;
> my $last_owner = $last_ticket->Owner->Name;
>
> my $i = 0;
> my $new_owner;
>
> while (1) {
> if ($owners[$i] eq $last_owner) {
> $new_owner = $owners[$i+1];
> $Ticket->SetOwner($new_owner);
> last;
> }
> }
>
> _______________________________________________
> http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users
>
> Be sure to check out the RT wiki at http://wiki.bestpractical.com
>
--
matthew zeier - "Nothing in life is to be feared. It is only to be
understood." - Marie Curie

_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Be sure to check out the RT wiki at http://wiki.bestpractical.com


mrz at intelenet

Dec 28, 2004, 1:47 PM

Post #5 of 13 (3316 views)
Permalink
Re: round-robin auto assignment? [In reply to]

I've done a little more work on this with Chance (scrip below). We're
getting the following error with $Ticket:


[Tue Dec 28 21:45:58 2004] [error]: Scrip 57 Prepare failed: Global symbol
"$Ticket" requires explicit package name at (eval 2333) line 6.
Global symbol "$Ticket" requires explicit package name at (eval 2333) line
18.
Global symbol "$Ticket" requires explicit package name at (eval 2333) line
24.
syntax error at (eval 2333) line 24, near "->SetOwner[."
(/opt/rt3/lib/RT/Action/UserDefined.pm:65)


How do I refer to the current ticket?

----

my @owners = qw( 2306 904 1880 ); #could create a group for this
push(@owners, @owners);

my $tickets = RT::Tickets->new($RT::System);
$tickets->LimitQueue(VALUE => 'ICI Internal');
$tickets->LimitId(VALUE => $Ticket->Id, OPERATOR => '!=');
$tickets->OrderBy( FIELD => 'id', ORDER => 'DESC' );
my $last_ticket = $tickets->First;
my $last_owner = $last_ticket->Owner->Id;

my $i = 0;
my $isSet = 0;
my $new_owner;

foreach $i ( @owners) {
if ($owners[$i] == $last_owner) {
$new_owner = $owners[$i+1];
$Ticket->SetOwner($new_owner);
$isSet = 1;
}
}

if (!($isSet)) {
$Ticket->SetOwner[int(rand($#owners))];
}

_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Be sure to check out the RT wiki at http://wiki.bestpractical.com


rt at chaka

Dec 28, 2004, 2:16 PM

Post #6 of 13 (3333 views)
Permalink
Re: round-robin auto assignment? [In reply to]

Try:

$Transaction->TicketObj->SetOwner

On Tue, Dec 28, 2004 at 01:47:17PM -0800, matthew zeier wrote:
>
> I've done a little more work on this with Chance (scrip below). We're
> getting the following error with $Ticket:
>
>
> [Tue Dec 28 21:45:58 2004] [error]: Scrip 57 Prepare failed: Global symbol
> "$Ticket" requires explicit package name at (eval 2333) line 6.
> Global symbol "$Ticket" requires explicit package name at (eval 2333) line
> 18.
> Global symbol "$Ticket" requires explicit package name at (eval 2333) line
> 24.
> syntax error at (eval 2333) line 24, near "->SetOwner[."
> (/opt/rt3/lib/RT/Action/UserDefined.pm:65)
>
>
> How do I refer to the current ticket?
>
> ----
>
> my @owners = qw( 2306 904 1880 ); #could create a group for this
> push(@owners, @owners);
>
> my $tickets = RT::Tickets->new($RT::System);
> $tickets->LimitQueue(VALUE => 'ICI Internal');
> $tickets->LimitId(VALUE => $Ticket->Id, OPERATOR => '!=');
> $tickets->OrderBy( FIELD => 'id', ORDER => 'DESC' );
> my $last_ticket = $tickets->First;
> my $last_owner = $last_ticket->Owner->Id;
>
> my $i = 0;
> my $isSet = 0;
> my $new_owner;
>
> foreach $i ( @owners) {
> if ($owners[$i] == $last_owner) {
> $new_owner = $owners[$i+1];
> $Ticket->SetOwner($new_owner);
> $isSet = 1;
> }
> }
>
> if (!($isSet)) {
> $Ticket->SetOwner[int(rand($#owners))];
> }
>
> _______________________________________________
> http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users
>
> Be sure to check out the RT wiki at http://wiki.bestpractical.com
_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Be sure to check out the RT wiki at http://wiki.bestpractical.com


aharrison at gmail

Dec 28, 2004, 2:37 PM

Post #7 of 13 (3318 views)
Permalink
Re: round-robin auto assignment? [In reply to]

On Tue, 28 Dec 2004 13:47:17 -0800, matthew zeier <mrz [at] intelenet> wrote:
>
> I've done a little more work on this with Chance (scrip below). We're
> getting the following error with $Ticket:
>
> [Tue Dec 28 21:45:58 2004] [error]: Scrip 57 Prepare failed: Global symbol
> "$Ticket" requires explicit package name at (eval 2333) line 6.
> Global symbol "$Ticket" requires explicit package name at (eval 2333) line
> 18.
> Global symbol "$Ticket" requires explicit package name at (eval 2333) line
> 24.
> syntax error at (eval 2333) line 24, near "->SetOwner[."
> (/opt/rt3/lib/RT/Action/UserDefined.pm:65)
>
>
> How do I refer to the current ticket?
>
> ----
>
> my @owners = qw( 2306 904 1880 ); #could create a group for this
> push(@owners, @owners);
>
> my $tickets = RT::Tickets->new($RT::System);
> $tickets->LimitQueue(VALUE => 'ICI Internal');
> $tickets->LimitId(VALUE => $Ticket->Id, OPERATOR => '!=');
> $tickets->OrderBy( FIELD => 'id', ORDER => 'DESC' );
> my $last_ticket = $tickets->First;
> my $last_owner = $last_ticket->Owner->Id;
>
> my $i = 0;
> my $isSet = 0;
> my $new_owner;
>
> foreach $i ( @owners) {
> if ($owners[$i] == $last_owner) {
> $new_owner = $owners[$i+1];
> $Ticket->SetOwner($new_owner);
> $isSet = 1;
> }
> }
>
> if (!($isSet)) {
> $Ticket->SetOwner[int(rand($#owners))];
> }
>

You have to iterate the collection of tickets.

while ( my $Ticket = $tickets->Next ) {
...
}

--
Andy Harrison
_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Be sure to check out the RT wiki at http://wiki.bestpractical.com


rt at chaka

Dec 28, 2004, 2:40 PM

Post #8 of 13 (3359 views)
Permalink
Re: round-robin auto assignment? [In reply to]

Sorry. Use this:

$self->TicketObj->SetOwner

On Tue, Dec 28, 2004 at 03:03:14PM -0800, matthew zeier wrote:
>
> >
> >$Transaction->TicketObj->SetOwner
> >
>
> Similiar error.
>
> [Tue Dec 28 23:01:49 2004] [error]: Scrip 57 Prepare failed: Global symbol
> "$Ticket" requires explicit package name at (eval 2195) line 6.
> Global symbol "$Transaction" requires explicit package name at (eval 2195)
> line 18.
> Global symbol "$Transaction" requires explicit package name at (eval 2195)
> line 24.
> syntax error at (eval 2195) line 24, near "->SetOwner[."
> (/opt/rt3/lib/RT/Action/UserDefined.pm:65)
>
>
>
> my @owners = qw( 2306 904 1880 ); #could create a group for this
> push(@owners, @owners);
>
> my $tickets = RT::Tickets->new($RT::System);
> $tickets->LimitQueue(VALUE => 'ICI Internal');
> $tickets->LimitId(VALUE => $Ticket->Id, OPERATOR => '!=');
> $tickets->OrderBy( FIELD => 'id', ORDER => 'DESC' );
> my $last_ticket = $tickets->First;
> my $last_owner = $last_ticket->Owner->Id;
>
> my $i = 0;
> my $isSet = 0;
> my $new_owner;
>
> foreach $i ( @owners) {
> if ($owners[$i] == $last_owner) {
> $new_owner = $owners[$i+1];
> $Transaction->TicketObj->SetOwner($new_owner);
> $isSet = 1;
> }
> }
>
> if (!($isSet)) {
> $Transaction->TicketObj->SetOwner[int(rand($#owners))];
> }
_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Be sure to check out the RT wiki at http://wiki.bestpractical.com


mrz at intelenet

Dec 28, 2004, 2:46 PM

Post #9 of 13 (3310 views)
Permalink
Re: round-robin auto assignment? [In reply to]

>>
>> How do I refer to the current ticket?

>> if (!($isSet)) {
>> $Ticket->SetOwner[int(rand($#owners))];
>> }
>>
>
> You have to iterate the collection of tickets.
>
> while ( my $Ticket = $tickets->Next ) {
> ...
> }


Why? You mean I have to re-search the queue to find the ticket I'm in the
midst of creating?

That's seems like a horribly complicated method to get the current ticket's
object.

_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Be sure to check out the RT wiki at http://wiki.bestpractical.com


rt at chaka

Dec 28, 2004, 2:58 PM

Post #10 of 13 (3315 views)
Permalink
Re: round-robin auto assignment? [In reply to]

Change RT::System to RT::SystemUser

On Tue, Dec 28, 2004 at 03:36:33PM -0800, matthew zeier wrote:
> >
> >$self->TicketObj->SetOwner
>
> Hey, that was it. But I guess now I'm missing one other piece of data -
> currentuser?
>
> I promise after I get this resolved, I'll sign up for the one day RT
> developer training session!
>
> [Tue Dec 28 23:30:34 2004] [error]: Scrip 57 Prepare failed: No currentuser
> at /opt/rt3/lib/RT/Base.pm line 123
> RT::Base::loc('RT::System=HASH(0x9d9940c)', 'Queue') called at
> /opt/rt3/lib/RT/Base.pm line 118
> RT::Base::loc('RT::Tickets=HASH(0x9d3cd78)', 'Queue') called at
> /opt/rt3/lib/RT/Tickets_Overlay.pm line 1047
> RT::Tickets::LimitQueue('RT::Tickets=HASH(0x9d3cd78)', 'VALUE', 'ICI
> Internal') called at (eval 2529) line 5
> eval 'my @owners = qw( 2306 904 1880 ); #could create a group for
> this
> push(@owners, @owners);
>
> my $tickets = RT::Tickets->new($RT::System);
> $tickets->LimitQueue(VALUE => \'ICI Internal\');
> $tickets->LimitId(VALUE => $self->TicketObj->Id, OPERATOR => \'!=\');
> $tickets->OrderBy( FIELD => \'id\', ORDER => \'DESC\' );
> my $last_ticket = $tickets->First;
> my $last_owner = $last_ticket->Owner->Id;
>
> my $i = 0;
> my $isSet = 0;
> my $new_owner;
>
> foreach $i ( @owners) {
> if ($owners[$i] == $last_owner) {
> $new_owner = $owners[$i+1];
> $self->TicketObj->SetOwner($new_owner);
> $isSet = 1;
> }
> }
>
> if (!($isSet)) {
> my $randOwner = int(rand($#owners));
> $randOwner = $owners[$randOwner];
> $self->TicketObj->SetOwner($randOwner);
> }
_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Be sure to check out the RT wiki at http://wiki.bestpractical.com


mrz at intelenet

Dec 28, 2004, 3:03 PM

Post #11 of 13 (3299 views)
Permalink
Re: round-robin auto assignment? [In reply to]

>
> $Transaction->TicketObj->SetOwner
>

Similiar error.

[Tue Dec 28 23:01:49 2004] [error]: Scrip 57 Prepare failed: Global symbol
"$Ticket" requires explicit package name at (eval 2195) line 6.
Global symbol "$Transaction" requires explicit package name at (eval 2195)
line 18.
Global symbol "$Transaction" requires explicit package name at (eval 2195)
line 24.
syntax error at (eval 2195) line 24, near "->SetOwner[."
(/opt/rt3/lib/RT/Action/UserDefined.pm:65)



my @owners = qw( 2306 904 1880 ); #could create a group for this
push(@owners, @owners);

my $tickets = RT::Tickets->new($RT::System);
$tickets->LimitQueue(VALUE => 'ICI Internal');
$tickets->LimitId(VALUE => $Ticket->Id, OPERATOR => '!=');
$tickets->OrderBy( FIELD => 'id', ORDER => 'DESC' );
my $last_ticket = $tickets->First;
my $last_owner = $last_ticket->Owner->Id;

my $i = 0;
my $isSet = 0;
my $new_owner;

foreach $i ( @owners) {
if ($owners[$i] == $last_owner) {
$new_owner = $owners[$i+1];
$Transaction->TicketObj->SetOwner($new_owner);
$isSet = 1;
}
}

if (!($isSet)) {
$Transaction->TicketObj->SetOwner[int(rand($#owners))];
}

_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Be sure to check out the RT wiki at http://wiki.bestpractical.com


mrz at intelenet

Dec 28, 2004, 3:36 PM

Post #12 of 13 (3329 views)
Permalink
Re: round-robin auto assignment? [In reply to]

>
> $self->TicketObj->SetOwner

Hey, that was it. But I guess now I'm missing one other piece of data -
currentuser?

I promise after I get this resolved, I'll sign up for the one day RT
developer training session!

[Tue Dec 28 23:30:34 2004] [error]: Scrip 57 Prepare failed: No currentuser
at /opt/rt3/lib/RT/Base.pm line 123
RT::Base::loc('RT::System=HASH(0x9d9940c)', 'Queue') called at
/opt/rt3/lib/RT/Base.pm line 118
RT::Base::loc('RT::Tickets=HASH(0x9d3cd78)', 'Queue') called at
/opt/rt3/lib/RT/Tickets_Overlay.pm line 1047
RT::Tickets::LimitQueue('RT::Tickets=HASH(0x9d3cd78)', 'VALUE', 'ICI
Internal') called at (eval 2529) line 5
eval 'my @owners = qw( 2306 904 1880 ); #could create a group for
this
push(@owners, @owners);

my $tickets = RT::Tickets->new($RT::System);
$tickets->LimitQueue(VALUE => \'ICI Internal\');
$tickets->LimitId(VALUE => $self->TicketObj->Id, OPERATOR => \'!=\');
$tickets->OrderBy( FIELD => \'id\', ORDER => \'DESC\' );
my $last_ticket = $tickets->First;
my $last_owner = $last_ticket->Owner->Id;

my $i = 0;
my $isSet = 0;
my $new_owner;

foreach $i ( @owners) {
if ($owners[$i] == $last_owner) {
$new_owner = $owners[$i+1];
$self->TicketObj->SetOwner($new_owner);
$isSet = 1;
}
}

if (!($isSet)) {
my $randOwner = int(rand($#owners));
$randOwner = $owners[$randOwner];
$self->TicketObj->SetOwner($randOwner);
}

_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Be sure to check out the RT wiki at http://wiki.bestpractical.com


mrz at intelenet

Dec 28, 2004, 6:22 PM

Post #13 of 13 (3323 views)
Permalink
Re: round-robin auto assignment - DONE [In reply to]

Thanks to everyone who helped with this. The working scrip is below. If
the last owner isn't one of the owners to round-robin through, a random
owner is picked. Ideally, @owners would be an RT group and somehow
magically work, but that's for the next rev.

my @owners = qw( 752 82040 ); # need to grab id from Users table
push(@owners, @owners);

my $tickets = RT::Tickets->new($RT::SystemUser);
$tickets->LimitQueue(VALUE => 'Sales'); # my queue, yours may differ
$tickets->LimitId(VALUE => $self->TicketObj->Id, OPERATOR => '!=');
$tickets->OrderBy( FIELD => 'id', ORDER => 'DESC' );
my $last_ticket = $tickets->First;
my $last_owner = $last_ticket->Owner;

my $i = 0;
my $isSet = 0;
my $new_owner;

foreach $i ( @owners) {
if ($owners[$i] == $last_owner) {
$new_owner = $owners[$i+1];
$self->TicketObj->SetOwner($new_owner);
$isSet = 1;
}
}

if (!($isSet)) {
my $randOwner = int(rand($#owners));
$randOwner = $owners[$randOwner];
$self->TicketObj->SetOwner($randOwner);
}

_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

Be sure to check out the RT wiki at http://wiki.bestpractical.com

Request Tracker users RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.