function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
AB003AB003 

Billing System Integartion

Hi All,

 

My knowledge is limited for integration. I was hoping to get some answer. We have some home built billing system. We want to integrate this with SF in future. What are my options? Please answer. Not to mention there are very good integrator like Informatica, Cast-Iron but these are very costly tools. Also are there any option for exporting data from SF to billing system one way.

 

PLease advise

 

Thanks

Abhi 

Best Answer chosen by Admin (Salesforce Developers) 
ManoharSFManoharSF

HI Abhi,

 

Our company wants to have it everything cheap so had to go with manual routes but certainly you can use the tools you mentioned. I dont have experience with Jitterbit and Dell Boomi. but worked on Informatica earlier but not for SF integration though but its very good ETL tool. I heard good reviews about Dell Boomi too.

 

Which ever tool you use, you will have to configure it per each requirement either ways. 

 

But reading through your reply, you are updating third party DBs with the SF data. I am sure your company must be using some ETL tool, to make it cheap(i am going by my company policy:)), you could use Data loader and batch script to automatically generate csv files and then use those CSV files as source for your ETL tool to update the DBs. building the first process takes time, from there on all you do is reuse the same bean structure and update SOQL and process name for the new one. Here's what I use.

 

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="csvSFAccountsProcess"
        class="com.salesforce.dataloader.process.ProcessRunner"
        singleton="false">
    <description>csvAccountExtract job gets account info from salesforce and saves info into a CSV file."</description>
    <property name="name" value="csvSFAccounts"/>
    <property name="configOverrideMap">
      <map>
        <entry key="sfdc.debugMessages" value="false"/>
        <entry key="sfdc.debugMessagesFile" value="\\HOUIC-S-50913\My$\Cached\My Documents\Salesforce_DataLoader\ForSpotfire\Endur_SF_csa_SoapTrace.log"/>
        <entry key="sfdc.endpoint" value="https://ssl.salesforce.com"/>
        <entry key="sfdc.username" value="myemail@email.com"/>
        <!-- password specified below is invalid, please generate one using the encrypt.bat utility -->
        <entry key="sfdc.password" value="bc83a6107b80652bf3f32128b7575a69"/>
        <entry key="process.encryptionKeyFile" value="\\HOUIC-S-50913\My$\Cached\My Documents\Salesforce_DataLoader\ForSpotfire\key.txt"/>
        <entry key="sfdc.timeoutSecs" value="600"/>
        <entry key="sfdc.loadBatchSize" value="1000"/>
        <entry key="sfdc.entity" value="Account"/>
        <entry key="sfdc.extractionRequestSize" value="500"/>
        <entry key="sfdc.extractionSOQL" value="Select Id, Name , Customer_Ret_Lost_2_Yrs_Back__c, Customer_Ret_Lost_Pr_Yr__c, Customer_Retained_2_YR_Back__c, Customer_Retained_Previous_YR__c, Relationship_Type__c , Sales_Division__c , Sales_Margin_YTD__c, Sales_Margin_YTD_2yrs_Back__c , Sales_Margin_YTD_3yrs_Back__c , Sales_Margin_YTD_Previos_Yr__c , SAP_ID__c , SAP_Legal_Name__c , Owner.Name  from Account"/>
        <entry key="process.operation" value="extract"/>
        <entry key="dataAccess.type" value="csvWrite"/>
        <entry key="dataAccess.name" value="\\Americas.MyCompany.com\americas\Trading\STNA-Houston\Dept_34\Customer Support\6 Administrative\Monthly Reports- KPI\SpotfireXLSData\AutomatedSpotfireXLSDumpsDoNotDelete\SF_Accounts.csv"/>
      </map>
    </property>
  </bean>
  <bean id="csvSFOpportunitiesProcess"
          class="com.salesforce.dataloader.process.ProcessRunner"
          singleton="false">
      <description>csvAccountExtract job gets account info from salesforce and saves info into a CSV file."</description>
      <property name="name" value="csvSFOpportunities"/>
      <property name="configOverrideMap">
        <map>
          <entry key="sfdc.debugMessages" value="false"/>
          <entry key="sfdc.debugMessagesFile" value="\\HOUIC-S-50913\My$\Cached\My Documents\Salesforce_DataLoader\ForSpotfire\Endur_SF_csa_SoapTrace.log"/>
          <entry key="sfdc.endpoint" value="https://ssl.salesforce.com"/>
          <entry key="sfdc.username" value="myemail@email.com"/>
          <!-- password specified below is invalid, please generate one using the encrypt.bat utility -->
          <entry key="sfdc.password" value="bc83a6107b80652bf3f32128b7575a69"/>
          <entry key="process.encryptionKeyFile" value="\\HOUIC-S-50913\My$\Cached\My Documents\Salesforce_DataLoader\ForSpotfire\key.txt"/>
          <entry key="sfdc.timeoutSecs" value="600"/>
          <entry key="sfdc.loadBatchSize" value="1000"/>
          <entry key="sfdc.entity" value="Opportunity"/>
          <entry key="sfdc.extractionRequestSize" value="500"/>
          <entry key="sfdc.extractionSOQL" value="Select Account.Id, Account.Name, Account.Relationship_Type__c, Account.Sales_Division__c,Amount , CloseDate, Close_Date_Year__c, CreatedDate, Margin_Unit__c, Type, OpportunityEndDate__c, OpportunityStartDate__c, StageName, UnitofMeasure__c from Opportunity  where StageName ='Closed Won'"/>
          <entry key="process.operation" value="extract"/>
          <entry key="dataAccess.type" value="csvWrite"/>
          <entry key="dataAccess.name" value="\\Americas.MyCompany.com\americas\Trading\STNA-Houston\Dept_34\Customer Support\6 Administrative\Monthly Reports- KPI\SpotfireXLSData\AutomatedSpotfireXLSDumpsDoNotDelete\SF_Opportunities.csv"/>
        </map>
      </property>
  </bean>
