Support Contract Client Check

Hi,

I am running RT 3.8.4 and have created a custom field, with a list of all our clients, so that the client name is selected from the list when creating or updating a ticket.

I am now looking to implement a way of checking if the client’s support contract has not expired (and perhaps even, displaying a message informing the RT user that the client’s contract has expired and also highlighting the custom field in red - under ticket metadata - when viewing existing tickets referring to clients that do not have valid support contract).

This support contract information is available in an excel spreadsheet that I could either:

  •     link to RT in some way (of course, the danger here is that in order for this to work, the name of client must be exactly the same as in RT) or;
    
  •     update the support contract information in RT form time to time (probably safer this way)
    

In future, I would also like to allow our clients to be able to view and update their own tickets, and would also like to deny access (automatically, based on the check above) if the support contract has expired - possibly displaying a message informing the user that why the access was denied.

I would really appreciate in if someone could point me in the right direction.

Thanks and regards,
Walid

Hi,
This is possible, if you find a Way to Store The support Contract information. Good starting Point is Asset tracker in this Case, where you can Store The information. Based on The customfield with The Client information and a Tiny Script you can Link to The Contract and also you can Grab The Time information from The Asset and out them into The Ticket. If you Need more help, let me Know.Am 24.03.2011 um 12:54 schrieb Walid Haider walid.haider@movensis.com:

Hi,

I am running RT 3.8.4 and have created a custom field, with a list of all our clients, so that the client name is selected from the list when creating or updating a ticket.

I am now looking to implement a way of checking if the client’s support contract has not expired (and perhaps even, displaying a message informing the RT user that the client’s contract has expired and also highlighting the custom field in red – under ticket metadata – when viewing existing tickets referring to clients that do not have valid support contract).

This support contract information is available in an excel spreadsheet that I could either:

· link to RT in some way (of course, the danger here is that in order for this to work, the name of client must be exactly the same as in RT) or;

· update the support contract information in RT form time to time (probably safer this way)

In future, I would also like to allow our clients to be able to view and update their own tickets, and would also like to deny access (automatically, based on the check above) if the support contract has expired – possibly displaying a message informing the user that why the access was denied.

I would really appreciate in if someone could point me in the right direction.

Thanks and regards,

Walid

Walid:

I’ve done something similar but my approach was slightly different.
My customers in most cases have more than one contact, so for every customer I created a group, and added their contacts as members of their group, the group name is the customer name, and I added a couple of group custom fields, contract_name and contract_expire_date.
When any of the contacts create a ticket, there is a global scrip that identify the requestor and if it belongs to a customer group it populates a ticket custom field customer_name with the name of the group the requestor belongs to, it also populates ticket custom fields relating to contract name and expire grabbed from the group custom fields.

To keep my RT in sync with the CRM system (to update the customer and contract information), I run daily script that export this info from CRM and update the group custom fields within my RT.

Hope this helps.

Regards;
RoyFrom: rt-users-bounces@lists.bestpractical.com [mailto:rt-users-bounces@lists.bestpractical.com] On Behalf Of Walid Haider
Sent: 24 March 2011 11:54
To: rt-users@lists.bestpractical.com
Subject: [rt-users] Support Contract Client Check

Hi,

I am running RT 3.8.4 and have created a custom field, with a list of all our clients, so that the client name is selected from the list when creating or updating a ticket.

I am now looking to implement a way of checking if the client’s support contract has not expired (and perhaps even, displaying a message informing the RT user that the client’s contract has expired and also highlighting the custom field in red - under ticket metadata - when viewing existing tickets referring to clients that do not have valid support contract).

This support contract information is available in an excel spreadsheet that I could either:

  •     link to RT in some way (of course, the danger here is that in order for this to work, the name of client must be exactly the same as in RT) or;
    
  •     update the support contract information in RT form time to time (probably safer this way)
    

In future, I would also like to allow our clients to be able to view and update their own tickets, and would also like to deny access (automatically, based on the check above) if the support contract has expired - possibly displaying a message informing the user that why the access was denied.

