[rt-users] Can't coerce array into hash at /opt/rt3/sbin/../lib/RT/CustomField.pm line 696.

Direct Insure Online vinod.rapolu at yahoo.com
Thu Jul 7 11:42:27 EDT 2011


Hi All,
 
We just upgraded our RT from 3.8.4 to 4.0.1We upgraded the database also.
 
When we want to create a new custom field we are getting the following errors
 
Can't coerce array into hash at /opt/rt3/sbin/../lib/RT/CustomField.pm line 696.
Can't coerce array into hash at /opt/rt3/sbin/../lib/RT/CustomField.pm line 620.
 
What could be the problem.
 
With Regards
Vinod.R
 

From: Mauricio Tavares <raubvogel at gmail.com>
To: Mike Johnson <mike.johnson at nosm.ca>
Cc: rt-users at lists.bestpractical.com
Sent: Thursday, July 7, 2011 10:40 AM
Subject: Re: [rt-users] Faking {$Transaction->Content()}

On Thu, Jul 7, 2011 at 9:59 AM, Mike Johnson <mike.johnson at nosm.ca> wrote:
> Just trying to peice together the workflow from the last few emails, sorry
> if I simplify it too much...
>
> - previous owner comments on ticket with attachments
> - somehow the owner changes(sounds like the previous owner may do this...
> not sure though)
> - email fires to new owner notifying him he owns this ticket
> - new owner uses email to communicate with requestor
>
      You got the workflow right. FYI, right now I am able to send an
email to new owner that looks like the last correspondence in the
ticket with two small exceptions:

o I created a header that indicates the new owner. Such header is only
sent to the AdminCcs, not to the requestor or other CCs. Owner can use
that header to filter out correspondence that is addressed to
him/her/it.

o Non-text attachments are shown as links instead of being attached to
the email being sent to the new owner. I would like to have them
attached but right now I do not know how to do it. I probably need to
learn how to create this email as a MIMEObj, which is my weakness
right now.

> Your end state is
> - owner changed
> - requestor gets attachments
> - new owner has a conduit to communicate to requestor via email
>
> The last part of that workflow makes me assume you have a scrip that
> notifies requestor on correspondence, so to me, the only thing that you need
> to do to get your end state, make the previous owner add the attachments as
> a correspondence instead of comment.
>
> If your end state also requires the new owner to have a copy of the
> attachments in his email, the previous owner can do a 1 time cc to the new
> owner when he's sending the reply with the attachments.
>
      But that would mean old owner would have to (a) pass ownership
to new owner and (b) cc the new owner. That makes it easier for old
owner to miss a step.

> If typing in the new owner's email address isn't reliable, there is an
> extension out there that does autocomplete, might be of some use? I've only
> looked at it once... not sure if it can be configured out of the box to do
> what you need, but it would be a starting point.
>
> Not sure if you can get the attachments from a previous transaction, but a
> little user training may make it so you don't have to.
>
      You should know by now it is easier to write code than to train users. ;)