</beans>

  

echo "starting"
cls
cd "C:\Program Files\salesforce.com\Data Loader\bin"

CALL process "\\HOUIC-S-50913\My$\Cached\My Documents\Salesforce_DataLoader\ForSpotfire" "csvSFAccountsProcess"

CALL process "\\HOUIC-S-50913\My$\Cached\My Documents\Salesforce_DataLoader\ForSpotfire" "csvSFOpportunitiesProcess" 

 

If you still want to persue the tools then, out of the box informatica doesnt comes with SF connector, thats extra license. I believe Dell Boomi has better options then Jitterbit.

 

hope this helps you in evaluating different routes.

 

good luck!

Manohar

 

 

 

All Answers

ManoharSFManoharSF

It depends on your needs - do you have access to their DB or not; do you want it be on demand or not.

 

For ondemand there are different APIs that you can use http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_quickstart_intro.htm

 

For not ondemand, you could use data loader. you can automate this process as well.

 

I recently worked on both these types of integration both from DB through data loader and a portal through SOAP API

 

For DB, I had to use combination of data loader and vb.net to automate it. I used below link for reference.

 

http://wiki.developerforce.com/page/Using_Data_Loader_from_the_command_line

 

For the API one, there was an external site from where customers used to input some info and was fed into Salesforce. This is on demand. and used below link for reference.

 

http://www.salesforce.com/us/developer/docs/api/apex_api.pdf

 

Hope this gives you a kick start.

 

good luck!

Manohar

 

AB003AB003

Hi Manohar, Thanks for reply. I dont have access to their DB. It is a home built system. We are looking for some way to update accounts, contact info from SF to their billing system.

 

 

Manohar, can you give a bigger picture? Ok, here is the deal. We in future will defintely integerate many billing sytem with SF some are home built, some are Oracle etc. So, it is impossible to write API everytime as it needs a lots of effort. I was thinking to suggest buy tools like Jitterbit, Dell Boomi, Informatica, Cast Iron etc. because this is most efficient tools for integeration with no problems. Only thing is it might cost a couple of bucks every month.

 

Please suggest looking at broader prospect.

 

Thanks

Abhi

ManoharSFManoharSF

HI Abhi,

 

Our company wants to have it everything cheap so had to go with manual routes but certainly you can use the tools you mentioned. I dont have experience with Jitterbit and Dell Boomi. but worked on Informatica earlier but not for SF integration though but its very good ETL tool. I heard good reviews about Dell Boomi too.

 

Which ever tool you use, you will have to configure it per each requirement either ways. 

 

