[[PageOutline(2-5,Contents,pullout)]] = Trac Ticket to Salesforce ticket synchronization = == Description == Maintain synchronization of Trac tickets in Salesforce. Trac tickets are reflected by the Salesforce custom objects, Ticket and Comment. Ticket objects are linked to Cases via M2M relationship provided by the !CaseTicketLink custom object. Even though this is a M2M relation, Trac uses a custom text field for the Case number, so it's essentially many-to-one. Comment objects are related to Ticket objects via the link custom object, !TicketCommentLink. The related lists layouts are modified to display the related object fields rather then the object id. You need the "tracrpc" component installed and enabled for this plugin to work. You also need to add a custom field, "case_number", as shown below. This file gets copied to the "plugins" directory of the trac project. You will need to install the following Salesforce project artifacts using either the Eclipse SForce plugin or the ant-based migration tool. {{{ src/layouts/Case-Case Layout.layout src/layouts/Comment__c-Comment Layout.layout src/layouts/Ticket__c-Ticket Layout.layout src/layouts/TicketCommentLink__c-TicketCommentLink Leyout.layout src/objects/Ticket__c.object src/objects/Comment__c.object src/objects/CaseTicketLink__c.object src/objects/TicketCommentLink__c.object }}} The "migration tool" is just a set of Salesforce-specific Ant tasks which use the metadata API to upload/download artifacts, such as custom objects, etc. I provide an Ant script to perform the deployment. You need to acquire the ''ant-salesforce.jar'' by following these steps: 1. Log into a Salesforce.com org on your deployment machine. 1. Click Your Name ➤ Setup ➤ Develop ➤ Tools, and then click Force.com Migration Tool. 1. Save the .zip file locally and extract the contents to the directory of your choice. 1. Copy ant-salesforce.jar into your Ant installation's lib directory. The lib directory is located in the root folder of your Ant installation. You could also just copy this jar to the same directory as build.xml 1. !Install the custom objects and custom page layouts into your Salesforce org. 1. Copy `trunk/src/trac/plugin/ticket2sforce.py` to `trac/projects//plugins` 1. Generate the partner WSDL and copy it into your `trac/projects//conf` directory 1. Edit trac.ini to enable the tick2sforce component as well as setting the web service API credentials. To install the custom objects and page layouts: {{{ $ cd trunk/src $ ant deploy }}} == Bugs/Feature Requests == Existing bugs and feature requests for TicketToSalesforcePlugin are [report:9?COMPONENT=TicketToSalesforcePlugin here]. If you have any issues, create a [http://trac-hacks.org/newticket?component=TicketToSalesforcePlugin&owner=chriswolf new ticket]. == Download == Download the zipped source from [download:tickettosalesforceplugin here]. == Source == You can check out TicketToSalesforcePlugin from [http://trac-hacks.org/svn/tickettosalesforceplugin here] using Subversion, or [source:tickettosalesforceplugin browse the source] with Trac. == Module Dependencies == * '''sforce''', salesforce-python-toolkit, http://code.google.com/p/salesforce-python-toolkit/ * '''suds''', versions 0.3.6 to 0.3.9 ONLY (i.e. 0.4.0 WON'T WORK) Python SOAP API, https://fedorahosted.org/suds * [wiki:XmlRpcPlugin XML-RPC Plugin] == Example == Example settings in trac.ini are: {{{ [components] tracrpc.* = enabled ticket2sforce.* = enabled ticketvalidator.* = enabled [ticket2sforce] username = yourSFusername password = yourSFpasswd sectoken = yourSFsecurityToken wsdl = partner.wsdl [ticket-custom] case_number = text case_number.label = Case Number [ticketvalidator] new.required = case_number }}} == Author/Contributors == '''Author:''' [wiki:chriswolf] [[BR]] '''Maintainer:''' [wiki:chriswolf] [[BR]] '''Contributors:'''