I would really appreciate in if someone could point me in the right direction.

Thanks and regards,
Walid

Hi Roy,

Thanks for your response, any chance you can send me an example of the global scrip you are using?

Regards,
WalidFrom: Raed El-Hames [mailto:Raed.El-Hames@daisygroupplc.com]
Sent: quinta-feira, 24 de Março de 2011 12:10
To: Walid Haider; rt-users@lists.bestpractical.com
Subject: RE: Support Contract Client Check

Walid:

I’ve done something similar but my approach was slightly different.
My customers in most cases have more than one contact, so for every customer I created a group, and added their contacts as members of their group, the group name is the customer name, and I added a couple of group custom fields, contract_name and contract_expire_date.
When any of the contacts create a ticket, there is a global scrip that identify the requestor and if it belongs to a customer group it populates a ticket custom field customer_name with the name of the group the requestor belongs to, it also populates ticket custom fields relating to contract name and expire grabbed from the group custom fields.

To keep my RT in sync with the CRM system (to update the customer and contract information), I run daily script that export this info from CRM and update the group custom fields within my RT.

Hope this helps.

Regards;
Roy

From: rt-users-bounces@lists.bestpractical.com [mailto:rt-users-bounces@lists.bestpractical.com] On Behalf Of Walid Haider
Sent: 24 March 2011 11:54
To: rt-users@lists.bestpractical.com
Subject: [rt-users] Support Contract Client Check

Hi,

I am running RT 3.8.4 and have created a custom field, with a list of all our clients, so that the client name is selected from the list when creating or updating a ticket.

I am now looking to implement a way of checking if the client’s support contract has not expired (and perhaps even, displaying a message informing the RT user that the client’s contract has expired and also highlighting the custom field in red - under ticket metadata - when viewing existing tickets referring to clients that do not have valid support contract).

This support contract information is available in an excel spreadsheet that I could either:

· link to RT in some way (of course, the danger here is that in order for this to work, the name of client must be exactly the same as in RT) or;

· update the support contract information in RT form time to time (probably safer this way)

In future, I would also like to allow our clients to be able to view and update their own tickets, and would also like to deny access (automatically, based on the check above) if the support contract has expired - possibly displaying a message informing the user that why the access was denied.

I would really appreciate in if someone could point me in the right direction.

Thanks and regards,
Walid

The scrip do all sorts of things, so I just put the relevant bits below

Condition: On Create
Action: User Defined
Custom action preparation code: return 1;
Custom action cleanup code:
#Assumption ticket is created via mail/web by a customer contact.
#So creator == requestor
my $req =$self->TicketObj->CreatorObj ;
my $org = $req->ContactMembership ; #ContactMembership explained below
if ($org) {
#We found this requestor belong to a Customer group
my $g_obj = RT::Group->new(RT::SystemUser);
$g_obj->LoadUserDefinedGroup($org);
my $service_id = $g_obj->FirstCustomFieldValue(‘Service_Order’);
my $service_valid_from = $g_obj->FirstCustomFieldValue(‘Service_Order_Start’);
my $service_expire = $g_obj->FirstCustomFieldValue(‘Service_Order_Expire’);

$self->{custfield}=RT::CustomField->new(RT::SystemUser);
$self->{custfield}->LoadByName(Name=> ‘Customer_name’);
$self->{TicketObj}->AddCustomFieldValue(Field=>$self->{custfield},Value=> $org);

$self->{custfield2}=RT::CustomField->new(RT::SystemUser);
$self->{custfield2}->LoadByName(Name=> ‘Service_Order_Number’);
$self->{TicketObj}->AddCustomFieldValue(Field=>$self->{custfield2},Value=> $service_id);

$self->{custfield3}=RT::CustomField->new(RT::SystemUser);
$self->{custfield3}->LoadByName(Name=> ‘Service_Order_Number_Expire_Date’);
$self->{TicketObj}->AddCustomFieldValue(Field=>$self->{custfield3},Value=> $service_expire );

return 1;
} else {
return undef;
}