But reading through your reply, you are updating third party DBs with the SF data. I am sure your company must be using some ETL tool, to make it cheap(i am going by my company policy:)), you could use Data loader and batch script to automatically generate csv files and then use those CSV files as source for your ETL tool to update the DBs. building the first process takes time, from there on all you do is reuse the same bean structure and update SOQL and process name for the new one. Here's what I use.

 

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="csvSFAccountsProcess"
        class="com.salesforce.dataloader.process.ProcessRunner"
        singleton="false">
    <description>csvAccountExtract job gets account info from salesforce and saves info into a CSV file."</description>
    <property name="name" value="csvSFAccounts"/>
    <property name="configOverrideMap">
      <map>
        <entry key="sfdc.debugMessages" value="false"/>
        <entry key="sfdc.debugMessagesFile" value="\\HOUIC-S-50913\My$\Cached\My Documents\Salesforce_DataLoader\ForSpotfire\Endur_SF_csa_SoapTrace.log"/>
        <entry key="sfdc.endpoint" value="https://ssl.salesforce.com"/>
        <entry key="sfdc.username" value="myemail@email.com"/>
        <!-- password specified below is invalid, please generate one using the encrypt.bat utility -->
        <entry key="sfdc.password" value="bc83a6107b80652bf3f32128b7575a69"/>
        <entry key="process.encryptionKeyFile" value="\\HOUIC-S-50913\My$\Cached\My Documents\Salesforce_DataLoader\ForSpotfire\key.txt"/>
        <entry key="sfdc.timeoutSecs" value="600"/>
        <entry key="sfdc.loadBatchSize" value="1000"/>
        <entry key="sfdc.entity" value="Account"/>
        <entry key="sfdc.extractionRequestSize" value="500"/>
        <entry key="sfdc.extractionSOQL" value="Select Id, Name , Customer_Ret_Lost_2_Yrs_Back__c, Customer_Ret_Lost_Pr_Yr__c, Customer_Retained_2_YR_Back__c, Customer_Retained_Previous_YR__c, Relationship_Type__c , Sales_Division__c , Sales_Margin_YTD__c, Sales_Margin_YTD_2yrs_Back__c , Sales_Margin_YTD_3yrs_Back__c , Sales_Margin_YTD_Previos_Yr__c , SAP_ID__c , SAP_Legal_Name__c , Owner.Name  from Account"/>
        <entry key="process.operation" value="extract"/>
        <entry key="dataAccess.type" value="csvWrite"/>
        <entry key="dataAccess.name" value="\\Americas.MyCompany.com\americas\Trading\STNA-Houston\Dept_34\Customer Support\6 Administrative\Monthly Reports- KPI\SpotfireXLSData\AutomatedSpotfireXLSDumpsDoNotDelete\SF_Accounts.csv"/>
      </map>
    </property>
  </bean>
  <bean id="csvSFOpportunitiesProcess"
          class="com.salesforce.dataloader.process.ProcessRunner"
          singleton="false">
      <description>csvAccountExtract job gets account info from salesforce and saves info into a CSV file."</description>
      <property name="name" value="csvSFOpportunities"/>
      <property name="configOverrideMap">
        <map>
          <entry key="sfdc.debugMessages" value="false"/>
          <entry key="sfdc.debugMessagesFile" value="\\HOUIC-S-50913\My$\Cached\My Documents\Salesforce_DataLoader\ForSpotfire\Endur_SF_csa_SoapTrace.log"/>
          <entry key="sfdc.endpoint" value="https://ssl.salesforce.com"/>
          <entry key="sfdc.username" value="myemail@email.com"/>
          <!-- password specified below is invalid, please generate one using the encrypt.bat utility -->
          <entry key="sfdc.password" value="bc83a6107b80652bf3f32128b7575a69"/>
          <entry key="process.encryptionKeyFile" value="\\HOUIC-S-50913\My$\Cached\My Documents\Salesforce_DataLoader\ForSpotfire\key.txt"/>
          <entry key="sfdc.timeoutSecs" value="600"/>
          <entry key="sfdc.loadBatchSize" value="1000"/>
          <entry key="sfdc.entity" value="Opportunity"/>
          <entry key="sfdc.extractionRequestSize" value="500"/>
          <entry key="sfdc.extractionSOQL" value="Select Account.Id, Account.Name, Account.Relationship_Type__c, Account.Sales_Division__c,Amount , CloseDate, Close_Date_Year__c, CreatedDate, Margin_Unit__c, Type, OpportunityEndDate__c, OpportunityStartDate__c, StageName, UnitofMeasure__c from Opportunity  where StageName ='Closed Won'"/>
          <entry key="process.operation" value="extract"/>
          <entry key="dataAccess.type" value="csvWrite"/>
          <entry key="dataAccess.name" value="\\Americas.MyCompany.com\americas\Trading\STNA-Houston\Dept_34\Customer Support\6 Administrative\Monthly Reports- KPI\SpotfireXLSData\AutomatedSpotfireXLSDumpsDoNotDelete\SF_Opportunities.csv"/>
        </map>
      </property>
  </bean>
</beans>

  

echo "starting"
cls
cd "C:\Program Files\salesforce.com\Data Loader\bin"

CALL process "\\HOUIC-S-50913\My$\Cached\My Documents\Salesforce_DataLoader\ForSpotfire" "csvSFAccountsProcess"

CALL process "\\HOUIC-S-50913\My$\Cached\My Documents\Salesforce_DataLoader\ForSpotfire" "csvSFOpportunitiesProcess" 

 

If you still want to persue the tools then, out of the box informatica doesnt comes with SF connector, thats extra license. I believe Dell Boomi has better options then Jitterbit.

 

hope this helps you in evaluating different routes.

 

good luck!

Manohar

 

 

 

This was selected as the best answer
AB003AB003

Manohar, The way it works here. We have different billing sytem for different buiness. For one business, I am taking about. All the customer data is stored in SF. And invoice is generated by the home-built billing system. Any new addition of account is manually updated by user on the billing system. There is no ETL tool for that billing system. My job is to automate this process to avoid this manual work to come with the process which will update daily. Thanks for sharing the code. I really appreciate that.

 

Thanks