Owner not showing in search results?

Hi all,
We have an odd problem. I’ve put a script in place that sets the requestor
of a ticket to be its owner, and that works perfectly when viewing a
ticket–the owner is shown as the requestor. The problem is that search
results show most tickets as being owned by nobody, but if you click a
ticket, you see the owner has actually been set as expected. It’s just
search results that don’t want to show the owner.

I found this script on the Wiki, and don’t know enough about RT’s internals
to say if it does everything it should. Does anyone see any possible
problems with it that would cause the issue with search results?

get actor ID

my $Actor = $self->TransactionObj->Creator;
#if actor is RT_SystemUser then get out of here
return 1 if $Actor == $RT::SystemUser->id;
#prevents a ticket being assigned to an unprivileged user, comment out if
you want this
return 1 unless $self->TransactionObj->CreatorObj->Privileged;
#get out unless ticket owner is nobody
return 1 unless $self->TicketObj->Owner == $RT::Nobody->id;
#try to change owner
$RT::Logger->info(“Auto assign ticket #”. $self->TicketObj->id ." to user
#". $Actor );
my ($status, $msg) = $self->TicketObj->_Set(Field => ‘Owner’, Value =>
$Actor, RecordTransaction => 0);
unless( $status ) {
$RT::Logger->error( “Impossible to assign the ticket to $Actor: $msg” );
return undef;
}

return 1;

Alex Hall
Automatic Distributors, IT department
ahall@autodist.com

Hi Alex,

What is the Format-String of your search? (It’s under the advanced tab, when you edit the search)

The scrip looks fine.

Cheers,
Vinzenz
Vinzenz Sinapius
Information Technology | Informationstechnik

tracetronic GmbH
Stuttgarter Str. 3
01189 DRESDEN
GERMANY

Phone: +49 351 205768-167
Fax: +49 351 205768-999
E-mail: vinzenz.sinapius@tracetronic.demailto:vinzenz.sinapius@tracetronic.de

Head Office | Hauptsitz: Stuttgarter Str. 3, 01189 DRESDEN, GERMANY
Managing Directors | Geschäftsführer: Dr.-Ing. Rocco Deutschmann, Dr.-Ing. Peter Strähle
Registration Court | Registergericht: Amtsgericht Dresden, HRB 23 086Von: rt-users [mailto:rt-users-bounces@lists.bestpractical.com] Im Auftrag von Alex Hall
Gesendet: Freitag, 18. November 2016 14:29
An: rt-users rt-users@lists.bestpractical.com
Betreff: [rt-users] Owner not showing in search results?

Hi all,
We have an odd problem. I’ve put a script in place that sets the requestor of a ticket to be its owner, and that works perfectly when viewing a ticket–the owner is shown as the requestor. The problem is that search results show most tickets as being owned by nobody, but if you click a ticket, you see the owner has actually been set as expected. It’s just search results that don’t want to show the owner.

I found this script on the Wiki, and don’t know enough about RT’s internals to say if it does everything it should. Does anyone see any possible problems with it that would cause the issue with search results?

get actor ID

my $Actor = $self->TransactionObj->Creator;
#if actor is RT_SystemUser then get out of here
return 1 if $Actor == $RT::SystemUser->id;
#prevents a ticket being assigned to an unprivileged user, comment out if you want this
return 1 unless $self->TransactionObj->CreatorObj->Privileged;
#get out unless ticket owner is nobody
return 1 unless $self->TicketObj->Owner == $RT::Nobody->id;
#try to change owner
$RT::Logger->info(“Auto assign ticket #”. $self->TicketObj->id ." to user #". $Actor );
my ($status, $msg) = $self->TicketObj->_Set(Field => ‘Owner’, Value => $Actor, RecordTransaction => 0);
unless( $status ) {
$RT::Logger->error( “Impossible to assign the ticket to $Actor: $msg” );
return undef;
}

return 1;

Alex Hall
Automatic Distributors, IT department
ahall@autodist.commailto:ahall@autodist.com

We always leave it at the default. I did a search for “queue:technology”,
and here’s the format it uses:

id/TITLE:#’,
Subject/TITLE:Subject’,
Status,
QueueName,
Owner,
Priority,
NEWLINE’,
NBSP’,
Requestors’,
CreatedRelative’,
ToldRelative’,
LastUpdatedRelative’,
'TimeLeft'On Fri, Nov 18, 2016 at 9:03 AM, Sinapius, Vinzenz < Vinzenz.Sinapius@tracetronic.de> wrote:

Hi Alex,

What is the Format-String of your search? (It’s under the advanced tab,
when you edit the search)

The scrip looks fine.

Cheers,

Vinzenz

Vinzenz Sinapius
Information Technology | Informationstechnik

trace**tronic GmbH
Stuttgarter Str. 3
01189 DRESDEN
GERMANY

Phone: +49 351 205768-167
Fax: +49 351 205768-999
E-mail: vinzenz.sinapius@tracetronic.de

Head Office | Hauptsitz: Stuttgarter Str. 3, 01189 DRESDEN, GERMANY
Managing Directors | Geschäftsführer: Dr.-Ing. Rocco Deutschmann, Dr.-Ing.
Peter Strähle
Registration Court | Registergericht: Amtsgericht Dresden, HRB 23 086

Von: rt-users [mailto:rt-users-bounces@lists.bestpractical.com] *Im
Auftrag von *Alex Hall
Gesendet: Freitag, 18. November 2016 14:29
An: rt-users rt-users@lists.bestpractical.com
Betreff: [rt-users] Owner not showing in search results?

Hi all,

We have an odd problem. I’ve put a script in place that sets the requestor
of a ticket to be its owner, and that works perfectly when viewing a
ticket–the owner is shown as the requestor. The problem is that search
results show most tickets as being owned by nobody, but if you click a
ticket, you see the owner has actually been set as expected. It’s just
search results that don’t want to show the owner.

I found this script on the Wiki, and don’t know enough about RT’s
internals to say if it does everything it should. Does anyone see any
possible problems with it that would cause the issue with search results?

get actor ID

my $Actor = $self->TransactionObj->Creator;
#if actor is RT_SystemUser then get out of here
return 1 if $Actor == $RT::SystemUser->id;
#prevents a ticket being assigned to an unprivileged user, comment out if
you want this
return 1 unless $self->TransactionObj->CreatorObj->Privileged;
#get out unless ticket owner is nobody
return 1 unless $self->TicketObj->Owner == $RT::Nobody->id;
#try to change owner
$RT::Logger->info(“Auto assign ticket #”. $self->TicketObj->id ." to user
#". $Actor );
my ($status, $msg) = $self->TicketObj->_Set(Field => ‘Owner’, Value =>
$Actor, RecordTransaction => 0);
unless( $status ) {
$RT::Logger->error( “Impossible to assign the ticket to $Actor: $msg”
);
return undef;
}

return 1;

Alex Hall

Automatic Distributors, IT department

ahall@autodist.com


RT 4.4 and RTIR training sessions, and a new workshop day!
https://bestpractical.com/training

  • Los Angeles - January 9-11 2017

Alex Hall
Automatic Distributors, IT department
ahall@autodist.com

I just wondered if anyone had any more thoughts on this problem. We just
set up email dashboards, and they’re doing the same thing search results
do; owners are often set to ‘nobody’, but if you go into the ticket, the
real owner is shown. Since dashboards and searches use the same display, or
seem to, I’m not surprised. But seeing that reminded me that this is still
a problem we’d like to get fixed if possible. As I mentioned before, I’ve
made no changes to the search results pages, and the problem appears to be
when the owner is set via our script to auto-assign the requestor as the
owner. The owner is set correctly if you view the ticket, but not if that
ticket appears in a search results page. Thanks.On Fri, Nov 18, 2016 at 9:18 AM, Alex Hall ahall@autodist.com wrote:

We always leave it at the default. I did a search for “queue:technology”,
and here’s the format it uses:

id
/TITLE:#’,
__
Subject__
/TITLE:Subject’,
Status,
QueueName,
Owner,
Priority,
NEWLINE’,
NBSP’,
Requestors’,
CreatedRelative’,
ToldRelative’,
LastUpdatedRelative’,
TimeLeft

On Fri, Nov 18, 2016 at 9:03 AM, Sinapius, Vinzenz < Vinzenz.Sinapius@tracetronic.de> wrote:

Hi Alex,

What is the Format-String of your search? (It’s under the advanced tab,
when you edit the search)

The scrip looks fine.

Cheers,

Vinzenz

Vinzenz Sinapius
Information Technology | Informationstechnik

trace**tronic GmbH
Stuttgarter Str. 3
01189 DRESDEN
GERMANY

Phone: +49 351 205768-167
Fax: +49 351 205768-999
E-mail: vinzenz.sinapius@tracetronic.de

Head Office | Hauptsitz: Stuttgarter Str. 3, 01189 DRESDEN, GERMANY
Managing Directors | Geschäftsführer: Dr.-Ing. Rocco Deutschmann,
Dr.-Ing. Peter Strähle
Registration Court | Registergericht: Amtsgericht Dresden, HRB 23 086

Von: rt-users [mailto:rt-users-bounces@lists.bestpractical.com] *Im
Auftrag von *Alex Hall
Gesendet: Freitag, 18. November 2016 14:29
An: rt-users rt-users@lists.bestpractical.com
Betreff: [rt-users] Owner not showing in search results?

Hi all,

We have an odd problem. I’ve put a script in place that sets the
requestor of a ticket to be its owner, and that works perfectly when
viewing a ticket–the owner is shown as the requestor. The problem is that
search results show most tickets as being owned by nobody, but if you click
a ticket, you see the owner has actually been set as expected. It’s just
search results that don’t want to show the owner.

I found this script on the Wiki, and don’t know enough about RT’s
internals to say if it does everything it should. Does anyone see any
possible problems with it that would cause the issue with search results?

get actor ID

my $Actor = $self->TransactionObj->Creator;
#if actor is RT_SystemUser then get out of here
return 1 if $Actor == $RT::SystemUser->id;
#prevents a ticket being assigned to an unprivileged user, comment out if
you want this
return 1 unless $self->TransactionObj->CreatorObj->Privileged;
#get out unless ticket owner is nobody
return 1 unless $self->TicketObj->Owner == $RT::Nobody->id;
#try to change owner
$RT::Logger->info(“Auto assign ticket #”. $self->TicketObj->id ." to user
#". $Actor );
my ($status, $msg) = $self->TicketObj->_Set(Field => ‘Owner’, Value =>
$Actor, RecordTransaction => 0);
unless( $status ) {
$RT::Logger->error( “Impossible to assign the ticket to $Actor: $msg”
);
return undef;
}

return 1;

Alex Hall

Automatic Distributors, IT department

ahall@autodist.com


RT 4.4 and RTIR training sessions, and a new workshop day!
https://bestpractical.com/training

  • Los Angeles - January 9-11 2017


Alex Hall
Automatic Distributors, IT department
ahall@autodist.com

Alex Hall
Automatic Distributors, IT department
ahall@autodist.com

Hi Alex,

You do not record your transaction in your scrip. That means that the
system does not know that a change has been made and to invalidate the
caches. You will either need to record it or live with the result.

Regards,
KenOn Mon, Nov 28, 2016 at 11:12:00AM -0500, Alex Hall wrote:

my ($status, $msg) = $self->TicketObj->_Set(Field => ‘Owner’, Value =>
$Actor, RecordTransaction => 0);

This should be 1, not 0 to record the transaction and that should flush
the cached info.

Thanks, I didn’t know that would happen. I did that to suppress the email notification; we want users notified if their tickets change owners, but only if that change is NOT from “nobody” to themselves.

I just updated the script to record the transaction. It worked, because I got the email I wanted suppressed, and the owner still changed. Oddly, “nobody” is still the owner when I search for my ticket, though. Should I flush a cache or something? Mason cache wouldn’t have anything to do with this, would it?> On Nov 28, 2016, at 11:18, Kenneth Marshall ktm@rice.edu wrote:

Hi Alex,

You do not record your transaction in your scrip. That means that the
system does not know that a change has been made and to invalidate the
caches. You will either need to record it or live with the result.

Regards,
Ken

On Mon, Nov 28, 2016 at 11:12:00AM -0500, Alex Hall wrote:

my ($status, $msg) = $self->TicketObj->_Set(Field => ‘Owner’, Value =>
$Actor, RecordTransaction => 0);

This should be 1, not 0 to record the transaction and that should flush
the cached info.

Thanks, I didn’t know that would happen. I did that to suppress the email notification; we want users notified if their tickets change owners, but only if that change is NOT from “nobody” to themselves.

I just updated the script to record the transaction. It worked, because I got the email I wanted suppressed, and the owner still changed. Oddly, “nobody” is still the owner when I search for my ticket, though. Should I flush a cache or something? Mason cache wouldn’t have anything to do with this, would it?

Hi Alex,

Well, that is not what I would have expected to happen. I do not know enough
about the DB queries that are being run to generate the search results. Probably,
my next step would be to look at the actual query and see where the incorrect
results are being produced. I am not much help because we use PostgreSQL as
the DB and not MySQL. Sorry, I cannot be of more assistance.

Regards,
Ken

Thanks, I didn’t know that would happen. I did that to suppress the
email notification; we want users notified if their tickets change owners,
but only if that change is NOT from “nobody” to themselves.

I just updated the script to record the transaction. It worked, because
I got the email I wanted suppressed, and the owner still changed. Oddly,
“nobody” is still the owner when I search for my ticket, though. Should I
flush a cache or something? Mason cache wouldn’t have anything to do with
this, would it?

Hi Alex,

Well, that is not what I would have expected to happen. I do not know
enough
about the DB queries that are being run to generate the search results.
Probably,
my next step would be to look at the actual query and see where the
incorrect
results are being produced. I am not much help because we use PostgreSQL as
the DB and not MySQL. Sorry, I cannot be of more assistance.

How do I view the actual query being used? Is there a way to get RT to
store it, or some other trick? Thanks.

Regards,
Ken

Alex Hall
Automatic Distributors, IT department
ahall@autodist.com

Never mind the SQL logging question, I got it. Something really weird: in
the ticket insertion, I see no owner value at all. Here it is:

INSERT INTO Tickets
(Resolved, Priority, Starts, Creator, InitialPriority, SLA, Created,
LastUpdatedBy, Type, Queue, LastUpdated, Started, Due, Subject,
FinalPriority, Status)
VALUES (‘1970-01-01 00:00:00’, ‘1’, ‘1970-01-01 00:00:00’, ‘28’, ‘1’, NULL,
‘2017-01-05 22:51:29’, ‘28’, ‘ticket’, ‘5’, ‘2017-01-05 22:51:29’,
‘1970-01-01 00:00:00’, ‘2017-01-07 22:51:29’, ‘Test’, ‘50’, ‘new’)

Of course, I see nothing for the custom field I set either. Still, why
would owner not be set in the initial ticket insertion? Later, I see this
insertion, for some reason:

INSERT INTO Groups
(Instance, LastUpdated, Name, Created, LastUpdatedBy, Domain, Description,
id, Creator)
VALUES (‘1164’, ‘2017-01-05 22:51:29’, ‘Owner’, ‘2017-01-05 22:51:29’,
‘28’, ‘RT::Ticket-Role’, NULL, ‘4856’, ‘28’)

I have no idea what that’s about. I have to run, so there may be more in
the log file I’ll get to tomorrow. But what’s going on here, and could this
explain why owners don’t show in search results but they do in ticket
displays? Thanks.On Thu, Jan 5, 2017 at 1:40 PM, Alex Hall ahall@autodist.com wrote:

On Mon, Nov 28, 2016 at 11:41 AM, Kenneth Marshall ktm@rice.edu wrote:

On Mon, Nov 28, 2016 at 11:32:36AM -0500, Alex Hall wrote:

Thanks, I didn’t know that would happen. I did that to suppress the
email notification; we want users notified if their tickets change owners,
but only if that change is NOT from “nobody” to themselves.

I just updated the script to record the transaction. It worked, because
I got the email I wanted suppressed, and the owner still changed. Oddly,
“nobody” is still the owner when I search for my ticket, though. Should I
flush a cache or something? Mason cache wouldn’t have anything to do with
this, would it?

Hi Alex,

Well, that is not what I would have expected to happen. I do not know
enough
about the DB queries that are being run to generate the search results.
Probably,
my next step would be to look at the actual query and see where the
incorrect
results are being produced. I am not much help because we use PostgreSQL
as
the DB and not MySQL. Sorry, I cannot be of more assistance.

How do I view the actual query being used? Is there a way to get RT to
store it, or some other trick? Thanks.

Regards,
Ken


Alex Hall
Automatic Distributors, IT department
ahall@autodist.com

Alex Hall
Automatic Distributors, IT department
ahall@autodist.com