This is a topic in How are you using Highrise?

Salesforce to Highrise conversion successful

 
Avatar mikesax 1 post

I just converted an organization from Salesforce to Highrise. I have the same feeling after cleaning up my office… no clutter, much cleaner, peaceful, and more productive – thank you 37 Signals!

In the process I wrote a small conversion script that takes a Salesforce offline backup (what you get when you close down your account or you request it) and converts it to an Outlook-style CSV file that you can import into Highrise.

It only converts contacts and accounts, no opportunities, cases, etc. Those could be imported using the Highrise API, but I don’t need them for this project. The code below requires Ruby and the FasterCSV gem.

#!/usr/bin/env ruby

# Convert Salesforce backup to Outlook export file that can be imported in Highrise.
#
# Mike Sax, Feb 6, 2008 - mike @ sax.net
#
# Free to use as-is - not supported - it works on my machine.

require 'rubygems'
require 'fastercsv'

FILES_PATH = "/Users/Mike/Downloads/salesforce" 

FIELDS = [ "Title","First Name","Middle Name","Last Name","Suffix","Company","Department","Job Title",
  "Business Street","Business Street 2","Business Street 3","Business City","Business State",
  "Business Postal Code","Business Country/Region","Home Street","Home Street 2","Home Street 3",
  "Home City","Home State","Home Postal Code","Home Country/Region","Other Street","Other Street 2",
  "Other Street 3","Other City","Other State","Other Postal Code","Other Country/Region",
  "Assistant's Phone","Business Fax","Business Phone","Business Phone 2","Callback","Car Phone",
  "Company Main Phone","Home Fax","Home Phone","Home Phone 2","ISDN","Mobile Phone","Other Fax",
  "Other Phone","Pager","Primary Phone","Radio Phone","TTY/TDD Phone","Telex","Account","Anniversary",
  "Assistant's Name","Billing Information","Birthday","Business Address PO Box","Categories","Children",
  "Directory Server","E-mail Address","E-mail Type","E-mail Display Name","E-mail 2 Address",
  "E-mail 2 Type","E-mail 2 Display Name","E-mail 3 Address","E-mail 3 Type","E-mail 3 Display Name",
  "Gender","Government ID Number","Hobby","Home Address PO Box","Initials","Internet Free Busy",
  "Keywords","Language","Location","Manager's Name","Mileage","Notes","Office Location",
  "Organizational ID Number","Other Address PO Box","Priority","Private","Profession","Referred By",
  "Sensitivity","Spouse","User 1","User 2","User 3","User 4","Web Page" ]

def csv_to_hash(filename)
  records = {}
  FasterCSV.open("#{FILES_PATH}/#{filename}", "r") do |csv|
    field_names = csv.shift
    for row in csv.read
      record = {}
      for i in 0..row.length
        record[field_names[i]] = row[i]
      end
      records[row[0]] = record
    end
  end
  records
end

accounts = csv_to_hash("Account.csv")
contacts = csv_to_hash("Contact.csv")

FasterCSV.open("outlook.csv", "w", :force_quotes => true) do |out|
  out << FIELDS
  for key, contact in contacts
    account = contact["AccountId"] ? accounts[contact["AccountId"]] : nil
    record = {}
    record["Job Title"] = contact["Title"]
    record["First Name"] = contact["FirstName"]
    record["Middle Name"] = contact[""]
    record["Last Name"] = contact["LastName"]
    record["Company"] = account["Name"] if account
    record["Business Street"] = contact["MailingStreet"]
    record["Business City"] = contact["MailingCity"]
    record["Business State"] = contact["MailingState"]
    record["Business Postal Code"] = contact["MailingPostalCode"]
    record["Business Fax"] = contact["Fax"]
    record["Business Phone"] = contact["Phone"]
    record["Mobile Phone"] = contact["MobilePhone"]
    record["E-mail Address"] = contact["Email"]
    record["E-mail Display Name"] = "#{contact['FirstName']} #{contact['LastName']}" 
    # Can't add notes to company, so append them to contact notes.
    record["Notes"] = "#{contact['Description']}\r\n#{account ? account['Description'] : ''}" 
    record["Web Page"] = account["Website"] if account
    line = []
    for name in FIELDS
      line << record[name]
    end
    out << line
  end
end
#eof
 
Avatar cross 1 post

Hi Mike,

Brand new to Highrise so apologies if this is a bit of a remedial question. We are trying to use Highrise as a salesforce automation app, primarily to manage our interactions with clients and ideally have some ability to manage a sales pipeline. From what I have seen it doesn’t seem super apparent how we would get salesforce-like functionality in that area. Appreciate any insight you can provide. Thanks much,
-Chris

Signup or login to post a reply.