Read requestor user CF and write the value into a ticket CF

Hi,

For users we’ve added an extra CF which is an autocomplete field containing
a list of roughly 450 organisations that we work with. We had to make a
separate CF for this in order to help our users a little, saves typo’s and
makes adding an organisation to a user easy. So basically we’re ignoring the
RT default Organisation field and have a separate CF for this purpose.

The second thing we now want is to show that organisation name (the one in
the organisation CF) in our tickets, so that we can make nice reports based
on that information.
This is where I’m stuck, I can’t seem to figure out how to read the CF for a
requestor (or any user) and thus am unable to write the value into a ticket
CF.

I know how to read and write into ticket CF’s, but I have no clue on how to
read information from a requestor of a ticket.

Reading information from a tidcket CF:

$self->TicketObj->FirstCustomFieldValue(‘Custom Field Name’);

Writing information into a ticket CF:

$self->TicketObj->AddCustomFieldValue(Field => ‘Custom Field Name’, Value =>
$my_owner);

Or, instead of a variable use a fixed value between single quotes.

I also know that this piece of code gets a ticket requestor e-mail address:

my $requestor_address = $self->TicketObj->RequestorAddresses;

But thats about as far as I’m able to get…

Can anyone point me in the right direction for this one?

– Bart

Hi,

For users we’ve added an extra CF which is an autocomplete field containing
a list of roughly 450 organisations that we work with. We had to make a
separate CF for this in order to help our users a little, saves typo’s and
makes adding an organisation to a user easy. So basically we’re ignoring the
RT default Organisation field and have a separate CF for this purpose.

The second thing we now want is to show that organisation name (the one in
the organisation CF) in our tickets, so that we can make nice reports based
on that information.
This is where I’m stuck, I can’t seem to figure out how to read the CF for a
requestor (or any user) and thus am unable to write the value into a ticket
CF.

I know how to read and write into ticket CF’s, but I have no clue on how to
read information from a requestor of a ticket.

Reading information from a tidcket CF:

$self->TicketObj->FirstCustomFieldValue(‘Custom Field Name’);

Writing information into a ticket CF:

$self->TicketObj->AddCustomFieldValue(Field => ‘Custom Field Name’, Value =>
$my_owner);

Or, instead of a variable use a fixed value between single quotes.

I also know that this piece of code gets a ticket requestor e-mail address:

my $requestor_address = $self->TicketObj->RequestorAddresses;

But thats about as far as I’m able to get…

Can anyone point me in the right direction for this one?

– Bart

Hi Bart,

If I am understanding your question, you want to be able to script
reading/writing User custom fields. It happens that I have hit the
same stumbling block. It is easy to update Ticket custom fields, but
I would like to do the same with User CFs. The only thing that looks
like it would work is RT::Record, ugh. I hope that someone has a
better option… patch for REST, the RT CLI…? Any help would be
appreciated.

Regards,
Ken

Hi,

For users we’ve added an extra CF which is an autocomplete field containing
a list of roughly 450 organisations that we work with. We had to make a
separate CF for this in order to help our users a little, saves typo’s and
makes adding an organisation to a user easy. So basically we’re ignoring the
RT default Organisation field and have a separate CF for this purpose.

The second thing we now want is to show that organisation name (the one in
the organisation CF) in our tickets, so that we can make nice reports based
on that information.
This is where I’m stuck, I can’t seem to figure out how to read the CF for a
requestor (or any user) and thus am unable to write the value into a ticket
CF.

I know how to read and write into ticket CF’s, but I have no clue on how to
read information from a requestor of a ticket.

Reading information from a tidcket CF:

$self->TicketObj->FirstCustomFieldValue(‘Custom Field Name’);

Writing information into a ticket CF:

$self->TicketObj->AddCustomFieldValue(Field => ‘Custom Field Name’, Value =>
$my_owner);

Or, instead of a variable use a fixed value between single quotes.

