[SalesForce] Issue while using CLI dataloader

I am getting this error while running my process in CLI dataloader:

c:\Program Files\salesforce.com\Data Loader\bin>process.bat
accountExtract 2013-10-15 15:26:27,695 INFO [main]
controller.Controller initLog (Controller.java:389) – Using built-in
logging configuration, no log-conf.xml in c:\Program
Files\salesforce.com\Data Loader\bin\log-conf.xml 2013-10-15
15:26:27,712 INFO [main] controller.Controller initLog
(Controller.java:391) – The log has been initialized 2013-10-15
15:26:27,722 INFO [main] controller.Controller initConfig
(Controller.java:327) – config dir created at c:\Program
Files\salesforce.com\Da ta Loader\bin\accountExtract 2013-10-15
15:26:27,732 INFO [main] controller.Controller initConfig
(Controller.java:338) – config file created at c:\Program
Files\salesforce.com\D ata Loader\bin\accountExtract\config.properties
2013-10-15 15:26:27,761 INFO [main] controller.Controller initConfig
(Controller.java:355) – The controller config has been initialized
2013-10-15 15:26:27,766 INFO [main] process.ProcessRunner run
(ProcessRunner.java:116) – Initializing process engine 2013-10-15
15:26:27,772 INFO [main] process.ProcessRunner run
(ProcessRunner.java:119) – Loading parameters 2013-10-15 15:26:27,776
INFO [main] config.LastRun load (LastRun.java:96) – Last run info
will be saved in file: c:\Program Files\salesforce.com\Data
Loader\bin\accountExtract null_lastRun.properties
2013-10-15 15:26:27,806 FATAL [main] process.ProcessRunner topLevelError (ProcessRunner.java:238) – Unable to run process null

java.lang.RuntimeException: java.lang.IllegalArgumentException: No
enum const class com.salesforce.dataloader.action.OperationInfo.
at com.salesforce.dataloader.process.ProcessRunner.run(ProcessRunner.java:162)
at com.salesforce.dataloader.process.ProcessRunner.run(ProcessRunner.java:100)
at com.salesforce.dataloader.process.ProcessRunner.main(ProcessRunner.java:253)
Caused by: java.lang.IllegalArgumentException: No enum const class
com.salesforce.dataloader.action.OperationInfo.
at java.lang.Enum.valueOf(Unknown Source)
at com.salesforce.dataloader.config.Config.getEnum(Config.java:436)
at com.salesforce.dataloader.config.Config.getOperationInfo(Config.java:976)
at com.salesforce.dataloader.process.ProcessRunner.run(ProcessRunner.java:123)
… 2 more

This is the process-conf.xml file I am using:

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">                 
<beans>                 
    <bean id="accountExtract" class="com.salesforce.dataloader.process.ProcessRunner" singleton="false">                
        <description>To take test extract for Note Object</description>                 
        <property name="name" value="accountExtract"/>                  
        <property name="configOverrideMap">                 
           <map>                    
                <entry key="sfdc.debugMessages" value="true"/>      
                <entry key="sfdc.debugMessagesFile" value="E:\DoCss\Script Work\CLI-data loader\debuglog.log"/>         

                <entry key="sfdc.endpoint" value="https://servername.salesforce.com"/>  
                <entry key="sfdc.username" value="chirag.verma@servername"/>                                    
                <entry key="sfdc.password" value="944ef664cf45a36a56a9c9231f9c04f74e469aecd5114a7971458ad280d4cb56968fdeb048d283eea9ed9591e8253634"/>   
                <entry key="process.encryptonKeyFile" value="E:\DoCss\Script Work\CLI-data loader\key.txt"/>    

                <!-- <entry key="dataAccess.readBatchSize" value="200"/> -->    
                <entry key="sfdc.enableLastRunOutput" value="true"/>    
                <entry key="sfdc.extractionRequestSize" value="500"/> <!-- same as 'Query request size in DL' -->   

                <entry key="sfdc.truncateFields" value="true"/> 
                <!-- <entry key="" value=""/> -->   

                <entry key="sfdc.entity" value="Account"/>  
                <entry key="sfdc.extractionSOQL" value="SELECT Id FROM Account LIMIT 10000"/>   
                <entry key="process.operation" value="Extract"/>                    
                <entry key="dataAccess.name" value="E:\DoCss\Script Work\CLI-data loader\Note_Extract.csv"/>                    
                <entry key="dataAccess.type" value="csvWrite"/>                 
                <entry key="dataAccess.writeUTF8" value="true" />   

                <entry key="process.statusOutputDirectory" value="E:\DoCss\Script Work\CLI-data loader\logs_success-error"/>    
                <!--<entry key="process.outputSuccess" value="E:\DoCss\Script Work\CLI-data loader\logs_success-error\csvUpsertProcess_success.csv"/>   
                <entry key="process.outputError" value="E:\DoCss\Script Work\CLI-data loader\logs_success-error\csvUpsertProcess_error.csv"/>
           </map>                   
        </property>                 
    </bean>                 
</beans>

DataLoader ver. 27

Please help me ASAP if possible.

Best Answer

The key error appears to be mapping a Java Enum value to a value in XML config file.

java.lang.IllegalArgumentException: No enum const class com.salesforce.dataloader.action.OperationInfo. at java.lang.Enum.valueOf(Unknown Source)

Specifically the OperationInfo enum.

Having had a peak into this Enum I can see it requires the following values...

insert, 
update, 
upsert, 
delete, 
hard_delete, 
extract, 
extract_all

Since Java is case senstiive by default, the following part of your config will need to change to using a value from the above....

<entry key="process.operation" value="extract"/> 

The Salesforce documentation gives one example of this in this topic Data Loader Process Configuration Parameters.

enter image description here

However the linked topic, Data Loader Command Line Operations, gives only the labels of these values and not the actual config values needed, which I agree is confusing and misleading in the context from which the page was linked. Hopefully the above list gives future readers the mapping they need! :)

Related Topic