ContactMembership is a function I written and put it in User_Vendor.pm.
There are few ways to extract groups a user belong to , but I needed one specific to customers.

sub ContactMembership {

    # Identify a group a user belong to
    # Used in scrip action to identify cust contact


    # Expects a user id and return group name
    # If user belong to more than one it returns undef
    # This should not happen with customer contacts

    my $self = shift;
    my $MemberId = $self->Id ;
    my $group_list = '';

    my $Groups = RT::Groups->new($RT::SystemUser);
   $Groups->Limit( FIELD => 'Description',OPERATOR => 'LIKE', VALUE => 'Customer-');
    $Groups->Limit( FIELD => 'Domain',OPERATOR => '=', VALUE => 'SystemInternal');
    $Groups->Limit( FIELD => 'Domain',OPERATOR => '=', VALUE => 'UserDefined');

    my $alias = $Groups->Join(
            TYPE       => 'left',
            ALIAS1     => 'main',
            FIELD1     => 'id',
            TABLE2     => 'GroupMembers',
            FIELD2     => 'GroupId'
    );
    $Groups->Limit(
            ALIAS      => $alias,
            FIELD      => 'MemberId',
            OPERATOR   => '=',
            VALUE      => $MemberId,
    );

    return undef unless $Groups->Count == 1 ;
    return $Groups->First->Name ;

}

As I mentioned I removed bits from the scrip and the function, so please check the code for any errors.
Note my customer groups have their description starting with Customer-

Regards;
RoyFrom: Walid Haider [mailto:walid.haider@movensis.com]
Sent: 24 March 2011 14:53
To: Raed El-Hames; rt-users@lists.bestpractical.com
Subject: RE: Support Contract Client Check

Hi Roy,

Thanks for your response, any chance you can send me an example of the global scrip you are using?

Regards,
Walid

From: Raed El-Hames [mailto:Raed.El-Hames@daisygroupplc.com]
Sent: quinta-feira, 24 de Março de 2011 12:10
To: Walid Haider; rt-users@lists.bestpractical.com
Subject: RE: Support Contract Client Check

Walid:

I’ve done something similar but my approach was slightly different.
My customers in most cases have more than one contact, so for every customer I created a group, and added their contacts as members of their group, the group name is the customer name, and I added a couple of group custom fields, contract_name and contract_expire_date.
When any of the contacts create a ticket, there is a global scrip that identify the requestor and if it belongs to a customer group it populates a ticket custom field customer_name with the name of the group the requestor belongs to, it also populates ticket custom fields relating to contract name and expire grabbed from the group custom fields.

To keep my RT in sync with the CRM system (to update the customer and contract information), I run daily script that export this info from CRM and update the group custom fields within my RT.

Hope this helps.

Regards;
Roy

From: rt-users-bounces@lists.bestpractical.com [mailto:rt-users-bounces@lists.bestpractical.com] On Behalf Of Walid Haider
Sent: 24 March 2011 11:54
To: rt-users@lists.bestpractical.com
Subject: [rt-users] Support Contract Client Check

Hi,

I am running RT 3.8.4 and have created a custom field, with a list of all our clients, so that the client name is selected from the list when creating or updating a ticket.

I am now looking to implement a way of checking if the client’s support contract has not expired (and perhaps even, displaying a message informing the RT user that the client’s contract has expired and also highlighting the custom field in red - under ticket metadata - when viewing existing tickets referring to clients that do not have valid support contract).

This support contract information is available in an excel spreadsheet that I could either:

· link to RT in some way (of course, the danger here is that in order for this to work, the name of client must be exactly the same as in RT) or;

· update the support contract information in RT form time to time (probably safer this way)

In future, I would also like to allow our clients to be able to view and update their own tickets, and would also like to deny access (automatically, based on the check above) if the support contract has expired - possibly displaying a message informing the user that why the access was denied.

I would really appreciate in if someone could point me in the right direction.

Thanks and regards,
Walid