ConcourseSuite Support

Support
Corporate
PUBLIC PROFILE

Back to topics

Discuss Account Management

batch delete?

You need to be logged in to post messages

This question is answered

batch delete?

3/30/2011 3:28 PM EDT

Having imported nearly 2000 contacts I found a problem - irritating since I couldn't preview the import before accepting it. I now need to select those contacts and delete them. I would very much rather not have to do it by rolling back the database...

1. 3/31/2011 5:02 PM EDT
Default user photo

By Matt Rajkowski

Concursive Corporation
Product Design

airplane-icon-100x100.png

A couple of thoughts...

1. There's a batch delete in Leads that I'm familiar with... I'll look into Accounts/Contacts... perhaps that doesn't exist.

2. Typically there is a Preview and an "undo" after the import. I know you're passed that, but for future reference this is there and I can't express enough concern for verifying the data before accepting it.

3. Yes, I've had to do database deletes... at least all the records will have the same import id. If you do a delete, just make sure to update the Index in the Admin pages to reset that data too.

4. There are ways to do more exhaustive imports from the API... to do related data imports. This requires training.

2. 4/1/2011 9:29 AM EDT

Thanks for the thoughts:

1) I couldn't see it. A useful mechanism for this in other packages is to make a select via some criteria then provide selection mechanisms with that sub-selection and have a batch process button.
2) The "verify before accepting" was my problem, I didn't realise that that download contained an error report....
3) Have deleted manually, several sub-tables had records too. All gone - thanks.
4) Got some documentation on that I can start with? Following a conversation with Phil Kessler yesterday, we are at that point.

3. 4/25/2011 12:09 PM EDT
This reply is marked as the answer
1 person found this helpful.
Default user photo

By Matt Rajkowski

Concursive Corporation
Product Design

airplane-icon-100x100.png

ConcourseSuite has a "Transfer" application that can be used to read and write data between different CRMs and different formats. There are three classes that take CSV files and import them using the API. They are:

ImportAccounts
ImportAccountContacts (and Accounts at the same time)
ImportGeneralContacts

Those classes are used by com.concursive.crm.api.client.Transfer which is in the CRM library and can be executed from the command-line with a single parameter which specifies the path to a configuration file, for example: import-accountcontacts.xml, the contents would need to have the parameters @@ updated for your configuration:

<data-import-config>
<description>Copies contacts from an Excel generated CSV file into the CRM under a new Electronic Import user</description>
<reader class="com.concursive.crm.api.client.reader.cfs.ImportAccountContacts">
<propertyFile>@PROPERTY.FILE@</propertyFile>
<csvFile>@CSV.FILE@</csvFile>
</reader>
<writer class="com.concursive.crm.api.client.writer.cfshttpxmlwriter.CFSHttpXMLWriter">
<url>http://@URL@/ProcessPacket.do</url>
<id>@ID@</id>

@CODE@

<systemId>@SYSTEM.ID@</systemId>
</writer>
</data-import-config>

The CSV File:

OWNER = findColumn(thisRecord, new String[]);
NAME_SALUTATION = findColumn(
thisRecord, new String[]);
CONTACT_NAME = findColumn(
thisRecord, new String[]);
FIRST_NAME = findColumn(
thisRecord, new String[]);
MIDDLE_NAME = findColumn(
thisRecord, new String[]);
LAST_NAME = findColumn(
thisRecord, new String[]);
SUFFIX = findColumn(thisRecord, new String[]);
COMPANY_NAME = findColumn(
thisRecord, new String[]);
TITLE = findColumn(thisRecord, new String[]);
BUSINESS_ADDRESS_1 = findColumn(
thisRecord, new String[]);
BUSINESS_ADDRESS_2 = findColumn(
thisRecord, new String[]);
BUSINESS_ADDRESS_3 = findColumn(
thisRecord, new String[]);
BUSINESS_CITY = findColumn(
thisRecord, new String[]);
BUSINESS_STATE = findColumn(
thisRecord, new String[]);
BUSINESS_ZIP = findColumn(
thisRecord, new String[]);
BUSINESS_COUNTRY = findColumn(
thisRecord, new String[]);
HOME_ADDRESS_1 = findColumn(
thisRecord, new String[]);
HOME_ADDRESS_2 = findColumn(
thisRecord, new String[]);
HOME_ADDRESS_3 = findColumn(
thisRecord, new String[]);
HOME_CITY = findColumn(
thisRecord, new String[]);
HOME_STATE = findColumn(
thisRecord, new String[]);
HOME_ZIP = findColumn(
thisRecord, new String[]);
HOME_COUNTRY = findColumn(
thisRecord, new String[]);
BUSINESS_PHONE = findColumn(
thisRecord, new String[]);
BUSINESS_PHONE_EXT = findColumn(
thisRecord, new String[]);
BUSINESS_2_PHONE = findColumn(
thisRecord, new String[]);
BUSINESS_FAX = findColumn(
thisRecord, new String[]);
HOME_PHONE = findColumn(
thisRecord, new String[]);
HOME_2_PHONE = findColumn(
thisRecord, new String[]);
HOME_FAX = findColumn(
thisRecord, new String[]);
MOBILE_PHONE = findColumn(
thisRecord, new String[]);
OTHER_PHONE = findColumn(
thisRecord, new String[]);
PAGER = findColumn(thisRecord, new String[]);
BUSINESS_EMAIL = findColumn(
thisRecord, new String[]);
PERSONAL_EMAIL = findColumn(
thisRecord, new String[]);
OTHER_EMAIL = findColumn(
thisRecord, new String[]);
NOTES = findColumn(thisRecord, new String[]);
EMPLOYEES = findColumn(
thisRecord, new String[]);
MODIFIED = findColumn(thisRecord, new String[]);
ENTERED = findColumn(thisRecord, new String[]);
LIST_SALUTATION = findColumn(thisRecord, new String[]);
SITE_ID = findColumn(thisRecord, new String[]);
NO_EMAIL = findColumn(thisRecord, new String[]);
NO_MAIL = findColumn(thisRecord, new String[]);
CONTACT_SOURCE = findColumn(thisRecord, new String[]);
TYPE_ID = findColumn(thisRecord, new String[]);
CLIENT_ID = findColumn(thisRecord, new String[]);
DEPARTMENT = findColumn(thisRecord, new String[]);

Import errors are created in a file called "import.out"

I typically call all of this with an ant script which makes things repeatable.

I'll organize this and post it in the wiki too.

4. 4/27/2011 7:05 AM EDT

Very useful tvm.

5. 4/27/2011 7:06 AM EDT

closed

5 results found