Re: [rt-users] adding custom filed value to email

2008-03-27 Thread Huw Selley
Hi Gene,

I saw this fly by and just couldn't help myself trying to optimise it:

On 27 Mar 2008, at 16:04, Gene LeDuc wrote:
   sub get_custom {
 my $target_name = $_[0];
 my $val = $Ticket-FirstCustomFieldValue($target_name);
 return $val if defined $val;
 return undef;
   }

   sub get_custom {
 return $val if $Ticket-FirstCustomFieldValue($_[0]);
 return undef;
   }

Sorry, it's a pointless opto (just reduces numbers of lines and makes  
it less readable  but that's how we do in perl land right?) but I  
had a spare 30 seconds :)

Regards
Huw



s2s company email disclaimer: 
http://www.s2s.ltd.uk/datasheets/email_disclaimer.pdf
s2s company registration number : 3952958
s2s VAT registration number : GB763132055
Business premises   : Ground Floor, Overline House, Crawley, West 
Sussex, RH10 1JA
Registered address  : Heathcote, Kings Road, Ilkley, West 
Yorkshire, LS29 9AS
Place of registration   : England


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

Community help: http://wiki.bestpractical.com
Commercial support: [EMAIL PROTECTED]


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


Re: [rt-users] adding custom filed value to email

2008-03-27 Thread Huw Selley

On 27 Mar 2008, at 16:29, Huw Selley wrote:
 Hi Gene,

 I saw this fly by and just couldn't help myself trying to optimise it:

OK, I suck and actually sent the wrong opto, here is what I wanted to  
say:

   sub get_custom {
 return $val if $Ticket-FirstCustomFieldValue($_[0]) or return  
undef;
   }

Again, totally pointless but makes the line count prettier :)

Huw


s2s company email disclaimer: 
http://www.s2s.ltd.uk/datasheets/email_disclaimer.pdf
s2s company registration number : 3952958
s2s VAT registration number : GB763132055
Business premises   : Ground Floor, Overline House, Crawley, West 
Sussex, RH10 1JA
Registered address  : Heathcote, Kings Road, Ilkley, West 
Yorkshire, LS29 9AS
Place of registration   : England


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

Community help: http://wiki.bestpractical.com
Commercial support: [EMAIL PROTECTED]


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


Re: [rt-users] adding custom filed value to email

2008-03-27 Thread Huw Selley

On 27 Mar 2008, at 16:41, Huw Selley wrote:

 On 27 Mar 2008, at 16:29, Huw Selley wrote:
 Hi Gene,

 I saw this fly by and just couldn't help myself trying to optimise  
 it:

 OK, I suck and actually sent the wrong opto, here is what I wanted to
 say:

And for those that didn't spot the deliberate mistake *cough* :

   sub get_custom {
 return $Ticket-FirstCustomFieldValue($_[0]) or return undef;
   }

I promise I will stop now!!

Huw



s2s company email disclaimer: 
http://www.s2s.ltd.uk/datasheets/email_disclaimer.pdf
s2s company registration number : 3952958
s2s VAT registration number : GB763132055
Business premises   : Ground Floor, Overline House, Crawley, West 
Sussex, RH10 1JA
Registered address  : Heathcote, Kings Road, Ilkley, West 
Yorkshire, LS29 9AS
Place of registration   : England


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

Community help: http://wiki.bestpractical.com
Commercial support: [EMAIL PROTECTED]


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


Re: [rt-users] Deployment Inquiry

2008-02-28 Thread Huw Selley

On 28 Feb 2008, at 15:13, Todd Rittinger wrote:


 Hello Everyone!

Hello :)


 I have a question regarding deploying RT. Currently we use individual
 queues for our product line, internal support, and interdept.  
 requests.
 This keeps the queue list to a manageable amount. I was curious if
 anyone has deployed with a queue per customer instead of product,
 service, etc. If so, does this render your queue list a bear to  
 manage,
 or has it been a successful deployment type for you? Tips and/or
 suggestions, pitfalls/gotchas?

