[rt-users] Trying to create an "ITIL Change Management" queue

2016-10-27 Thread RT SysAdmin

Hi All,

I'm running RT 4.4.1, on BackBox Linux 4.6 (GNU/Linux 4.2.0-42-generic 
x86_64).


I'm trying to replace a bespoke ITIL Change Management system that we're 
about to lose access to.  The old system was cobbled together on 
SalesForce & was essentially a matter of pressing a "New Change" button, 
filling out a Change Request form, then submitting it for approval.  The 
system then forwards the change to the "Technical Approver", then when 
they approve the CR, it goes to the CAB1, then CAB2, then the Customer 
Scheduler & finally, back to the requester, as an approved change 
request (if you've done your homework & satisfied everybody).


I've knocked up a change form, purely to show the sort of thing we have 
now - it's non-functional, other than to remind me of what I'm trying to 
replace - this is a snapshot of that form: 
https://furrie.net/sites/default/files/images/ChangeForm.png


There are loads of systems that say they're change management tools, but 
they mean inventory/asset/hardware/software change management. I figured 
that RT was probably my best bet, as I can install it and see if I can 
even get close to what I want.  It's quite the learning curve.  I feel 
like I don't really know what to google for, in respect of my desired 
functionality (it took me a day of fumbling about, to realise that I had 
to log in as root, to see any configuration options - seriously, it made 
me feel old *sigh*


I've created some users, some groups, a ChangeQ queue, and some custom 
fields, but right now, I'm in the dark as to how/if I can tie them all 
together, to get an approximation of the desired system.


Please can you lovely, friendly rt-users let me know if what I'm trying 
to achieve, is even possible?  I wouldn't want to bash my head against 
the wall for a week, only to find out I've wasted my time.  If you could 
point me towards any resources that might aid my quest, please do!  
Please be gentle, this is my first time.


Thanks,
--
Chris Phillips
-
RT 4.4 and RTIR training sessions, and a new workshop day! 
https://bestpractical.com/training
* Boston - October 24-26
* Los Angeles - Q1 2017


[rt-users] Mailto link in template

2010-09-24 Thread Sysadmin
 I'm trying to embed a mailto: HTML code into my ticket creation 
template so that the customer can click the link and this will generate 
a blank  email with the ticket info in the subject that can use for a 
reply, that the system can then parse into the ticket. The mail to 
address would vary according to the group or queue it was created for.


I tried this:

HREF="mailto:{$Ticket->QueueObj->CorrespondAddress()}?subject=[{$Ticket->QueueObj->SubjectTag 
|| $rtname} #{$Ticket->id}] {$Ticket->Subject()}

">To Email RNS about the ticket


While I know this is wrong, perhaps it will give you a better idea of 
what I,m trying to do.



Thanks,

David
System Admin
RNS

Running RT 3.8.7



RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!


Re: [rt-users] Concise Spreadsheet Extension

2010-09-17 Thread Sysadmin
   OK so this might work, but does anyone know how to create a query 
for tickets created today?
 I see you can select a date, but how would I do a query for " the 
current days activity only, without having to go back and select "today" 
from the calender each day?


Thanks,

David
System Admin
RNS

Running RT 3.8.7




On 9/17/2010 4:11 PM, Kenneth Crocker wrote:

David,

If you're going to email it, just set the Query up on a Dashboard. No 
downloading, re-formatting or anything.


Kenn
LBNL

On Fri, Sep 17, 2010 at 2:47 PM, Sysadmin <mailto:sysad...@ruralnetwork.net>> wrote:


 Anyone know how to configure the Concise Spreadsheet Extension?
I am trying to use the extension as a means of creating a simple
daily activity report that can be emailed to management.

Thanks,

David
System Admin
RNS

Running RT 3.8.7

RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!




RT Training in Washington DC, USA on Oct 25&  26 2010
Last one this year -- Learn how to get the most out of RT!



RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!

[rt-users] Concise Spreadsheet Extension

2010-09-17 Thread Sysadmin

 Anyone know how to configure the Concise Spreadsheet Extension?
I am trying to use the extension as a means of creating a simple daily 
activity report that can be emailed to management.


Thanks,

David
System Admin
RNS

Running RT 3.8.7

RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!


Re: [rt-users] Linked fields

2010-08-26 Thread Sysadmin
I'm trying to add Custom Fields in the Requester area of the ticket. I 
got the first Custom Value, but cannot get the second custom value?


the first was:

<&|/l&>Account #::
> <% ($requestor->FirstCustomFieldValue('Room') ||
> loc("No Account # entered for this user")) %>

 and I tried:

# <&|/l&>IP::
# <% ($requestor-> SecondCustomFieldValue('IP Address') 
|| loc("No IP Address entered for this user")) %>