> Thanks!
> Mike.
> On Tue, Jul 5, 2011 at 6:33 PM, Mauricio Tavares <raubvogel at gmail.com>
> wrote:
>>
>> On Tue, Jul 5, 2011 at 6:25 PM, Kenneth Crocker <kfcrocker at lbl.gov> wrote:
>> > Mauricio,
>> >
>> > Why not just keep it simple and send them an email with some simple
>> > ticket
>> > info and the ticket id so they can just link to the ticket and see
>> > whatever
>> > info they need. They are going to need to go into the ticket anyway.
>> > Clicking a link to the ticket won't take anymore time than clicking any
>> > attachment in the email. AND if the ticket has several attachments (as
>> > many
>> > of ours do), this simplifies the process a great deal.
>> >
>>      I agree; I actually have that working (well the text part of the
>> comment is shown on the ticket and then the non-text attachments are
>> provided as links). Problem is that is what they want is the new
>> ticket owner to get a complete copy of the last ticket correspondence
>> so he can reply to it and it will be sent to the requestor. New owner
>> should not need to go to the RT web interface to do that. And that has
>> turned out to be a bit more challenging than I originally expected. :)
>>
>> > Just a thought.
>> >
>> > Kenn
>> >
>> > On Tue, Jul 5, 2011 at 3:01 PM, Mauricio Tavares <raubvogel at gmail.com>
>> > wrote:
>> >>
>> >> On Tue, Jul 5, 2011 at 5:55 PM, Mauricio Tavares <raubvogel at gmail.com>
>> >> wrote:
>> >> > On Tue, Jul 5, 2011 at 5:51 PM, Kenneth Crocker <kfcrocker at lbl.gov>
>> >> > wrote:
>> >> >> Mauricio,
>> >> >>
>> >> >> Who are you sending the email to?
>> >> >>
>> >> >   The new ticket owner.
>> >> >
>> >>      Something on these lines (not claiming to be proper or correct)
>> >> is what I am trying to do:
>> >>
>> >> {
>> >>   my $Transactions = $Ticket->Transactions;
>> >>   $RT::Logger->debug("Find Transaction");
>> >>   $Transactions->Limit( FIELD => 'Type',
>> >>                          VALUE => "Correspond"
>> >>                        );
>> >>   $Transaction = $Transactions->Last;
>> >>   $RT::Logger->debug("Found Transaction : $Transaction");
>> >> }To: { $Ticket->OwnerObj->EmailAddress }
>> >> Subject: { $Ticket->Subject() }
>> >> RT-Attach-Message: yes
>> >>
>> >> But I am not able to feed the $Transaction I want (the one I got above
>> >> the headers) to RT-Attach-Message.
>> >>
>> >> >> Kenn
>> >> >> LBNL
>> >> >>
>> >> >> On Tue, Jul 5, 2011 at 12:35 PM, Mauricio Tavares
>> >> >> <raubvogel at gmail.com>
>> >> >> wrote:
>> >> >>>
>> >> >>> On Tue, Jul 5, 2011 at 2:31 PM, Kenneth Crocker <kfcrocker at lbl.gov>
>> >> >>> wrote:
>> >> >>> > Mauricio,
>> >> >>> >
>> >> >>> > What is it you want to do? It sounds like you want to put the
>> >> >>> > last
>> >> >>> > correspondence of a ticket into an email/template when the owner
>> >> >>> > of
>> >> >>> > a
>> >> >>> > ticket
>> >> >>> > is changed. Is that right? Technically, there WAS a transaction
>> >> >>> > record
>> >> >>> > created, but since it only involved an owner change, that's the
>> >> >>> > only
>> >> >>> > info on
>> >> >>> > the transaction record.
>> >> >>> >
>> >> >>> > If this is what you want to do, it CAN be done fairly easily with
>> >> >>> > a
>> >> >>> > scrip.
>> >> >>> > What you want to do is pull up the last comment transaction
>> >> >>> > entered
>> >> >>> > for
>> >> >>> > that
>> >> >>> > ticket. You can do that IN a template.
>> >> >>> >
>> >> >>>      Well, this what I want do do:
>> >> >>>
>> >> >>> If ticket owner changed
>> >> >>>   Send the last correspondence of a ticket into an email/template
>> >> >>> (as
>> >> >>> correspondence) to the new ticket owner.
>> >> >>>
>> >> >>> When I mean last correspondence I do want to include every
>> >> >>> attachment
>> >> >>> (.zip files, jpg, etc)  it came with (like what you would get by
>> >> >>> having RT-Attach-Message: yes), not only the textual content (which
>> >> >>> is
>> >> >>> what you would get by doing $Transaction->Content).
>> >> >>>
>> >> >>> From what I understand, $Transaction->Content (and
>> >> >>> RT-Attach-Message:
>> >> >>> yes) need the last Transaction to be a correspondence type to do
>> >> >>> their
>> >> >>> magic. But since the transaction associated with owner changing
>> >> >>> does
>> >> >>> not generate a correspondence, I cannot use them as they are. Well,
>> >> >>> as
>> >> >>> you pointed out, getting the text part of the last correspondence
>> >> >>> and
>> >> >>> creating a correspondence with that as the content is, quite easy.
>> >> >>> The
>> >> >>> non-text attachments are causing me problems.
>> >> >>>
>> >> >>> In my test script I grabbed only the transactions in that ticket
>> >> >>> with
>> >> >>> correspondence in them and am able to see which attachments the
>> >> >>> last
>> >> >>> correspondence had. That really does not do me any good but at
>> >> >>> least
>> >> >>> made me feel happy that I was able to find the attachments. :)
>> >> >>>
>> >> >>> > Hope this helps.
>> >> >>> >
>> >> >>> > Kenn
>> >> >>> > LBNL
>> >> >>> >
>> >> >>> > On Thu, Jun 30, 2011 at 2:59 PM, Mauricio Tavares
>> >> >>> > <raubvogel at gmail.com>
>> >> >>> > wrote:
>> >> >>> >>
>> >> >>> >>      From what I understand (thanks trs), in an on Owner Change
>> >> >>> >> event
>> >> >>> >> you cannot rely on using {$Transaction->Content()} to copy the
>> >> >>> >> last
>> >> >>> >> message/correspondence in a given ticket because no transaction
>> >> >>> >> was
>> >> >>> >> created. So, how can you fake it in an template? If the content
>> >> >>> >> was
>> >> >>> >> only a text file, it is not hard to do it, but what happens when
>> >> >>> >> you
>> >> >>> >> also have attachments? I wrote the following template,
>> >> >>> >>
>> >> >>> >> {
>> >> >>> >>   my $thingie = "Attachments:";
>> >> >>> >>   my $Transactions = $Ticket->Transactions;
>> >> >>> >>
>> >> >>> >>   $Transactions->Limit( FIELD => 'Type',
>> >> >>> >>                           VALUE => "Correspond"
>> >> >>> >>                         );
>> >> >>> >>   # $Rt::Logger->debug("Find Transaction");
>> >> >>> >>   my $TransactionObj = $Transactions->Last;
>> >> >>> >>      my $AttachmentsObj =
>> >> >>> >> RT::Attachments->new($TransactionObj->CurrentUser);
>> >> >>> >>      $AttachmentsObj->Limit( FIELD => 'TransactionID',
>> >> >>> >>                              VALUE => $TransactionObj->id
>> >> >>> >>                            );
>> >> >>> >>      while ( my $a = $AttachmentsObj->Next ) {
>> >> >>> >>         $thingie .= "\nFound an attachment with encoding " .
>> >> >>> >> $a->ContentType . " and ID " . $a->id;
>> >> >>> >>         if ( $a->ContentType eq 'text/plain' || $a->ContentType
>> >> >>> >> eq
>> >> >>> >> 'text/html'){
>> >> >>> >>            $thingie .= "\nContent:\n" . $a->Content;
>> >> >>> >>         }
>> >> >>> >>         elseif ( $a->ContentType eq 'multipart/mixed') {
>> >> >>> >>         }
>> >> >>> >>         else {
>> >> >>> >>            $thingie .= "\n" . $RT::WebURL
>> >> >>> >> ."/Ticket/Attachment/".
>> >> >>> >> $a->TransactionId ."/". $a->id ."/". $a->Filename;
>> >> >>> >>            $thingie .= "\n    ";
>> >> >>> >>         }
>> >> >>> >>      }
>> >> >>> >>   $thingie;
>> >> >>> >> }
>> >> >>> >>
>> >> >>> >> which finds the attachments and put links for the non-text (from
>> >> >>> >> http://requesttracker.wikia.com/wiki/AddAttachmentLinksToMail)
>> >> >>> >> attachments, but what I really want is, well, emulate
>> >> >>> >> {$Transaction->Content()}. Would anyone have any pointers?
>> >> >>> >>
>> >> >>> >> --------
>> >> >>> >> 2011 Training: http://bestpractical.com/services/training.html
>> >> >>> >
>> >> >>> >
>> >> >>> >
>> >> >>> > --------
>> >> >>> > 2011 Training: http://bestpractical.com/services/training.html
>> >> >>> >
>> >> >>
>> >> >>
>> >> >>
>> >> >> --------
>> >> >> 2011 Training: http://bestpractical.com/services/training.html
>> >> >>
>> >> >
>> >
>> >
>> >
>> > --------
>> > 2011 Training: http://bestpractical.com/services/training.html
>> >
>>
>> --------
>> 2011 Training: http://bestpractical.com/services/training.html
>
>
>
> --
> Mike Johnson
> Datatel Programmer/Analyst
> Northern Ontario School of Medicine
> 955 Oliver Road
> Thunder Bay, ON   P7B 5E1
> Phone: (807) 766-7331
> Email: mike.johnson at nosm.ca
>
>
> --------
> 2011 Training: http://bestpractical.com/services/training.html
>

--------
2011 Training: http://bestpractical.com/services/training.html
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bestpractical.com/pipermail/rt-users/attachments/20110707/4a66338e/attachment.htm>


More information about the rt-users mailing list