My org uses a queue per customer and it's been working out quite well  
for us.  Management of the queue list is not much of a burden, it only  
takes a few mins to add a new one. We rarely need to remove a queue.
I guess the amount of customers you have (and how much customer churn)  
will dictate how well it could work for you.

Regards
Huw



s2s company email disclaimer: 
http://www.s2s.ltd.uk/datasheets/email_disclaimer.pdf
s2s company registration number : 3952958
s2s VAT registration number : GB763132055
Business premises   : Ground Floor, Overline House, Crawley, West 
Sussex, RH10 1JA
Registered address  : Heathcote, Kings Road, Ilkley, West 
Yorkshire, LS29 9AS
Place of registration   : England


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

Community help: http://wiki.bestpractical.com
Commercial support: [EMAIL PROTECTED]


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


Re: [rt-users] Rt-remind error

2007-12-19 Thread Huw Selley
Hi Bill,

That line is syntactically correct perl (with perl 5.8.8):

[EMAIL PROTECTED] ~ $ cat test.pl
my(%map) = (
'Nobody' = '[EMAIL PROTECTED]',
'root' = '[EMAIL PROTECTED]',
'queue1,Nobody' = '[EMAIL PROTECTED]',
);
[EMAIL PROTECTED] ~ $
[EMAIL PROTECTED] ~ $ perl -c test.pl
test.pl syntax OK

I would have a look at the lines preceding that and check them for  
errors. Failing that run 'perl -c rtremind.pm' and see what the perl  
compiler thinks is wrong.

Regards
Huw

On 19 Dec 2007, at Wednesday, 19 December 2007, 425PM, Candelario,  
Bill wrote:

 Hi,

 I'm trying to run rt-remind in my ticketing system and get the  
 following
 error.

 perl ./rtremind.pm

 Error
 syntax error at ./rtremind.pm line 42, near my
 Execution of ./rtremind.pm aborted due to compilation errors.

 This part of the rt-remind script is where it's having trouble:

 my(%map) = (
'Nobody' = '[EMAIL PROTECTED]',
'root' = '[EMAIL PROTECTED]',
'queue1,Nobody' = '[EMAIL PROTECTED]',
 );

 Any help would be greatly appreciated.

 Thanks,
 Bill
 ___
 http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users

 SAVE THOUSANDS OF DOLLARS ON RT SUPPORT:

 If you sign up for a new RT support contract before December 31,  
 we'll take
 up to 20 percent off the price. This sale won't last long, so get in  
 touch today.
Email us at [EMAIL PROTECTED] or call us at +1 617 812 0745.


 Community help: http://wiki.bestpractical.com
 Commercial support: [EMAIL PROTECTED]


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



s2s company email disclaimer: 
http://www.s2s.ltd.uk/datasheets/email_disclaimer.pdf
s2s company registration number : 3952958
s2s VAT registration number : GB763132055
Business premises   : Ground Floor, Overline House, Crawley, West 
Sussex, RH10 1JA
Registered address  : 29 High Street, Crawley, West Sussex, RH10 1BQ
Place of registration   : England

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

SAVE THOUSANDS OF DOLLARS ON RT SUPPORT:

If you sign up for a new RT support contract before December 31, we'll take
up to 20 percent off the price. This sale won't last long, so get in touch 
today.
Email us at [EMAIL PROTECTED] or call us at +1 617 812 0745.


Community help: http://wiki.bestpractical.com
Commercial support: [EMAIL PROTECTED]


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


Re: [rt-users] [Fwd: Create Ticket but only if Custom Field is...]

2007-11-09 Thread Huw Selley
Hi,

The syntax errror is a missing semicolon on the first line.

return 0 unless $self-TransactionObj-Type eq Resolved

Should be

return 0 unless $self-TransactionObj-Type eq Resolved;

Hope this helps.
Huw