I also know that this piece of code gets a ticket requestor e-mail address:

my $requestor_address = $self->TicketObj->RequestorAddresses;

But thats about as far as I’m able to get…

Can anyone point me in the right direction for this one?

– Bart

Hi Bart,

If I am understanding your question, you want to be able to script
reading/writing User custom fields. It happens that I have hit the
same stumbling block. It is easy to update Ticket custom fields, but
I would like to do the same with User CFs. The only thing that looks
like it would work is RT::Record, ugh. I hope that someone has a
better option… patch for REST, the RT CLI…? Any help would be
appreciated.

Have you tried FirstCustomFieldValue or AddCustomFieldValue on a User object?
They’re RT::Record methods, and thus available on all RT objects
(although it only makes sense on the ones that have CFs applied).

RT4 also allows customization of the More about Requestors box from
the config using Formats so you can just display the User CF directly
rather than copying.

-kevin

If I were to use the UserObj, how would that look?

I find it difficult to make the transition from requestor e-mail address to
used ID and from there to a users custom field O_o

As for the More about requestors box, we like the default usage lol + we
want the ability to make reports/charts based on the value of the tickets
Organisation field.

– Bart2011/10/5 Kevin Falcone falcone@bestpractical.com

On Wed, Oct 05, 2011 at 09:08:37AM -0500, ktm@rice.edu wrote:

On Wed, Oct 05, 2011 at 03:31:32PM +0200, Bart wrote:

Hi,

For users we’ve added an extra CF which is an autocomplete field
containing
a list of roughly 450 organisations that we work with. We had to make a
separate CF for this in order to help our users a little, saves typo’s
and
makes adding an organisation to a user easy. So basically we’re
ignoring the
RT default Organisation field and have a separate CF for this purpose.

The second thing we now want is to show that organisation name (the one
in
the organisation CF) in our tickets, so that we can make nice reports
based
on that information.
This is where I’m stuck, I can’t seem to figure out how to read the CF
for a
requestor (or any user) and thus am unable to write the value into a
ticket
CF.

I know how to read and write into ticket CF’s, but I have no clue on
how to
read information from a requestor of a ticket.

Reading information from a tidcket CF:

$self->TicketObj->FirstCustomFieldValue(‘Custom Field Name’);

Writing information into a ticket CF:

$self->TicketObj->AddCustomFieldValue(Field => ‘Custom Field Name’,
Value =>
$my_owner);

Or, instead of a variable use a fixed value between single quotes.

I also know that this piece of code gets a ticket requestor e-mail
address:

my $requestor_address = $self->TicketObj->RequestorAddresses;

But thats about as far as I’m able to get…

Can anyone point me in the right direction for this one?

– Bart

Hi Bart,

If I am understanding your question, you want to be able to script
reading/writing User custom fields. It happens that I have hit the
same stumbling block. It is easy to update Ticket custom fields, but
I would like to do the same with User CFs. The only thing that looks
like it would work is RT::Record, ugh. I hope that someone has a
better option… patch for REST, the RT CLI…? Any help would be
appreciated.

Have you tried FirstCustomFieldValue or AddCustomFieldValue on a User
object?
They’re RT::Record methods, and thus available on all RT objects
(although it only makes sense on the ones that have CFs applied).

RT4 also allows customization of the More about Requestors box from
the config using Formats so you can just display the User CF directly
rather than copying.

-kevin