For the second, but that doesn't work. any Ideas?

Thanks,

David
System Admin
RNS

Running RT 3.8.7

On 8/16/2010 9:40 AM, Björn Schulz wrote:

Hi David,

I use user CFs and a customized ShowRequestor in
.../Ticket/Elements/ShowRequestor. Not a special service Ticket.

<&|/l&>Phone::
<% ($requestor->WorkPhone || loc("No WorkPhone
entered about this user")) %>

or

<&|/l&>Room::
<% ($requestor->FirstCustomFieldValue('Room') ||
loc("No room entered about this user")) %>

Hope this helps

  Björn




Am 13.08.10 23:18, schrieb Sysadmin:

Is there a way to " link"custom fields? So, I trying to link custom
field data, so that custom fields like Account #, Customer Equip, Phone
#, that exist in a service ticket and in the user information, will
populate each other, ie in creating a service ticket for a /new
custome/r, the linked custom field data input in the ticket will
populate the user information custom field data. And vice-versa if the
customer already exists, then the ticket, would pull data from the user
information data.

David
System Admin
RNS







RT Training in Washington DC, USA on Oct 25&  26 2010
Last one this year -- Learn how to get the most out of RT!




RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!


[rt-users] Ticket History

2010-08-26 Thread Sysadmin
Is there a way to show just ticket history for a customer? Maybe a 
ticket tab for the user/customer that would display only tickets for 
that customer and show only the replys (not comments or other details 
for those tickets)  and not the complete user history? So a clean 
concise way of viewing the users past trouble tickets.


Thanks,

David
System Admin
RNS

Running RT 3.8.7

RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!


[rt-users] Searching Unprivileged Users

2010-08-26 Thread Sysadmin
Currently we have RT configured so that support staff are privileged 
users, and customers are unprivileged users which Are also part of the 
"Customers" group. I'm look for an easy way to search the unprivileged 
users, RT only shows privileged users, and groups only let you add or 
remove users, not edit the users in the group.RT adds the unprivileged 
user from the ticket creation. So it is very easy to accidentally create 
a bogus user in the system that is simply created as an unprivileged user.


Thanks,

David
System Admin
RNS

Running RT 3.8.7

RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!


Re: [rt-users] Extensions

2010-08-26 Thread Sysadmin

Thanks guys, I got it. They all work fine now.

David

On 8/25/2010 12:55 PM, Michael Finn wrote:

Set(@Plugins,(qw(RT::FM)));
Set(@Plugins,(qw(RTx::EmailCompletion)));
Set(@Plugins,(qw(RT::Extension::ToggleSuperUser)));
Set(@Plugins,(qw(RT::Extension::QueueDeactivatedScrips)));
How should I list this? And do I reinstall then after I correct this, or just correct the 
"Set(@Plugins, ...)" line and restart Apache?

 

Set(@Plugins,(qw(RT::FM RTx::EmailCompletion RT::Extension::ToggleSuperUser 
RT::Extension::QueueDeactivatedScrips)));

(above is one line)
No reinstall necessary; just bounce Apache.

'qw' takes a space-separated list and turns it into the quoted list format 
needed for the Set command.
(see http://perlmeme.org/howtos/perlfunc/qw_function.html for examples)

Mike

   


RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!


Re: [rt-users] Extensions

2010-08-25 Thread Sysadmin

Yes the one from github.
And yes I have mutiple plug in lines.

Set(@Plugins,(qw(RT::FM)));
Set(@Plugins,(qw(RTx::EmailCompletion)));
Set(@Plugins,(qw(RT::Extension::ToggleSuperUser)));
Set(@Plugins,(qw(RT::Extension::QueueDeactivatedScrips)));
How should I list this? And do I reinstall then after I correct this, or 
just correct the "Set(@Plugins, ...)" line and restart Apache?



Thanks,

David
System Admin
RNS

Running RT 3.8.7

On 8/25/2010 12:01 PM, Michael Finn wrote:


First thing I always check on multiple extensions is whether they are 
all in the same "Set(@Plugins, ...)" line in the RT_SiteConfig.pm 
file.  Multiple Set Plugins lines will override rather than append.


Mike

*From:* rt-users-boun...@lists.bestpractical.com 
[mailto:rt-users-boun...@lists.bestpractical.com] *On Behalf Of 
*Torsten Brumm

*Sent:* Wednesday, August 25, 2010 11:49 AM
*To:* Sysadmin
*Cc:* rt-users@lists.bestpractical.com
*Subject:* Re: [rt-users] Extensions

Which version you installed from QueueDeactivatedScrp? The one from 
github?


2010/8/25 Sysadmin <mailto:sysad...@ruralnetwork.net>>


Is there an Extension compatibility list around. I recently installed 
the QueueDeactivatedScrip which work very well, then installed the 
EmailCompletion extention which also works well only to find that my 
QueueDeactivatedScrip no longer worked. I there anyway of determining 
compatibility between extensions?  or is it mostly trial and error? 
How do troubleshoot a broken Extension?


Thanks,

David
System Admin
RNS

Running RT 3.8.7

RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!




--
MFG

Torsten Brumm

http://www.brumm.me
http://www.elektrofeld.de


RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!

[rt-users] Extensions

2010-08-25 Thread Sysadmin
Is there an Extension compatibility list around. I recently installed 
the QueueDeactivatedScrip which work very well, then installed the 
EmailCompletion extention which also works well only to find that my 
QueueDeactivatedScrip no longer worked. I there anyway of determining 
compatibility between extensions?  or is it mostly trial and error? How 
do troubleshoot a broken Extension?


Thanks,

David
System Admin
RNS

Running RT 3.8.7

RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!


[rt-users] Modify spreadsheet

2010-08-25 Thread Sysadmin
Is it possible to modify the fields included in spreadsheet output? I 
would like to exclude som of the existing fields and include some data 
from some CF.


Thanks,

David
System Admin
RNS

RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!


Re: [rt-users] Modify spreadsheet

2010-08-25 Thread Sysadmin
Ok, so does it work with 3.8.7/.8? and if so what need to be modified to 
include the custom fields.



Thanks,

David
System Admin
RNS

On 8/25/2010 9:51 AM, Raed El-Hames wrote:


Torsten;

Are you saying there Is a newer version ??

I Can't find it ??

I know that version 002 works with RT 3.8.7/.8 -- I had to fix a 
couple of bugs , in particular when the result set include custom fields.


Roy

*From:* Torsten Brumm [mailto:torsten.br...@googlemail.com]
*Sent:* 25 August 2010 12:11
*To:* Raed El-Hames
*Cc:* Sysadmin; rt-users@lists.bestpractical.com
*Subject:* Re: [rt-users] Modify spreadsheet

Oups, it is "slightly" outdated since 4 Years?!?

2010/8/25 Raed El-Hames <mailto:raed.el-ha...@vialtus.com>>


Hi;

Its probably easier to install the ConciseSpreadsheet extension:
http://search.cpan.org/~jesse/RT-View-ConciseSpreadsheet-0.002/ 
<http://search.cpan.org/%7Ejesse/RT-View-ConciseSpreadsheet-0.002/>


It allows you to export your search results (whatever fields selected 
for the search display columns) into a spreadsheet


Roy


> -Original Message-
> From: rt-users-boun...@lists.bestpractical.com 
<mailto:rt-users-boun...@lists.bestpractical.com> [mailto:rt-users- 
<mailto:rt-users->
> boun...@lists.bestpractical.com 
<mailto:boun...@lists.bestpractical.com>] On Behalf Of Sysadmin

> Sent: 24 August 2010 21:14
> To: rt-users@lists.bestpractical.com 
<mailto:rt-users@lists.bestpractical.com>

> Subject: [rt-users] Modify spreadsheet
>
> Is it possible to modify the fields included in spreadsheet output? I
> would like to exclude some of the existing fields and include some data
> from some CF.
>
> Thanks,
>
> David
> System Admin
> RNS
>
> RT Training in Washington DC, USA on Oct 25 & 26 2010
> Last one this year -- Learn how to get the most out of RT!

RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!




--
MFG

Torsten Brumm

http://www.brumm.me
http://www.elektrofeld.de


RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!

[rt-users] Modify spreadsheet

2010-08-24 Thread Sysadmin
Is it possible to modify the fields included in spreadsheet output? I 
would like to exclude some of the existing fields and include some data 
from some CF.


Thanks,

David
System Admin
RNS

RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!


Re: [rt-users] Linked fields

2010-08-19 Thread Sysadmin

Björn,

Yes this worked well and I think I can use this, thank you.  
However, how do you list the second custom value? I tried


# <&|/l&>IP::
# <% ($requestor-> SecondCustomFieldValue('IP Address') 
|| loc("No IP Address entered for this user")) %>



But that doesn't work. any Ideas?

Thanks,

David
System Admin
RNS

On 8/16/2010 9:40 AM, Björn Schulz wrote:

Hi David,

I use user CFs and a customized ShowRequestor in
.../Ticket/Elements/ShowRequestor. Not a special service Ticket.

<&|/l&>Phone::
<% ($requestor->WorkPhone || loc("No WorkPhone 
entered about this user")) %>


or

<&|/l&>Room::
<% ($requestor->FirstCustomFieldValue('Room') || 
loc("No room entered about this user")) %>


Hope this helps

  Björn




Am 13.08.10 23:18, schrieb Sysadmin:

Is there a way to " link"custom fields? So, I trying to link custom
field data, so that custom fields like Account #, Customer Equip, Phone
#, that exist in a service ticket and in the user information, will
populate each other, ie in creating a service ticket for a /new
custome/r, the linked custom field data input in the ticket will
populate the user information custom field data. And vice-versa if the
customer already exists, then the ticket, would pull data from the user
information data.

David
System Admin
RNS







RT Training in Washington DC, USA on Oct 25&  26 2010
Last one this year -- Learn how to get the most out of RT!




RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!


[rt-users] RT report generator

2010-08-17 Thread Sysadmin
I'm trying to create a daily activity report  for the 'support queue' 
that can be printed or email.


Anyone ever used ASCOMs RT report generator? Pearl modules are 
installed, but where does the rt-report.pl file go?


David
System Admin
RNS

RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!


[rt-users] Linked fields

2010-08-13 Thread Sysadmin
Is there a way to " link"custom fields? So, I trying to link custom 
field data, so that custom fields like Account #, Customer Equip, Phone 
#,  that exist in a service ticket and in the user information, will 
populate each other, ie in creating a service ticket for a /new 
custome/r, the linked custom field data input in the ticket will 
populate the user information custom field data. And vice-versa if the 
customer already exists, then the ticket, would pull data from the user 
information data.


David
System Admin
RNS





RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!

[rt-users] Custom Fields in Scripts and Templates

2010-08-11 Thread Sysadmin
What is the correct syntax for inserting custom field data into scripts 
and templates? We have a service queue with a custom field (type of 
ticket = locate or repair).
So, I want to create a script to read the type of ticket then dispatch 
an email with custom field data inserted in the email i.e. Service # 
Account# etc.


Thanks,

David
System Admin
RNS
RT Training in Washington DC, USA on Oct 25 & 26 2010
Last one this year -- Learn how to get the most out of RT!


Re: [rt-users] Script Codes

2010-08-06 Thread Sysadmin
This script is not working any other ideas. I got the template itself 
fixed by Changing the 'Name" field to 'RealName'  but I cannot get RT to 
send it when owner changes from Nobody to on of my support staff. I get 
the object of the script, when the onwer value changes and old value was 
'10' (Nobody) return a value of 1. Perhaps something is missing from the 
script?


Thanks,

David
System Admin
RNS

On 8/6/2010 9:41 AM, Raed El-Hames wrote:

I think I understand;
You can create a custom scrip with

Condition: User Defined
Custom condition:
if ($self->TransactionObj->Field eq 'Owner' and $self->TransactionObj->OldValue 
== 10) {
 return 1;
}
return undef;




10 : is the default Users.id value for the nobody user.

Good luck;

Roy

   

-Original Message-
From: rt-users-boun...@lists.bestpractical.com [mailto:rt-users-
boun...@lists.bestpractical.com] On Behalf Of Sysadmin
Sent: 06 August 2010 16:08
To: rt-users@lists.bestpractical.com
Subject: Re: [rt-users] Script Codes

Roy,
 We are using currently using 3.8.7. Due to our workflow we combine
the creation and assignment. sending the customer one email informing
the customer of the ticket creation and who is working the issue.
However, by using the change owner as trigger,  We can no longer use
the
change owner script in the event of an escalation, or other change
owner
event, because that script is now attached to the creation-assignment
template. By creating a "nobody" to "somebody" owner script and
attaching that to the creation-assignment template. It would leave the
owner change script free for a true owner change/escalation event  Hope
that makes a little more sense.

Thanks,
David
System Admin
RNS



On 8/6/2010 3:47 AM, Raed El-Hames wrote:
 

Hi David;

What version of RT are you using, if its 3.8.8 then you should be
   

able to change the user name format from
 

lib/RT/Config.pm

With regard to owner script, I am not quite sure what do you mean by
   

" does not allow me to use owner change as it was intended"
 

What does n't not do ??

Roy


   

-Original Message-
From: rt-users-boun...@lists.bestpractical.com [mailto:rt-users-
boun...@lists.bestpractical.com] On Behalf Of Sysadmin
Sent: 06 August 2010 01:55
To: rt-users@lists.bestpractical.com
Subject: [rt-users] Script Codes

Is there a cheatsheet of RT script codes? and/or fieldcodes

Specifically,  I'm looking to insert the "Real Name" of the user
assigned to a ticket. (currently inserts username)

also I'd like to generate the Email notification when the ticket is
first assigned from "nobody" to "somebody"
I'm currently using the owner change script. which sorta works, but
does
not allow me to use owner change as it was intended.

Thanks,

David
System Administrator
RNS

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

 
   

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


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


Re: [rt-users] Script Codes

2010-08-06 Thread Sysadmin

Roy,
   We are using currently using 3.8.7. Due to our workflow we combine 
the creation and assignment. sending the customer one email informing 
the customer of the ticket creation and who is working the issue.
However, by using the change owner as trigger,  We can no longer use the 
change owner script in the event of an escalation, or other change owner 
event, because that script is now attached to the creation-assignment 
template. By creating a "nobody" to "somebody" owner script and 
attaching that to the creation-assignment template. It would leave the 
owner change script free for a true owner change/escalation event  Hope 
that makes a little more sense.


Thanks,
David
System Admin
RNS



On 8/6/2010 3:47 AM, Raed El-Hames wrote:

Hi David;

What version of RT are you using, if its 3.8.8 then you should be able to 
change the user name format from
lib/RT/Config.pm

With regard to owner script, I am not quite sure what do you mean by " does not 
allow me to use owner change as it was intended"
What does n't not do ??

Roy

   

-Original Message-
From: rt-users-boun...@lists.bestpractical.com [mailto:rt-users-
boun...@lists.bestpractical.com] On Behalf Of Sysadmin
Sent: 06 August 2010 01:55
To: rt-users@lists.bestpractical.com
Subject: [rt-users] Script Codes

Is there a cheatsheet of RT script codes? and/or fieldcodes

Specifically,  I'm looking to insert the "Real Name" of the user
assigned to a ticket. (currently inserts username)

also I'd like to generate the Email notification when the ticket is
first assigned from "nobody" to "somebody"
I'm currently using the owner change script. which sorta works, but
does
not allow me to use owner change as it was intended.

Thanks,

David
System Administrator
RNS

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


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


[rt-users] Script Codes

2010-08-05 Thread Sysadmin

Is there a cheatsheet of RT script codes? and/or fieldcodes

Specifically,  I'm looking to insert the "Real Name" of the user 
assigned to a ticket. (currently inserts username)


also I'd like to generate the Email notification when the ticket is 
first assigned from "nobody" to "somebody"
I'm currently using the owner change script. which sorta works, but does 
not allow me to use owner change as it was intended.


Thanks,

David
System Administrator
RNS

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


[rt-users] Custom Fields

2010-08-05 Thread Sysadmin

Is it possible to change the size of the wikitext box?
Ideally I would like to display a large rectangular box under the issue 
description text area


David
System Administrator
RNS



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


[rt-users] Custom Fields

2010-07-30 Thread Sysadmin
Is there a way to apply custom fields to ticket bound for a specific 
queue i. e. ticket created for billing have one set of custom fields and 
tickets created for tech support have a different set of custom fields?



Thank you,

David
System Administrator
Rural Network Services, Inc.



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


[rt-users] Radius Aurhentication

2010-07-30 Thread Sysadmin
Is there a way to apply custom fields to ticket bound for a specific 
queue i. e. ticket created for billing have one set of custom fields and 
tickets created for tech support have a different set of custom fields?



Thank you,

David
System Administrator
Rural Network Services, Inc.



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


[rt-users] Radius Aurhentication

2010-07-30 Thread Sysadmin
Is there a way to separate Staff from Customers. We have a Helpdesk, 
whereby Support Staff are issuing tickets for a group of Customers. My  
two questions are:


1- Can Support Staff issue a ticket for the customer? what is the best 
way to do this?


2- Can we utilize the radius server in our mail server to generate that 
customer info? what is the best way to do this?



Thank you,

David
System Administrator
Rural Network Services, Inc.


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

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