On 9/11/07 2:34, Matt Westfall [EMAIL PROTECTED] wrote:

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1
 
 OK The scrip is running, but it says there are syntax errors!!!
 
 Nov  9 09:32:44 oakie RT: Scrip 22 IsApplicable failed: Global symbol
 $trans requires explicit package name at (eval 1780) line 1.
 (/opt/rt3/lib/RT/Condition/UserDefined.pm:69)
 Nov  9 09:32:45 oakie RT: Scrip 23 IsApplicable failed: syntax error at
 (eval 1784) line 2, near Resolved return
 (/opt/rt3/lib/RT/Condition/UserDefined.pm:69)
 Nov  9 09:32:45 oakie RT:
 [EMAIL PROTECTED] #159/2613 -
 Scrip 19  (/opt/rt3/lib/RT/Action/SendEmail.pm:252)
 Nov  9 09:32:45 oakie RT:
 [EMAIL PROTECTED] No recipients
 found. Not sending. (/opt/rt3/lib/RT/Action/SendEmail.pm:264)
 Nov  9 09:32:48 oakie RT: Encode::Guess failed: ; fallback to iso-8859-1
 (/opt/rt3/lib/RT/I18N.pm:412)
 Nov  9 09:32:49 oakie RT: Encode::Guess failed: ; fallback to iso-8859-1
 (/opt/rt3/lib/RT/I18N.pm:412)
 Nov  9 09:32:50 oakie RT: Scrip 22 IsApplicable failed: Global symbol
 $trans requires explicit package name at (eval 2779) line 1.
 (/opt/rt3/lib/RT/Condition/UserDefined.pm:69)
 Nov  9 09:32:51 oakie RT: Scrip 23 IsApplicable failed: syntax error at
 (eval 2783) line 2, near Resolved return
 (/opt/rt3/lib/RT/Condition/UserDefined.pm:69)
 Nov  9 09:32:55 oakie RT: Scrip 22 IsApplicable failed: Global symbol
 $trans requires explicit package name at (eval 1816) line 1.
 (/opt/rt3/lib/RT/Condition/UserDefined.pm:69)
 Nov  9 09:32:56 oakie RT: Scrip 23 IsApplicable failed: syntax error at
 (eval 1820) line 2, near Resolved return
 (/opt/rt3/lib/RT/Condition/UserDefined.pm:69)
 Nov  9 09:32:56 oakie RT:
 [EMAIL PROTECTED] #159/2615 -
 Scrip 8  (/opt/rt3/lib/RT/Action/SendEmail.pm:252)
 Nov  9 09:32:56 oakie RT:
 [EMAIL PROTECTED] No recipients
 found. Not sending. (/opt/rt3/lib/RT/Action/SendEmail.pm:264)
 Nov  9 09:32:57 oakie RT:
 [EMAIL PROTECTED] #159/2615 -
 Scrip 9  (/opt/rt3/lib/RT/Action/SendEmail.pm:252)
 Nov  9 09:32:57 oakie RT:
 [EMAIL PROTECTED] No recipients
 found. Not sending. (/opt/rt3/lib/RT/Action/SendEmail.pm:264)
 Nov  9 09:32:57 oakie RT:
 [EMAIL PROTECTED] #159/2615 -
 Scrip 18  (/opt/rt3/lib/RT/Action/SendEmail.pm:252)
 Nov  9 09:32:57 oakie RT:
 [EMAIL PROTECTED] No recipients
 found. Not sending. (/opt/rt3/lib/RT/Action/SendEmail.pm:264)
 Nov  9 09:32:58 oakie RT:
 [EMAIL PROTECTED] #159/2615 -
 Scrip 19  (/opt/rt3/lib/RT/Action/SendEmail.pm:252)
 Nov  9 09:32:58 oakie RT:
 [EMAIL PROTECTED] No recipients
 found. Not sending. (/opt/rt3/lib/RT/Action/SendEmail.pm:264)
 Nov  9 09:32:59 oakie RT: Scrip 22 IsApplicable failed: Global symbol
 $trans requires explicit package name at (eval 1870) line 1.
 (/opt/rt3/lib/RT/Condition/UserDefined.pm:69)
 Nov  9 09:32:59 oakie RT: Scrip 23 IsApplicable failed: syntax error at
 (eval 1874) line 2, near Resolved return
 (/opt/rt3/lib/RT/Condition/UserDefined.pm:69)
 Nov  9 09:33:00 oakie RT:
 [EMAIL PROTECTED] #159/2616 -
 Scrip 10  (/opt/rt3/lib/RT/Action/SendEmail.pm:252)
 Nov  9 09:33:00 oakie RT:
 [EMAIL PROTECTED] No recipients
 found. Not sending. (/opt/rt3/lib/RT/Action/SendEmail.pm:264)
 Nov  9 09:33:00 oakie RT:
 [EMAIL PROTECTED] #159/2616 -
 Scrip 19  (/opt/rt3/lib/RT/Action/SendEmail.pm:252)
 Nov  9 09:33:00 oakie RT:
 [EMAIL PROTECTED] No recipients
 found. Not sending. (/opt/rt3/lib/RT/Action/SendEmail.pm:264)
 
 Todd Chapman wrote:
 So the scrip never fires?
 
 Try this:
 
 return 0 unless $self-TransactionObj-Type eq Resolved
 return 0 unless $self-TicketObj-FirstCustomFieldValue('Followup') =~
 /Yes/i;
 $RT::Logger-debug(Scrip running);
 1;
 
 See if that puts an entry in your logs.
 
 
 Now playing: Arctic Monkeys - The Bad Thing
 http://foxytunes.com/artist/arctic+monkeys/track/the+bad+thing
 
 On 11/7/07, Matt Westfall [EMAIL PROTECTED] wrote:
 OK For my scrip I have:
 
 Condition: User Defined
 Action: Create Tickets
 Template: Create-Followup
 Stage: Transaction Create
 
 User Condition is:
 
 return 0 unless $self-TransactionObj-Type eq Resolved
 
 return 0 unless $self-TicketObj-FirstCustomFieldValue('Followup') =~
 /Yes/i;
 
 1;
 
 My Template is:
 
 ===Create-Ticket: generate-followup
 Queue:  Customer Service
 Subject: Invoice: { $Tickets{'TOP'} - Subject() }
 Requestor: {$Tickets{'TOP'}-OwnerObj-EmailAddress() }
 RefersTo:  {$Tickets{'TOP'}-Id() }
 Content: A follow up was requested on this ticket.  Please refer to
 previous ticket for more information.
 ENDOFCONTENT
 
 And still no joy :( :(
 
 Todd Chapman wrote:
 
 Now playing: The Decemberists - Summersong
 http://foxytunes.com/artist/the+decemberists/track/summersong
 
 On 11/5/07, Matt Westfall [EMAIL PROTECTED] wrote:
 There are two TransactionObj there.  So would
 
 unless ( 

Re: [rt-users] Problem with my.cnf, InnoDB and permissions

2007-10-24 Thread Huw Selley
Hi Mathew,

On 24/10/07 1:13, Mathew Snyder [EMAIL PROTECTED] wrote:

 We're having performance issues which I'm trying to nail down.  One thing

I would try find the bottleneck before changing anything ;)

What makes you believe the database is causing your performance issues?
  
 which
 I wonder might be the issue is the fact that the RT database is configured to
 use InnoDB but the my.cnf file has all InnoDB-related options commented out.

That should have only mattered when you created the database (the table type
is set then). If there was no Inno support iirc mysql will use the default
storage engine (normally MyISAM unless you have changed it) when it creates
the tables. You can check what your default storage engine is by running
'show engines'. One of them should fess up to being the default.

You can check the storage engine on a table by table basis by running 'show
table status' (after selecting your rt database) e.g:

mysql use rt;
Database changed
mysql show table status\G
*** 1. row ***
   Name: ACL
 Engine: InnoDB
Version: 10
 Row_format: Compact
   Rows: 217
 Avg_row_length: 226
Data_length: 49152
Max_data_length: 0
   Index_length: 16384
  Data_free: 0
 Auto_increment: 565
Create_time: 2007-05-03 15:48:27
Update_time: NULL
 Check_time: NULL
  Collation: latin1_swedish_ci
   Checksum: NULL
 Create_options: 
Comment: InnoDB free: 6144 kB

It should then dump you the status of all tables. You probably just want to
check the value for 'Engine:' I suspect that (provided Inno was disabled
when you created the database) they would be MyIsam.

If your tables are MyIsam then that could be causing your problems. MyIsam
performs a table lock when trying to write a row, if you have multiple
writes on the same table they have to wait for the table lock to be released
before they can do their work. This could make things go slowly.

Hope this helps
Huw



s2s company email disclaimer: 
http://www.s2s.ltd.uk/datasheets/email_disclaimer.pdf
s2s company registration number : 3952958
s2s VAT registration number : GB763132055
Business premises   : Ground Floor, Overline House, Crawley, West 
Sussex, RH10 1JA
Registered address  : 29 High Street, Crawley, West Sussex, RH10 1BQ
Place of registration   : England

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

SAVE THOUSANDS OF DOLLARS ON RT SUPPORT:

If you sign up for a new RT support contract before December 31, we'll take
up to 20 percent off the price. This sale won't last long, so get in touch 
today.
Email us at [EMAIL PROTECTED] or call us at +1 617 812 0745.


Community help: http://wiki.bestpractical.com
Commercial support: [EMAIL PROTECTED]


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


Re: [rt-users] Simple search using email address fails

2007-10-24 Thread Huw Selley
Hi,


On 24/10/07 3:51, Geoff Roberts [EMAIL PROTECTED] wrote:

snip
 
 FastCGI: server /usr/local/rt3/bin/mason_handler.fcgi stderr:
 RT::Handle=HASH(0x2523023c) couldn't execute the query 'SELECT COUNT(DISTINCT
 main.id) FROM ((Tickets main  JOIN Groups Groups_1  ON ((Groups_1.Domain
 = 'RT::Ticket-Role')) AND ( (Groups_1.Type = 'Requestor')) AND (
 Groups_1.Instance = main.id))  LEFT JOIN CachedGroupMembers
 CachedGroupMembers_2  ON ( CachedGroupMembers_2.GroupId = Groups_1.id) AND (
 (CachedGroupMembers_2.MemberId = Users_3.id))) , Users Users_3  WHERE
 ((main.EffectiveId = main.id)) AND ((main.Status != 'deleted')) AND
 ((main.Type = 'ticket')) AND ( (  ( (Users_3.EmailAddress
 LIKE '[EMAIL PROTECTED]')AND(CachedGroupMembers_2.id IS NOT
 NULL) )  ) ) ' 
 at /usr/local/lib/perl5/site_perl/5.8.8/DBIx/SearchBuilder/Handle.pm line
 505, referer: http://internalserver/rt/Search/Simple.html

Can you run that query yourself on your mysql server? At the very least you
should get an error telling you what mysql thinks is wrong with the query
which might help.

Regards
Huw



s2s company email disclaimer: 
http://www.s2s.ltd.uk/datasheets/email_disclaimer.pdf
s2s company registration number : 3952958
s2s VAT registration number : GB763132055
Business premises   : Ground Floor, Overline House, Crawley, West 
Sussex, RH10 1JA
Registered address  : 29 High Street, Crawley, West Sussex, RH10 1BQ
Place of registration   : England

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

SAVE THOUSANDS OF DOLLARS ON RT SUPPORT:

If you sign up for a new RT support contract before December 31, we'll take
up to 20 percent off the price. This sale won't last long, so get in touch 
today.
Email us at [EMAIL PROTECTED] or call us at +1 617 812 0745.


Community help: http://wiki.bestpractical.com
Commercial support: [EMAIL PROTECTED]


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


Re: [rt-users] Problem with rt-mailgate

2007-10-24 Thread Huw Selley
On 24/10/07 4:41, Fredrik Poller [EMAIL PROTECTED] wrote:

 Hi,

Hi,

 
 I have a problem with the rt-mailgate script, I can't get it to work.
snip
 I get the following error in my maillog:
 Oct 24 17:28:24 telnix03 postfix/local[65653]: C485E108E51: to=
 [EMAIL PROTECTED], relay=local, delay=11, delays=10/0/0/0.32, dsn=4.3.0,
 status=deferred (temporary failure. Command output: RT server error.  The RT
 server which handled your email did not behave as expected. It said:  Can't
 locate object method seek via package File::Temp at
 /usr/local/lib/perl5/site_perl/5.8.8/MIME/Parser.pm line 816, GEN30 line
 13.  Stack:   [/usr/local/lib/perl5/site_perl/5.8.8/MIME/Parser.pm:816]
 [/usr/local/lib/perl5/site_perl/5.8.8/MIME/Parser.pm:1083]
 [/usr/local/lib/perl5/site_perl/5.8.8/MIME/Parser.pm:1177]
 [/usr/local/lib/perl5/site_perl/5.8.8/MIME/Parser.pm:1150]
 [/storage/rt/lib/RT/EmailParser.pm:231]
 [/storage/rt/lib/RT/EmailParser.pm:179]
 [/storage/rt/lib/RT/EmailParser.pm:139]
 [/storage/rt/lib/RT/Interface/Email.pm:549]
 [/storage/rt/share/html/REST/1.0/NoAuth/mail-gateway:61]  )

Looks like the 'File::Temp' perl module is either not installed, Is not the
correct version or has had a sense of humor failure.
You could try installing the most recent release from cpan by running 'cpan
install File::Temp' and follow the on-screen prompts.

Hope this helps.
Huw



s2s company email disclaimer: 
http://www.s2s.ltd.uk/datasheets/email_disclaimer.pdf
s2s company registration number : 3952958
s2s VAT registration number : GB763132055
Business premises   : Ground Floor, Overline House, Crawley, West 
Sussex, RH10 1JA
Registered address  : 29 High Street, Crawley, West Sussex, RH10 1BQ
Place of registration   : England

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

SAVE THOUSANDS OF DOLLARS ON RT SUPPORT:

If you sign up for a new RT support contract before December 31, we'll take
up to 20 percent off the price. This sale won't last long, so get in touch 
today.
Email us at [EMAIL PROTECTED] or call us at +1 617 812 0745.


Community help: http://wiki.bestpractical.com
Commercial support: [EMAIL PROTECTED]


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


[rt-users] Making a field mandatory for ticket resolution.

2007-10-23 Thread Huw Selley
On 23/10/07 1:41, Benjamin Weser [EMAIL PROTECTED] wrote:

 Have a look at http://wiki.bestpractical.com/view/MandatorySubject . I
 just added it today to our RT. It works great for the subject and it
 shouldn't be too hard to add it to other built-in fields like timeworked
 too (there's a short description on the page).

Ahhh I didn't spot that when I looked earlier, looks like it will do the job
perfectly :)

Many thanks.

Huw



s2s company email disclaimer: 
http://www.s2s.ltd.uk/datasheets/email_disclaimer.pdf
s2s company registration number : 3952958
s2s VAT registration number : GB763132055
Business premises   : Ground Floor, Overline House, Crawley, West 
Sussex, RH10 1JA
Registered address  : 29 High Street, Crawley, West Sussex, RH10 1BQ
Place of registration   : England

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

SAVE THOUSANDS OF DOLLARS ON RT SUPPORT:

If you sign up for a new RT support contract before December 31, we'll take
up to 20 percent off the price. This sale won't last long, so get in touch 
today.
Email us at [EMAIL PROTECTED] or call us at +1 617 812 0745.


Community help: http://wiki.bestpractical.com
Commercial support: [EMAIL PROTECTED]


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