RT Training Sessions (http://bestpractical.com/services/training.html)

  • San Francisco, CA, USA — October 18 & 19, 2011
  • Washington DC, USA — October 31 & November 1, 2011
  • Barcelona, Spain — November 28 & 29, 2011

I’ve gotten a little further now with the following code:

my $my_rq = $self->TicketObj->RequestorAddresses;

my $temp_user = RT::User->new();
$temp_user->LoadByEmail($my_rq);
my $rq_org = $temp_user->Organization();

$self->TicketObj->AddCustomFieldValue(Field => ‘Oplossing’, Value =>
$rq_org);

return 1;

But, getting a custom field value from that user (instead of the regular
organization field) doesn’t seem to work.
I’ve tried the following line for getting the User CF:

my $rq_org = $temp_user->FirstCustomFieldValue(‘CF Name’);

Any thoughts on how to get the User CF?

– Bart2011/10/5 Bart bart@pleh.info

If I were to use the UserObj, how would that look?

I find it difficult to make the transition from requestor e-mail address to
used ID and from there to a users custom field O_o

As for the More about requestors box, we like the default usage lol + we
want the ability to make reports/charts based on the value of the tickets
Organisation field.

– Bart

2011/10/5 Kevin Falcone falcone@bestpractical.com

On Wed, Oct 05, 2011 at 09:08:37AM -0500, ktm@rice.edu wrote:

On Wed, Oct 05, 2011 at 03:31:32PM +0200, Bart wrote:

Hi,

For users we’ve added an extra CF which is an autocomplete field
containing
a list of roughly 450 organisations that we work with. We had to make
a
separate CF for this in order to help our users a little, saves typo’s
and
makes adding an organisation to a user easy. So basically we’re
ignoring the
RT default Organisation field and have a separate CF for this purpose.

The second thing we now want is to show that organisation name (the
one in
the organisation CF) in our tickets, so that we can make nice reports
based
on that information.
This is where I’m stuck, I can’t seem to figure out how to read the CF
for a
requestor (or any user) and thus am unable to write the value into a
ticket
CF.

I know how to read and write into ticket CF’s, but I have no clue on
how to
read information from a requestor of a ticket.

Reading information from a tidcket CF:

$self->TicketObj->FirstCustomFieldValue(‘Custom Field Name’);

Writing information into a ticket CF:

$self->TicketObj->AddCustomFieldValue(Field => ‘Custom Field Name’,
Value =>
$my_owner);

Or, instead of a variable use a fixed value between single quotes.

I also know that this piece of code gets a ticket requestor e-mail
address:

my $requestor_address = $self->TicketObj->RequestorAddresses;

But thats about as far as I’m able to get…

Can anyone point me in the right direction for this one?

– Bart

Hi Bart,

If I am understanding your question, you want to be able to script
reading/writing User custom fields. It happens that I have hit the
same stumbling block. It is easy to update Ticket custom fields, but
I would like to do the same with User CFs. The only thing that looks
like it would work is RT::Record, ugh. I hope that someone has a
better option… patch for REST, the RT CLI…? Any help would be
appreciated.

Have you tried FirstCustomFieldValue or AddCustomFieldValue on a User
object?
They’re RT::Record methods, and thus available on all RT objects
(although it only makes sense on the ones that have CFs applied).

RT4 also allows customization of the More about Requestors box from
the config using Formats so you can just display the User CF directly
rather than copying.

-kevin


RT Training Sessions (http://bestpractical.com/services/training.html)

  • San Francisco, CA, USA — October 18 & 19, 2011
  • Washington DC, USA — October 31 & November 1, 2011
  • Barcelona, Spain — November 28 & 29, 2011

I’ve gotten a little further now with the following code:

my $my_rq = $self->TicketObj->RequestorAddresses;

my $temp_user = RT::User->new();
$temp_user->LoadByEmail($my_rq);

Instead you can use the following code:

my $users = $self->TicketObj->Requestors->UserMembersObj;
my $first_user = $users->First;

my $rq_org = $temp_user->Organization();

$self->TicketObj->AddCustomFieldValue(Field => ‘Oplossing’, Value =>
$rq_org);

return 1;

But, getting a custom field value from that user (instead of the regular
organization field) doesn’t seem to work.
I’ve tried the following line for getting the User CF:

my $rq_org = $temp_user->FirstCustomFieldValue(‘CF Name’);

Any thoughts on how to get the User CF?

That line should work. Any special (non-ASCII) characters in name of
the CF? If yes then “use utf8;” line in the beginning of the code.

– Bart

If I were to use the UserObj, how would that look?

I find it difficult to make the transition from requestor e-mail address
to used ID and from there to a users custom field O_o

As for the More about requestors box, we like the default usage lol + we
want the ability to make reports/charts based on the value of the tickets
Organisation field.

– Bart

Hi,

For users we’ve added an extra CF which is an autocomplete field
containing
a list of roughly 450 organisations that we work with. We had to make
a
separate CF for this in order to help our users a little, saves
typo’s and
makes adding an organisation to a user easy. So basically we’re
ignoring the
RT default Organisation field and have a separate CF for this
purpose.

The second thing we now want is to show that organisation name (the
one in
the organisation CF) in our tickets, so that we can make nice reports
based
on that information.
This is where I’m stuck, I can’t seem to figure out how to read the
CF for a
requestor (or any user) and thus am unable to write the value into a
ticket
CF.

I know how to read and write into ticket CF’s, but I have no clue on
how to
read information from a requestor of a ticket.

Reading information from a tidcket CF:

$self->TicketObj->FirstCustomFieldValue(‘Custom Field Name’);

Writing information into a ticket CF:

$self->TicketObj->AddCustomFieldValue(Field => ‘Custom Field Name’,
Value =>
$my_owner);

Or, instead of a variable use a fixed value between single quotes.

I also know that this piece of code gets a ticket requestor e-mail
address:

my $requestor_address = $self->TicketObj->RequestorAddresses;

But thats about as far as I’m able to get…

Can anyone point me in the right direction for this one?

– Bart

Hi Bart,

If I am understanding your question, you want to be able to script
reading/writing User custom fields. It happens that I have hit the
same stumbling block. It is easy to update Ticket custom fields, but
I would like to do the same with User CFs. The only thing that looks
like it would work is RT::Record, ugh. I hope that someone has a
better option… patch for REST, the RT CLI…? Any help would be
appreciated.

Have you tried FirstCustomFieldValue or AddCustomFieldValue on a User
object?
They’re RT::Record methods, and thus available on all RT objects
(although it only makes sense on the ones that have CFs applied).

RT4 also allows customization of the More about Requestors box from
the config using Formats so you can just display the User CF directly
rather than copying.

-kevin


RT Training Sessions (http://bestpractical.com/services/training.html)

  • San Francisco, CA, USA — October 18 & 19, 2011
  • Washington DC, USA — October 31 & November 1, 2011
  • Barcelona, Spain — November 28 & 29, 2011

RT Training Sessions (http://bestpractical.com/services/training.html)

  • San Francisco, CA, USA — October 18 & 19, 2011
  • Washington DC, USA — October 31 & November 1, 2011
  • Barcelona, Spain — November 28 & 29, 2011

Best regards, Ruslan.

Hi Ruslan,

Your suggestion worked :slight_smile:

The end result looks like this:

my $users = $self->TicketObj->Requestors->UserMembersObj;
my $first_user = $users->First;

my $user_org = $first_user->FirstCustomFieldValue(‘Organisatie (U)’);

if( ! $self->TicketObj->FirstCustomFieldValue( ‘Organisatie (T)’ ) ) {
$self->TicketObj->AddCustomFieldValue(Field => ‘Organisatie (T)’, Value =>
$user_org); }

return 1;

The CF called “Organisatie (U)” is for a user, contains a list of
organizations and provides auto-completion.

The scrip runs every transaction, fills the “Organisatie (T)” (which is the
field inside the ticket) with the content of the “Organisatie (U)”. But it
only fills the content when “Organisatie (T)” is empty.

Thanks for the tip.

– Bart2011/10/6 Ruslan Zakirov ruz@bestpractical.com

On Thu, Oct 6, 2011 at 4:18 PM, Bart bart@pleh.info wrote:

I’ve gotten a little further now with the following code:

my $my_rq = $self->TicketObj->RequestorAddresses;

my $temp_user = RT::User->new();
$temp_user->LoadByEmail($my_rq);

Instead you can use the following code:

my $users = $self->TicketObj->Requestors->UserMembersObj;
my $first_user = $users->First;

my $rq_org = $temp_user->Organization();

$self->TicketObj->AddCustomFieldValue(Field => ‘Oplossing’, Value =>
$rq_org);

return 1;

But, getting a custom field value from that user (instead of the regular
organization field) doesn’t seem to work.
I’ve tried the following line for getting the User CF:

my $rq_org = $temp_user->FirstCustomFieldValue(‘CF Name’);

Any thoughts on how to get the User CF?

That line should work. Any special (non-ASCII) characters in name of
the CF? If yes then “use utf8;” line in the beginning of the code.

– Bart

2011/10/5 Bart bart@pleh.info

If I were to use the UserObj, how would that look?

I find it difficult to make the transition from requestor e-mail address
to used ID and from there to a users custom field O_o

As for the More about requestors box, we like the default usage lol + we
want the ability to make reports/charts based on the value of the
tickets
Organisation field.

– Bart

2011/10/5 Kevin Falcone falcone@bestpractical.com

On Wed, Oct 05, 2011 at 09:08:37AM -0500, ktm@rice.edu wrote:

On Wed, Oct 05, 2011 at 03:31:32PM +0200, Bart wrote:

Hi,

For users we’ve added an extra CF which is an autocomplete field
containing
a list of roughly 450 organisations that we work with. We had to
make
a
separate CF for this in order to help our users a little, saves
typo’s and
makes adding an organisation to a user easy. So basically we’re
ignoring the
RT default Organisation field and have a separate CF for this
purpose.

The second thing we now want is to show that organisation name (the
one in
the organisation CF) in our tickets, so that we can make nice
reports
based
on that information.
This is where I’m stuck, I can’t seem to figure out how to read the
CF for a
requestor (or any user) and thus am unable to write the value into
a
ticket
CF.

I know how to read and write into ticket CF’s, but I have no clue
on
how to
read information from a requestor of a ticket.

Reading information from a tidcket CF:

$self->TicketObj->FirstCustomFieldValue(‘Custom Field Name’);

Writing information into a ticket CF:

$self->TicketObj->AddCustomFieldValue(Field => ‘Custom Field Name’,
Value =>
$my_owner);

Or, instead of a variable use a fixed value between single quotes.

I also know that this piece of code gets a ticket requestor e-mail
address:

my $requestor_address = $self->TicketObj->RequestorAddresses;

But thats about as far as I’m able to get…

Can anyone point me in the right direction for this one?

– Bart

Hi Bart,

If I am understanding your question, you want to be able to script
reading/writing User custom fields. It happens that I have hit the
same stumbling block. It is easy to update Ticket custom fields, but
I would like to do the same with User CFs. The only thing that looks
like it would work is RT::Record, ugh. I hope that someone has a
better option… patch for REST, the RT CLI…? Any help would be
appreciated.

Have you tried FirstCustomFieldValue or AddCustomFieldValue on a User
object?
They’re RT::Record methods, and thus available on all RT objects
(although it only makes sense on the ones that have CFs applied).

RT4 also allows customization of the More about Requestors box from
the config using Formats so you can just display the User CF directly
rather than copying.

-kevin


RT Training Sessions (http://bestpractical.com/services/training.html)

  • San Francisco, CA, USA — October 18 & 19, 2011
  • Washington DC, USA — October 31 & November 1, 2011
  • Barcelona, Spain — November 28 & 29, 2011

RT Training Sessions (http://bestpractical.com/services/training.html)

  • San Francisco, CA, USA — October 18 & 19, 2011
  • Washington DC, USA — October 31 & November 1, 2011
  • Barcelona, Spain — November 28 & 29, 2011


Best regards, Ruslan.