Create ticket based on value of Custom Field

I would like write a Scrip to create an Approval ticket if the value of
a Custom Field is a certain value.

My first attempt was as follows:

Condition: User Defined

Custom Condition: return undef unless
($self->TicketObj->FirstCustomFieldValue(‘change type’) =~ /IA change/i);
return 1;

Action: Create Tickets

then in the template:

===Create-Ticket: changereview
Depended-On-By: {$Tickets{‘TOP’}->Id}
Queue: toplevel migration
Owner: ipople
Type: Approval
Content: Someone has created a ticket. you should review and approve it,
so they can finish their work

However this creates an approval ticket every time a transaction occurs.

Can someone point me in the right direction please?

thanks, Iain.