• Sunil Nandipati
  • NEWBIE
  • 25 Points
  • Member since 2006

  • Chatter
    Feed
  • 1
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 15
    Questions
  • 23
    Replies
I started working with the Command Line interface for Data Loader 13.0.  It runs fine, creates the extract file specified, but I get all blanks. 
 
2008-08-28 14:57:09,649 INFO  [csvExportUsers] progress.NihilistProgressAdapter
doneSuccess (NihilistProgressAdapter.java:55) - The extract has fully completed.
  There were 54 successful extracts and 0 errors.
 
File data:
 

"ID","USERNAME","LASTNAME","FIRSTNAME","","DEPARTMENT","TITLE","ISACTIVE","USERROLEID","PROFILEID","MANAGERID",""

"","","","","","","","","","","",""   ....etc for 54 rows.

Just looking to get a successful test with a user extract before inserting, etc.  Any ideas?

 

Thanks in advance.

 
  • August 28, 2008
  • Like
  • 0
I had a visualforce page which we are trying to replace for Lightning.
For each library in Salesforce, we created a custom object entry and had a link to an icon.  
Visualforce page would display all icons, and when clicked on an icon it would navigate to the Library.

Now with Lightning, we are having problems as we cannot use <a href> as stated in the lightning components developer documentation (page 706).

Recommendation is to use navigation events

Any suggestion on which one to use?

force:navigateToList - Navigates to a list view (NOT RELEVANT TO USECASE)
force:navigateToObjectHome - Navigates to an object home (NOT RELEVANT TO USECASE)
force:navigateToRelatedList - Navigates to a related list (NOT RELEVANT TO USECASE)
force:navigateToSObject - Navigates to a record 
force:navigateToURL - Navigates to a URL 
Running into tricky situations with Lead conversion.
My business case:  (1) Auto create Opportunity Lines from a prodcuts multi-select picklist on the Lead and (2) link the lead related records on the custom object (lookup relationship) to the newly created Opportunity and related Account (look ups again)

Having an Trigger on Lead After update - Checking if the record is marked as "Converted" and performing
- Line Items creation on Opportunities
- Linking the custom object to the newly created Opportunity and related Account

However the behavior we are noticing is, the opportunity lines are creating multiple times.
1 set for the real code
another sets for each occurence of the custom object link.

Looks like whenever we are trying to link the new opportunity to the custom object, the lead is getting updated (backend lastmodifieddate timestamp change) - and it is re-triggering.

We tried to use a flag, however during conversion and after conversion, lead is read-only and we cannot hv a flag.

Has anyone come across this scenario? how did you solve it? Any suggestions?
I am trying the Lightning ExpenseTracker app.

During Step 3 - Load the Expense Data, i am running into this error.

"This page has an error. You might just need to refresh it. Error during init [Assertion Failed!: Unknown controller action 'getExpenses' : undefined]"

Has anybody experienced the same?

We are planning to build a webpage which will use the REST API Webservice to connect to salesforce using one salesforce license.
So multiple users will try to access the webpage at a single time and try to retrieve their contact information and update them.

The question is
How many parallel sessions can i invoke using the REST API Webservice on a single license?

Thanks.
I merged 2 contacts using Apex 
merge contact 1, contact2;

Are all related objects reparented?
Just confirming since I am seeing some issues with some objects.
Can you correct me if i am missing something.  

My controller class

public with sharing class BillingAddresses {
 public List<Account> AccountsList {get;set;}
 public BillingAddresses() {
  AccountsList = [SELECT ID, Name, BillingStreet, BillingCity, BillingState, BillingPostalCode, BillingCountry FROM Account LIMIT 10];
 } 
}

----- VF Page

<apex:page sidebar="false" showHeader="false" cache="false" controller="BillingAddresses">
    <style>
      html, body, #map_canvas {
        margin: 0;
        padding: 0;
        height: 100%;
      }
    </style>
    
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>    
      <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true"></script>
    <script src="https://code.jquery.com/jquery-2.1.3.js"></script>
      
    <script>
        var map;       
                
        function initialize() {
            alert('Initializing');
            // set the map options in the format that V3 of googlemaps expects
            var mapOptions = {
                zoom: 4,
                center: new google.maps.LatLng(32.5206608,-86.80249),
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            
            // attach our map to the map_canvas div
            map = new google.maps.Map(document.getElementById('map_canvas'),mapOptions);
            
            // Pull the data in from the SOQL and use visualforce to create the javascript calls            
            <apex:repeat value="{!AccountsList}" var="Account">              
                
                showAddress("{!JSENCODE(Account.Name)}", "{!JSENCODE(Account.Name)}  <a href='../{!Account.id}' target='_blank'>Details</a>", "{!Account.BillingStreet}", "{!Account.BillingCity}","{!Account.BillingState}", "{!Account.BillingPostalCode}","{!Account.BillingCountry}");
                
            </apex:repeat>        
            
        } // function initialize()

        google.maps.event.addDomListener(window, 'load', initialize);
            
        function showAddress(title, content, street, city, state, postalcode, country) 
        {
        
            var address = street + city + state + postalcode + country;
                sforce.connection.sessionid = '{!$Api.Session_ID}';
                
                var geocoder = new google.maps.Geocoder();
                var geocoderRequest = { address: address }
                
                geocoder.geocode(geocoderRequest, function(results, status)
                {
                if(status == google.maps.GeocoderStatus.OK) 
                {
                    var googleAddress = results[0].formatted_address;
                    var Lat = results[0].geometry.location.lat();
                    var Long = results[0].geometry.location.lng();
                    
                }
                
                }
        
            // convert our raw values to the format that google expects                                 
            var latlng = new google.maps.LatLng(parseFloat(Lat), parseFloat(Long));
            
            if (latlng != null) {
                                            
                // create an info window            
                var infowindow = new google.maps.InfoWindow({
                    content: content
                });
                                            
                // Create a marker on the map                   
                var marker = new google.maps.Marker({
                    position: latlng,
                    map: map,
                    title: title                        
                });
                
                // Add an event to the marker so the info window will appear when it is clicked
                google.maps.event.addListener(marker, 'click', function() {
                    infowindow.open(map,marker);
                });
                                                        
            } // check for null latlng due an error parsing
                                            
        } // end show address    
        
                   
    </script>

    <div id="map_canvas" style="width: 100%; height: 100%"></div>

</apex:page>
 
I have two global classes, both implements Database.batchable

1. CleanDuplicateContacts
2. RestoreMergedContactInfo

#1 is kind of cleaning up my duplicates, so its merging records which in turn delete some contacts
#2 is parsing my recycle bin and find records that got deleted due to a merge and updating the winning record's custom field with the delete record's info.

now my question is 
i have scheduled both of them in a single schedulable class like this 

global class ScheduleRestoreMergedContactInfo implements Schedulable {
   global void execute(SchedulableContext sc) {
   
           System.Debug('Starting Cleanup');
           CleanDuplicateContacts controller1 = new CleanDuplicateContacts();
           Integer batchSize1 = 100;
           database.executebatch(controller1, batchSize1);
           System.Debug('Finished Cleanup');
           
           System.Debug('Starting Gathering Info');
        RestoreMergedContactInfo controller2 = new RestoreMergedContactInfo() ;
        Integer batchSize2 = 1000;
        database.executebatch(controller2 , batchSize2);
        System.Debug('Finished Gathering Info');  
    
   }
}

will this work? will they run one after another or in parallel?
Let me know.
I tested the merge from my developer console and it works

Contact FirstContact = [Select Id from Contact where Id = '003L000000Xoxxxxxx'];
Contact SecondContact = [Select Id from Contact where Id = '003L000000Xoyyyyyy'];
merge FirstContact SecondContact;

But when I use the code I wrote (Class -> Method) and try to execute it from the Developer console i get this error

System.DmlException: Merge failed. First exception on row 0 with id 003L000000Xoxxxxxx; first error: INVALID_FIELD_FOR_INSERT_UPDATE, Unable to create/update fields: LastModifiedDate. Please check the security settings of this field and verify that it is read/write for your profile or permission set.: [LastModifiedDate]

-------------------Code here------------------------

public with sharing class CleanDuplicateContacts {

    public static void MergeDupes ()
    {
        // Gather all Emails which have dupes first
        List<AggregateResult> aggrResult = [Select Email from Contact group by Email having count(Id) > 1];
        System.Debug('Number of Emails with Duplicates - ' + aggrResult.size());
        List<String> dupeEmails = New List<String>();
        
        for(AggregateResult ar:aggrResult)
        {            
            // accountIds.add((ID)results.get('accountId'));
            System.Debug('Email from Aggr Result - ' + (String)ar.get('Email'));
            dupeEmails.add((String)ar.get('Email'));
        }
        
        // Get all the record Details of the records with the above Emails
        List<Contact> lstContacts = [Select Id, Email, EXTERNAL_ID__c, Email_Subscriptions__c, Contact_Source__c, EMail_Preferences_Last_Modified_Date__c, LastModifiedDate 
                                                from Contact Where Email in :dupeEmails Order by Email, EMail_Preferences_Last_Modified_Date__c desc];
        System.Debug('Records to Work on Now - ' + lstContacts.size());
        //    List<Contact> updContacts = New List<Contact>();
        
        Contact FirstContact = New Contact();
        Contact SecondContact = New Contact();
        Contact WinContact = New Contact();
        
        String Temp_EXTERNALID;
        String Temp_EmailSubscriptions;
        String Temp_ContactSource;
        
        for(Integer cnt = 0; cnt < lstContacts.size(); cnt++)
        {
            System.Debug('Inside For Loop with Counter - ' + cnt);
            FirstContact = lstContacts.get(cnt);
            SecondContact = lstContacts.get(cnt+1);
            
            if(FirstContact.Email == SecondContact.Email)
                {
                    System.Debug('Both Emails match - ' + FirstContact.Email);
                    
                    if(
                        (FirstContact.EMail_Preferences_Last_Modified_Date__c != NULL && SecondContact.EMail_Preferences_Last_Modified_Date__c != NULL && FirstContact.EMail_Preferences_Last_Modified_Date__c >= SecondContact.EMail_Preferences_Last_Modified_Date__c)
                        ||
                        ((FirstContact.EMail_Preferences_Last_Modified_Date__c == NULL || SecondContact.EMail_Preferences_Last_Modified_Date__c == NULL) && FirstContact.LastModifiedDate >= SecondContact.LastModifiedDate)
                        )
                    {
                        System.Debug('FirstContact Preferences win');
                        
                        //Copy SecondContact details to temp variables to be copied over to master record
                        Temp_EXTERNALID = SecondContact.EXTERNAL_ID__c;
                        Temp_EmailSubscriptions = SecondContact.Email_Subscriptions__c;
                        Temp_ContactSource = SecondContact.Contact_Source__c;
                        
                        // Merge the record
                        System.Debug('Starting Merge');
                        System.Debug('First Contact Id - ' + FirstContact.Id);
                        System.Debug('Second Contact Id - ' + SecondContact.Id);
                        
                        merge FirstContact SecondContact;    // FAILS HERE :(
                        System.Debug('Merge Complete');
                        
                        //Copy the merged record details to surviving record
                        if(FirstContact.EXTERNAL_ID__c == NULL && Temp_EXTERNALID != NULL)
                        {
                            FirstContact.EXTERNAL_ID__c = Temp_EXTERNALID;
                        }
                        
                        FirstContact.Email_Subscriptions__c = Temp_EmailSubscriptions;
                        FirstContact.Contact_Source__c = Temp_ContactSource;    
                        
                        //Since SecondRecord is merged, we don't want to work on it now, so pass it ... increment the counter
                        cnt++;
                        System.Debug('Counter now changed to - ' + cnt);
                        
                    }
                    else if(
                        (FirstContact.EMail_Preferences_Last_Modified_Date__c != NULL && SecondContact.EMail_Preferences_Last_Modified_Date__c != NULL && FirstContact.EMail_Preferences_Last_Modified_Date__c < SecondContact.EMail_Preferences_Last_Modified_Date__c)
                        ||
                        ((FirstContact.EMail_Preferences_Last_Modified_Date__c == NULL || SecondContact.EMail_Preferences_Last_Modified_Date__c == NULL) && FirstContact.LastModifiedDate < SecondContact.LastModifiedDate)
                        )
                    {
                        System.Debug('SecondContact Preferences win');
                        
                        Temp_EXTERNALID = FirstContact.EXTERNAL_ID__c;
                        Temp_EmailSubscriptions = FirstContact.Email_Subscriptions__c;
                        Temp_ContactSource = FirstContact.Contact_Source__c;
                        
                        merge SecondContact FirstContact;
                        if(SecondContact.EXTERNAL_ID__c == NULL && Temp_EXTERNALID != NULL)
                        {
                            SecondContact.EXTERNAL_ID__c = Temp_EXTERNALID;
                        }
                        SecondContact.Email_Subscriptions__c = Temp_EmailSubscriptions;
                        SecondContact.Contact_Source__c = Temp_ContactSource;
                        
                    }
                    
                }    //If Email matches closing
            
            
        } // For Loop
        
        System.Debug('Out of For loop - Lets see if the updating the list works with merged records');
        update lstContacts;
            
    }
    
}
I have this code scheduled to run daily at 1PM EST.
But however when i see the Apex Jobs, it shows as queued and never has executed.
Any help would be appreciated.

Here is the code

global class ScheduleFlagBouncedEmail implements Schedulable 
{
  global void execute(SchedulableContext SC)
  {
    CheckForBouncedEmails chk = New CheckForBouncedEmails();
    chk.FlagContactMailingCode();
  }
}
--- And the Class and method called in the above code is something like this---

public class CheckForBouncedEmails
{
  public void FlagContactMailingCode()
  {
  // Get the Last Sync Date from the custom setting object
    ...
  // Grab the new records that bounced from the object where they are managed
    ...
  // Grab the Contacts now that bounced in the above list
    ...
  //check if its a business email or Home email, update the respective mail code to 'Bad Email - BE'
      ...
  // update the above in bulk    
      
  }// method close
} // class close

I scheduled the "ScheduleFlagBouncedEmail " by navigating to Apex Classes -> Schedule Apex -> gave a name and selected this class and selected every day and to run at 1PM for the entire month.
 

When i merge a record, i want to store the Id of the loosing/deleted record on the Merged/Winning record.

So I came across this documentation
https://www.salesforce.com/us/developer/docs/apexcode/Content/apex_triggers_merge_statements.htm

The following is the order of events when a merge occurs:

1.  The before delete trigger fires.
2.  The system deletes the necessary records due to the merge, assigns new parent records to the child records, and sets the MasterRecordId field on the deleted records.
3.  The after delete trigger fires.
4.  The system does the specific updates required for the master record. Normal update triggers apply.

-----------------------------------------------------------------------------------------------------------------------------------------

I created a custom field (text) on Contact and tried to put a after delete trigger like this

trigger RestoreMergedRecordInformation_Contact on Contact (after delete)
{
   
    Map<Id,String> mapMergeContacts = New Map<Id,String>();
    for(Contact delCon : Trigger.Old)
    {
        String oldString = mapMergeContacts.get(delCon.MasterRecordId);
        if(oldString != NULL)
        {
            oldString = oldString + String.valueOf(delCon.Id) + ';';
            mapMergeContacts.put(delCon.MasterRecordId,oldString);
        }
        else
        {
            mapMergeContacts.put(delCon.MasterRecordId,String.valueOf(delCon.Id) + ';');
        }
    }
   
    Set<Id> masterContactSet = New Set<Id>();
    masterContactSet = mapMergeContacts.keySet();
   
    List<Contact> masterContacts = [Select Id, Merged_Contacts__c from Contact Where Id in :masterContactSet];
    for(Contact thisCon : masterContacts)
    {
        thisCon.Merged_Contacts__c = mapMergeContacts.get(thisCon.Id);
        System.Debug('Id is - ' + thisCon.Id);
        System.Debug('Merged Contacts ' + mapMergeContacts.get(thisCon.Id));
    }
   
    update masterContacts;
}

Now I see I am getting an error since the winning record is being update ... error reads
"Apex trigger RestoreMergedRecordInformation_Contact caused an unexpected exception, contact your administrator: RestoreMergedRecordInformation_Contact: execution of AfterDelete caused by: System.DmlException: Update failed. First exception on row 0 with id 003xxxxxxxxxxxx; first error: SELF_REFERENCE_FROM_TRIGGER, Object 003xxxxxxxxxx is currently in a merge operation, therefore a trigger can not update it.: []: Trigger.RestoreMergedRecordInformation_Contact: line 56, column 1"

Experts, can you suggest if the trigger is being put on a wrong event (after delete).
Any suggestions?

How can i successfully connect to a remote server (SQL Server 2005). 

I created a system DSN connection and i am using the same.  My bean looks like this

 

<bean id="dbDataSource"
      class="org.apache.commons.dbcp.BasicDataSource"
      destroy-method="close">
    <property name="driverClassName" value="sun.jdbc.odbc.JdbcOdbcDriver"/>
    <property name="url" value="jdbc:odbc:FWDCRMOEP;databaseName=SFDCSTGCRM;selectMethod=cursor;"/>
    <property name="username" value="my_sql_username"/>
    <property name="password" value="my_sql_password"/>
</bean>

 ... and my error looks like this

 

11281 [CompanyMasterProcess] ERROR com.salesforce.dataloader.dao.database.DatabaseReader  - Database error encountered during setup of the database configuration: queryCompany.  Sql error: Invalid Fetch Size.
java.sql.SQLException: Invalid Fetch Size
 at sun.jdbc.odbc.JdbcOdbcStatement.setFetchSize(JdbcOdbcStatement.java:826)
 at org.apache.commons.dbcp.DelegatingStatement.setFetchSize(DelegatingStatement.java:276)
 at com.salesforce.dataloader.dao.database.DatabaseReader.setupQuery(DatabaseReader.java:140)
 at com.salesforce.dataloader.dao.database.DatabaseReader.open(DatabaseReader.java:109)
 at com.salesforce.dataloader.dao.database.DatabaseReader.open(DatabaseReader.java:97)
 at com.salesforce.dataloader.util.DAORowUtil.calculateTotalRows(DAORowUtil.java:59)
 at com.salesforce.dataloader.dao.database.DatabaseReader.getTotalRows(DatabaseReader.java:209)
 at com.salesforce.dataloader.action.AbstractLoadAction.<init>(AbstractLoadAction.java:83)
 at com.salesforce.dataloader.action.BasePartnerLoadAction.<init>(BasePartnerLoadAction.java:44)
 at com.salesforce.dataloader.action.UpsertAction.<init>(UpsertAction.java:47)
 at com.salesforce.dataloader.action.ActionFactory.getActionInstance(ActionFactory.java:77)
 at com.salesforce.dataloader.controller.Controller.executeAction(Controller.java:113)
 at com.salesforce.dataloader.process.ProcessRunner.run(ProcessRunner.java:130)
 at com.salesforce.dataloader.process.ProcessRunner.main(ProcessRunner.java:222)
11281 [CompanyMasterProcess] ERROR com.salesforce.dataloader.util.DAORowUtil  - Error Calculating Total Rows
com.salesforce.dataloader.exception.DataAccessObjectInitializationException: Database error encountered during setup of the database configuration: queryCompany.  Sql error: Invalid Fetch Size.
 at com.salesforce.dataloader.dao.database.DatabaseReader.setupQuery(DatabaseReader.java:148)
 at com.salesforce.dataloader.dao.database.DatabaseReader.open(DatabaseReader.java:109)
 at com.salesforce.dataloader.dao.database.DatabaseReader.open(DatabaseReader.java:97)
 at com.salesforce.dataloader.util.DAORowUtil.calculateTotalRows(DAORowUtil.java:59)
 at com.salesforce.dataloader.dao.database.DatabaseReader.getTotalRows(DatabaseReader.java:209)
 at com.salesforce.dataloader.action.AbstractLoadAction.<init>(AbstractLoadAction.java:83)
 at com.salesforce.dataloader.action.BasePartnerLoadAction.<init>(BasePartnerLoadAction.java:44)
 at com.salesforce.dataloader.action.UpsertAction.<init>(UpsertAction.java:47)
 at com.salesforce.dataloader.action.ActionFactory.getActionInstance(ActionFactory.java:77)
 at com.salesforce.dataloader.controller.Controller.executeAction(Controller.java:113)
 at com.salesforce.dataloader.process.ProcessRunner.run(ProcessRunner.java:130)
 at com.salesforce.dataloader.process.ProcessRunner.main(ProcessRunner.java:222)
Caused by: java.sql.SQLException: Invalid Fetch Size
 at sun.jdbc.odbc.JdbcOdbcStatement.setFetchSize(JdbcOdbcStatement.java:826)
 at org.apache.commons.dbcp.DelegatingStatement.setFetchSize(DelegatingStatement.java:276)
 at com.salesforce.dataloader.dao.database.DatabaseReader.setupQuery(DatabaseReader.java:140)
 ... 11 more
11281 [CompanyMasterProcess] FATAL com.salesforce.dataloader.process.ProcessRunner  - Database error encountered during setup of the database configuration: queryCompany.  Sql error: Invalid Fetch Size.

 

Plz advice.

My CLI has a SOQL with a '<' and a '>' condition.  Getting this error

 

110 [main] ERROR com.salesforce.lexiloader.process.ProcessConfig  - Error loading process: SFDCCaseExtractProcess configuration from config file: C:\Extraction\Beans\process-conf.xml
org.springframework.beans.factory.BeanDefinitionStoreException: Line 22 in XML document from file [C:\Extraction\Beans\process-conf.xml] is invalid; nested exception is org.xml.sax.SAXParseException: The value of attribute "value" associated with an element type "entry" must not contain the '<' character.
org.xml.sax.SAXParseException:

 

The value of attribute "value" associated with an element type "entry" must not contain the '<' character.
 

 

Is '<' operator not supported by CLI in a SOQL.

 

Is there a substitution variable i can use?

Plz suggest.

 

Regards

Sunil Nandipati.

I am facing a problem while running the java -jar email2case.jar ... can anyone help me with this.
My email2Case file is ...

<configFile>
   <server1>
       <url>https://exchange.xyz.com</url>
       <protocol>imap</protocol>
       <userName>sunil.nandipati@xyz.com</userName>
       <password>****</password>
       <interval>10</interval>
       <inbox>Inbox</inbox>
       <readbox>Read</readbox>
       <errorbox>Errors</errorbox>
   </server1>
</configFile>

and .. my config file is

<configFile>
   <sfdcLogin>
       <url>https://www.salesforce.com/services/Soap/u/6.0</url>
       <userName>nandipatisunil@gmail.com</userName>
       <password>****</password>
       <loginRefresh>30</loginRefresh>
       <timeout>600</timeout>
   </sfdcLogin>
   <notify>
       <notifyEmail>sunil.nandipati@xyz.com</notifyEmail>
       <from>sunil.nandipati@xyz.com</from>
       <host>https://exchange.xyz.com</host>
   <port>25</port>
       <user>sunil.nandipati@xyz.com</user>
       <password>****</password>
       <service>com.sforce.mail.SMTPNotification</service>
   </notify>
   <attachments>
       <largeAttachmentDirectory>C:\\EmailAgent\\</largeAttachmentDirectory>
       <largeAttachmentURLPrefix>C:\\EmailAgent\\</largeAttachmentURLPrefix>
       <largeAttachmentSize>5</largeAttachmentSize>
   </attachments>
   <services>
       <com.sforce.mail.EmailService>C:\\EmailAgent\\email2case.txt</com.sforce.mail.EmailService>
   </services>
</configFile>

And the error message is ....

2007-06-07 21:35:06,043 [main] INFO  ===========================================
=================================
2007-06-07 21:35:06,043 [main] INFO  Attempting to start service com.sforce.mail
.EmailService with configuration file C:\\EmailAgent\\email2case.txt
2007-06-07 21:35:08,346 [main] ERROR Failed to connect to SFDC service
com.sforce.ws.ConnectionException: Unexpected element. Parser was expecting elem
ent 'urn:partner.soap.sforce.com:accessibilityMode' but found 'urn:partner.soap.
sforce.com:currencySymbol'
       at com.sforce.ws.bind.TypeMapper.verifyTag(TypeMapper.java:272)
       at com.sforce.ws.bind.TypeMapper.verifyElement(TypeMapper.java:294)
       at com.sforce.soap.partner.wsc80.GetUserInfoResult.loadFields(GetUserInf
oResult.java:355)
       at com.sforce.soap.partner.wsc80.GetUserInfoResult.load(GetUserInfoResul
t.java:347)
       at com.sforce.ws.bind.TypeMapper.readSingle(TypeMapper.java:437)
       at com.sforce.ws.bind.TypeMapper.readObject(TypeMapper.java:362)
       at com.sforce.soap.partner.wsc80.LoginResult.loadFields(LoginResult.java
:236)
       at com.sforce.soap.partner.wsc80.LoginResult.load(LoginResult.java:203)
       at com.sforce.ws.bind.TypeMapper.readSingle(TypeMapper.java:437)
       at com.sforce.ws.bind.TypeMapper.readObject(TypeMapper.java:362)
       at com.sforce.soap.partner.wsc80.LoginResponse_element.loadFields(LoginR
esponse_element.java:68)
       at com.sforce.soap.partner.wsc80.LoginResponse_element.load(LoginRespons
e_element.java:59)
       at com.sforce.ws.bind.TypeMapper.readSingle(TypeMapper.java:437)
       at com.sforce.ws.bind.TypeMapper.readObject(TypeMapper.java:362)
       at com.sforce.ws.transport.SoapConnection.bind(SoapConnection.java:119)
       at com.sforce.ws.transport.SoapConnection.receive(SoapConnection.java:93
)
       at com.sforce.ws.transport.SoapConnection.send(SoapConnection.java:76)
       at com.sforce.soap.partner.wsc80.PartnerConnection.login(PartnerConnecti
on.java:499)
       at com.sforce.mail.GenericClient.login(GenericClient.java:264)
       at com.sforce.mail.GenericClient.getConnection(GenericClient.java:178)
       at com.sforce.mail.GenericClient.<init>(GenericClient.java:134)
       at com.sforce.mail.ImapClient.<init>(ImapClient.java:40)
       at com.sforce.mail.EmailService.loadService(EmailService.java:153)
       at com.sforce.SalesforceAgent.main(SalesforceAgent.java:139)
2007-06-07 21:35:08,376 [main] INFO  Will try 2 more time(s).


Appreciate any kind of help.

Rgds,
Sunil Nandipati.

I am required to show live Calendar info of a Microsoft Xchange in one of my SControls.
I also want to sync the Resources at both ends.
 
Is there a way i can do it either using the API or Outlook Synchronization?
 
As per my knowledge Outlook Synchronization supports only at a single user level.
Any suggestions please.
Biz case:  If amount field is Zero then a comments field becomes mandatory.
 
I want to make a custom field mandatory when one of the field is zero.
How can i do this?  Any ideas would be appreciated.
 
-Sunil.

Message Edited by Sunil Nandipati on 08-10-2006 12:30 AM

I am trying the Lightning ExpenseTracker app.

During Step 3 - Load the Expense Data, i am running into this error.

"This page has an error. You might just need to refresh it. Error during init [Assertion Failed!: Unknown controller action 'getExpenses' : undefined]"

Has anybody experienced the same?
Hi Friends,
After getting the data from other system can we  store data in cache memory without save in salesforce. that  cache data should be access in salesforce. Client wants this.
Is it possible ? Its urgent please suggest me. 

Thank you
Krish

 
Hi Friends,

We need to get the data from other system and update the same in salesforce on daily basis.
can we call the REST API or SOAP API in Batch apex and schedule the same ? any best practice for the same.
Its urgent please suggest me.

Regards,
Krish



 

When i merge a record, i want to store the Id of the loosing/deleted record on the Merged/Winning record.

So I came across this documentation
https://www.salesforce.com/us/developer/docs/apexcode/Content/apex_triggers_merge_statements.htm

The following is the order of events when a merge occurs:

1.  The before delete trigger fires.
2.  The system deletes the necessary records due to the merge, assigns new parent records to the child records, and sets the MasterRecordId field on the deleted records.
3.  The after delete trigger fires.
4.  The system does the specific updates required for the master record. Normal update triggers apply.

-----------------------------------------------------------------------------------------------------------------------------------------

I created a custom field (text) on Contact and tried to put a after delete trigger like this

trigger RestoreMergedRecordInformation_Contact on Contact (after delete)
{
   
    Map<Id,String> mapMergeContacts = New Map<Id,String>();
    for(Contact delCon : Trigger.Old)
    {
        String oldString = mapMergeContacts.get(delCon.MasterRecordId);
        if(oldString != NULL)
        {
            oldString = oldString + String.valueOf(delCon.Id) + ';';
            mapMergeContacts.put(delCon.MasterRecordId,oldString);
        }
        else
        {
            mapMergeContacts.put(delCon.MasterRecordId,String.valueOf(delCon.Id) + ';');
        }
    }
   
    Set<Id> masterContactSet = New Set<Id>();
    masterContactSet = mapMergeContacts.keySet();
   
    List<Contact> masterContacts = [Select Id, Merged_Contacts__c from Contact Where Id in :masterContactSet];
    for(Contact thisCon : masterContacts)
    {
        thisCon.Merged_Contacts__c = mapMergeContacts.get(thisCon.Id);
        System.Debug('Id is - ' + thisCon.Id);
        System.Debug('Merged Contacts ' + mapMergeContacts.get(thisCon.Id));
    }
   
    update masterContacts;
}

Now I see I am getting an error since the winning record is being update ... error reads
"Apex trigger RestoreMergedRecordInformation_Contact caused an unexpected exception, contact your administrator: RestoreMergedRecordInformation_Contact: execution of AfterDelete caused by: System.DmlException: Update failed. First exception on row 0 with id 003xxxxxxxxxxxx; first error: SELF_REFERENCE_FROM_TRIGGER, Object 003xxxxxxxxxx is currently in a merge operation, therefore a trigger can not update it.: []: Trigger.RestoreMergedRecordInformation_Contact: line 56, column 1"

Experts, can you suggest if the trigger is being put on a wrong event (after delete).
Any suggestions?
Hi all,

I am using Google Geocoding api v3 to get latitude and longitude of the address present on my record and I am able to do so but
sometimes I get "OVER QUERY LIMIT" as error message even though I am not exceeding the api limits which is 2500 request per 24 hrs.
And I am requesting geocode for 1 address only i.e. not running a loop. I am not able to figure it out why this so

  User-added image

Below is the class using which I make callouts

public Class LocationCallOuts {
   
    /**
     *  DESCRIPTION   :    This method will create Address to be passed to get Latitude and Longitude of Address provided.
     *                     This method will also check that street name is not null, If street name is null then request is not made
     */
    public static void checkAddress(List<Risk_Location__c> riskLocationList) {
        List<Risk_Location__c> locationList = new List<Risk_Location__c>();
        List<Risk_Location__c> addressNotFound = new List<Risk_Location__c>();
        String streetValue;
        LocationCallOuts riskLocCall = new LocationCallOuts();
        for(Risk_Location__c riskLoc : riskLocationList) {
           
            streetValue = riskLocCall.GetStreetName(riskLoc);
            if(streetValue != null && streetValue != '') {
                locationList.add(riskLoc);
            } else {
                riskLoc.Address_Not_Found__c = true;
                addressNotFound.add(riskLoc);
            }
        }
        if( addressNotFound.size() > 0) {
           
            update addressNotFound;
        }
        if( locationList.size() >0 ) {
            riskLocCall.GetLocation(locationList);
        }
    }
   
    /**
     *  DESCRIPTION :       This method will be called to return Street Number.
     */
    @TestVisible private String GetStreetNumber (Risk_Location__c locStreetNumber) {
        String streetNumber = '';
        if(locStreetNumber.Street_Number__c != null && locStreetNumber.Street_Number__c != '') {
            streetNumber += locStreetNumber.Street_Number__c + ',';
        }
        return streetNumber;
    }
   
    /**
     *  DESCRIPTION :       This method will be called to return Street Name.
     */
    @TestVisible private String GetStreetName (Risk_Location__c locStreetName) {
        String streetName ='';
        if(locStreetName.Location__c != null && locStreetName.Location__c != '') {
            streetName += locStreetName.Location__c + ',';
        }
        return streetName;
    }
   
    /**
     *  DESCRIPTION :       This method will be called to return Suburb.
     */
    @TestVisible private String GetSuburb (Risk_Location__c locSuburb) {
        String suburbName = '';
        if(locSuburb.Suburb__c != null && locSuburb.Suburb__c != '') {
            suburbName += locSuburb.Suburb__c + ',';
        }
        return suburbName;
    }
   
    /**
     *  DESCRIPTION :       This method will be called to return State.
     */
    @TestVisible private String GetState (Risk_Location__c locState) {
        String stateName = '';
        if(locState.State__c != null && locState.State__c != '') {
            stateName += locState.State__c + ',';
        }
        return stateName;
    }
   
    /**
     *  DESCRIPTION :       This method will be called to return Country.
     */
    @TestVisible private String GetCountry (Risk_Location__c locCountry) {
        String countryName = '';
        if(locCountry.Country__c != null && locCountry.Country__c != '') {
            countryName += locCountry.Country__c + '}';
        }
        return countryName;
    }
   
    /**
     *  DESCRIPTION   :    This method is called to make request to Google with the address and get the Latitude and Longitude and update Risk Location records
     */
     @TestVisible private void GetLocation(List<Risk_Location__c> riskLocationList) {
         double lat = null;
         double lng = null;
         String address = '';
         String formattedAddress = '';
         List<String> splitAddress;
         Risk_Location__c riskLocation = new Risk_Location__c();
        
         for( Risk_Location__c riskLoc : riskLocationList ) {
             splitAddress = new List<String>();
            
             address += '{';
             address += GetStreetNumber(riskLoc);
             address += GetStreetName(riskLoc);
             address += GetSuburb(riskLoc);
             address += GetState(riskLoc);
             address += GetCountry(riskLoc);
            
             Http h = new Http();
             HttpRequest req = new HttpRequest();
             req.setEndpoint('http://maps.googleapis.com/maps/api/geocode/json?address='+address+'&sensor=true');
             req.setMethod('GET');
            
             try {
                 HttpResponse res = h.send(req);
                
                 JSONParser parser = JSON.createParser(res.getBody());
                 system.debug('********* Resquest Body ********' + res.getBody());
                 Boolean addressFlag = false;
                 Boolean latlngFlag = false;
                 while(parser.nextToken() != null ) {
                    
                     if((parser.getCurrentToken() == JSONToken.FIELD_NAME) && (parser.getText() == 'formatted_address') && addressFlag == false ) {
                        parser.nextToken();
                        formattedAddress = parser.getText();
                        addressFlag = true;
                     }
                     if ((parser.getCurrentToken() == JSONToken.FIELD_NAME) && (parser.getText() == 'location') && latlngFlag == false ) {
                           parser.nextToken();
                           while (parser.nextToken() != JSONToken.END_OBJECT) {
                               String txt = parser.getText();
                               parser.nextToken();
                               if (txt == 'lat')
                                   lat = parser.getDoubleValue();
                               else if (txt == 'lng')
                                   lng = parser.getDoubleValue();
                               if(lat != null && lng != null)
                                    latlngFlag = true;
                           } // End of Inner While Loop
                    }
                 }// End of while Loop
                
                 splitAddress = address.split(',');
                 // If Lat and Lng is not Null and Formatted address is same as Provided, populate Google Address, Address_Not_Found__c and Approximate_Address__c on Risk Location
                 if( lat != null && lng != null ) {
                     // If Formatted address from Google is same as Address on Risk Location, populate Lat, Lng, Google Address and Uncheck Approximate_Address__c and Address_Not_Found__c
                     if((formattedAddress.toUpperCase()).contains((splitAddress[1].toUpperCase())) && (formattedAddress.toUpperCase()).contains((splitAddress[2].toUpperCase())) &&
                        ((formattedAddress.toUpperCase()).contains(('AU')) || (formattedAddress.toUpperCase()).contains(('AUS')) || (formattedAddress.toUpperCase()).contains(('AUSTRALIA')))) {
                        riskLoc.Geolocation__Latitude__s = lat;
                        riskLoc.Geolocation__Longitude__s = lng;
                        riskLoc.Google_Address__c = formattedAddress;
                        riskLoc.Approximate_Address__c = false;
                        riskLoc.Address_Not_Found__c = false;
                     }
                     // If Formatted Address is not same as Address on Risk Location then Polpulate Lat,Lng,Google Address and Check Approximate_Address true and Address_Not_Found = false
                     else {
                        riskLoc.Geolocation__Latitude__s = lat;
                        riskLoc.Geolocation__Longitude__s = lng;
                        riskLoc.Approximate_Address__c = true;
                        riskLoc.Address_Not_Found__c = false;
                        riskLoc.Google_Address__c = formattedAddress;
                     }
                 }
                 // If Lat Lng is Null then Clear Google Address, Lat, Lng and Check Address_Not_Found = true and Approximate_Address = false
                 else {
                    riskLoc.Geolocation__Latitude__s = lat;
                    riskLoc.Geolocation__Longitude__s = lng;
                    riskLoc.Google_Address__c = '';
                    riskLoc.Approximate_Address__c = false;
                    riskLoc.Address_Not_Found__c = true;
                 }
             } catch( Exception e) {
                 system.debug('== Exception Occured ====' + e.getMessage());
             }
             address = '';
         } // End of For Loop
       
         update riskLocationList;
     } // End of Method
    
}

Please help me with this

I have a report including some fields (checkbox) and when it is exported to excel, the value on this fiels is either 1 or 0 depending if the box is checked or not.  The users don't want to se numbers they want to see:  1= Yes or 0=No.  Do you know if there is any way to change the values of the checkbox when exporting?

How many times a trigger will be executed when try to insert 1000 records to a standard object like Accounts. How to test this? Thank you very much in advance.

How to Display UTC Time to all users?

 

 

Scenario:

I have a field called Case.Alert_TimeStamp__c

I store the UTC datetime incident occurence using API call from .NET code in this field.

The field displays the timestamp to each user in their local time based on their timezone setting.

All fine so far...

 

My users want to see the original UTC timestamp on the UI.

The workaround I am using right now is with Apex trigger and formatgmt function to store datetime value in a text field.

 

This takes away the ability to do proper sorting or queries based on time range.

 

I am looking for a solution to store UTC datetime as datetime data type and display the exact same value to all my users. (they are in different timezones)

 

 

I am really hoping to know that there is a simple solution to this... :)

 

Thanks in advance for any help with this!

 

  • February 23, 2010
  • Like
  • 0

My CLI has a SOQL with a '<' and a '>' condition.  Getting this error

 

110 [main] ERROR com.salesforce.lexiloader.process.ProcessConfig  - Error loading process: SFDCCaseExtractProcess configuration from config file: C:\Extraction\Beans\process-conf.xml
org.springframework.beans.factory.BeanDefinitionStoreException: Line 22 in XML document from file [C:\Extraction\Beans\process-conf.xml] is invalid; nested exception is org.xml.sax.SAXParseException: The value of attribute "value" associated with an element type "entry" must not contain the '<' character.
org.xml.sax.SAXParseException:

 

The value of attribute "value" associated with an element type "entry" must not contain the '<' character.
 

 

Is '<' operator not supported by CLI in a SOQL.

 

Is there a substitution variable i can use?

Plz suggest.

 

Regards

Sunil Nandipati.

Hi All,

 

I have successfully configured the dataloader to connect and insert data into an MS Access DB, however I am unable to extract information from the same DB.  When I attempt to read from the database I receive the following error:

 

3899 [accountUpsertProcess] ERROR com.salesforce.lexiloader.dao.database.DatabaseReader  - Database error encountered during setup of the database configuration: queryAccountAll.
Sql error: Invalid Fetch Size.
java.sql.SQLException: Invalid Fetch Size
        at sun.jdbc.odbc.JdbcOdbcStatement.setFetchSize(JdbcOdbcStatement.java:826)
        at org.apache.commons.dbcp.DelegatingStatement.setFetchSize(DelegatingStatement.java:276)
        at com.salesforce.lexiloader.dao.database.DatabaseReader.setupQuery(DatabaseReader.java:146)
        at com.salesforce.lexiloader.dao.database.DatabaseReader.open(DatabaseReader.java:115)
        at com.salesforce.lexiloader.dao.database.DatabaseReader.open(DatabaseReader.java:103)
        at com.salesforce.lexiloader.util.DAORowUtil.calculateTotalRows(DAORowUtil.java:59)
        at com.salesforce.lexiloader.dao.database.DatabaseReader.getTotalRows(DatabaseReader.java:214)
        at com.salesforce.lexiloader.action.AbstractLoadAction.<init>(AbstractLoadAction.java:90)
        at com.salesforce.lexiloader.action.BasePartnerLoadAction.<init>(BasePartnerLoadAction.java:44)
        at com.salesforce.lexiloader.action.UpsertAction.<init>(UpsertAction.java:47)
        at com.salesforce.lexiloader.action.ActionFactory.getActionInstance(ActionFactory.java:78)
        at com.salesforce.lexiloader.controller.Controller.executeAction(Controller.java:113)
        at com.salesforce.lexiloader.process.ProcessRunner.run(ProcessRunner.java:136)
        at com.salesforce.lexiloader.process.ProcessRunner.main(ProcessRunner.java:228)
3915 [accountUpsertProcess] ERROR com.salesforce.lexiloader.util.DAORowUtil  - Error Calculating Total Rows

 

Has anyone successfully configured a CLI process to extract data from Access?

Is there anyway to remove/hide the standard Save & New button on the edit page of Salesforce.

 

I don't want this action for my User and I don't have control over the standard edit page layout of Salesforce unlike the detail page layout. Please let me now if this is possible in some ways in the standard Salesforce page itself.

 

Regards,

Karthik.

I've enabled Contact History on Contacts.

 

Adding the related list to a page layout works fine, and I can see the field tracking.

 

But when I try to call Contact History in my VF page, I keep getting the error

 

'ContactHistory' is not a valid child relationship name for entity Contact'

 

I've downloaded my WSDL, and sure enough, it looks like ContactHistory is its own object.  No matter what I try, I can't get this to work.  

 

Running the code by itself works -- it's only when you run the page against an actual Contact that it blows up.

 

Here's the code.  Any help would be appreciated.

<apex:page standardController="Contact" showHeader="true" tabStyle="contact" > <style> .activeTab {background-color: #56458c; color:white; background-image:none; font-family: Verdana; font-size: 11px;} .inactiveTab { background-color: lightgrey; color:black; background-image:none font-family: Verdana; font-size: 11px;} .fontSize {font-size: 12px;) </style> <apex:detail relatedList="true" title="true"/> <apex:tabPanel switchType="client" selectedTab="tabdetails" id="ContactTabPanel" tabClass="activeTab" inactiveTabClass="inactiveTab" contentClass="fontSize"> <apex:tab label="Activity History" name="ActivityHistory" id="tabActHist"> <apex:relatedList subject="{!contact}" list="ActivityHistories" /> </apex:tab> <apex:tab label="Open Activities" name="OpenActivities" id="tabOpenAct"> <apex:relatedList subject="{!contact}" list="OpenActivities" /> </apex:tab> <apex:tab label="Opportunities" name="Opportunities" id="tabOpp"> <apex:relatedList subject="{!contact}" list="Opportunities" /> </apex:tab> <apex:tab label="Notes and Attachments" name="NotesAndAttachments" id="tabNoteAtt"> <apex:relatedList subject="{!contact}" list="NotesAndAttachments" /> </apex:tab> <apex:tab label="Contact History" name="ContactHistory" id="tabContactHist"> <apex:relatedList subject="{!contact.histories}" list="ContactHistory" /> </apex:tab> </apex:tabPanel> </apex:page>

 


 

I started working with the Command Line interface for Data Loader 13.0.  It runs fine, creates the extract file specified, but I get all blanks. 
 
2008-08-28 14:57:09,649 INFO  [csvExportUsers] progress.NihilistProgressAdapter
doneSuccess (NihilistProgressAdapter.java:55) - The extract has fully completed.
  There were 54 successful extracts and 0 errors.
 
File data:
 

"ID","USERNAME","LASTNAME","FIRSTNAME","","DEPARTMENT","TITLE","ISACTIVE","USERROLEID","PROFILEID","MANAGERID",""

"","","","","","","","","","","",""   ....etc for 54 rows.

Just looking to get a successful test with a user extract before inserting, etc.  Any ideas?

 

Thanks in advance.

 
  • August 28, 2008
  • Like
  • 0
When we run an Informatica workflow that is attempting to connect to SFDC we receive the following error:
 

Severity: INFO

Timestamp: 7/31/2007 1:00:55 PM

Node: Node01_Dev

Thread: READER_1_1_1

Process ID: 16514

Message Code: SFDC_31122

Message: [INFO] Account [integrations@andersencorp.com] logged on salesforce.com at [https://www.salesforce.com/services/Soap/u/7.0].

Severity: ERROR

Timestamp: 7/31/2007 1:00:55 PM

Node: Node01_Dev

Thread: READER_1_1_1

Process ID: 16514

Message Code: SFDC_31106

Message: [FATAL] GetServerTimestamp failed. User [integrations@andersencorp.com]. Fault code [SOAP-ENV:Server]. Reason [HTTP error].

Severity: ERROR

Timestamp: 7/31/2007 1:00:55 PM

Node: Node01_Dev

Thread: READER_1_1_1

Process ID: 16514

Message Code: SDKS_38200

Message: Partition-level [SQ_User]: Plug-in #310600 failed in run().

 
Any help would be greatly appreciated.
 
 
  • July 31, 2007
  • Like
  • 0
I am facing a problem while running the java -jar email2case.jar ... can anyone help me with this.
My email2Case file is ...

<configFile>
   <server1>
       <url>https://exchange.xyz.com</url>
       <protocol>imap</protocol>
       <userName>sunil.nandipati@xyz.com</userName>
       <password>****</password>
       <interval>10</interval>
       <inbox>Inbox</inbox>
       <readbox>Read</readbox>
       <errorbox>Errors</errorbox>
   </server1>
</configFile>

and .. my config file is

<configFile>
   <sfdcLogin>
       <url>https://www.salesforce.com/services/Soap/u/6.0</url>
       <userName>nandipatisunil@gmail.com</userName>
       <password>****</password>
       <loginRefresh>30</loginRefresh>
       <timeout>600</timeout>
   </sfdcLogin>
   <notify>
       <notifyEmail>sunil.nandipati@xyz.com</notifyEmail>
       <from>sunil.nandipati@xyz.com</from>
       <host>https://exchange.xyz.com</host>
   <port>25</port>
       <user>sunil.nandipati@xyz.com</user>
       <password>****</password>
       <service>com.sforce.mail.SMTPNotification</service>
   </notify>
   <attachments>
       <largeAttachmentDirectory>C:\\EmailAgent\\</largeAttachmentDirectory>
       <largeAttachmentURLPrefix>C:\\EmailAgent\\</largeAttachmentURLPrefix>
       <largeAttachmentSize>5</largeAttachmentSize>
   </attachments>
   <services>
       <com.sforce.mail.EmailService>C:\\EmailAgent\\email2case.txt</com.sforce.mail.EmailService>
   </services>
</configFile>

And the error message is ....

2007-06-07 21:35:06,043 [main] INFO  ===========================================
=================================
2007-06-07 21:35:06,043 [main] INFO  Attempting to start service com.sforce.mail
.EmailService with configuration file C:\\EmailAgent\\email2case.txt
2007-06-07 21:35:08,346 [main] ERROR Failed to connect to SFDC service
com.sforce.ws.ConnectionException: Unexpected element. Parser was expecting elem
ent 'urn:partner.soap.sforce.com:accessibilityMode' but found 'urn:partner.soap.
sforce.com:currencySymbol'
       at com.sforce.ws.bind.TypeMapper.verifyTag(TypeMapper.java:272)
       at com.sforce.ws.bind.TypeMapper.verifyElement(TypeMapper.java:294)
       at com.sforce.soap.partner.wsc80.GetUserInfoResult.loadFields(GetUserInf
oResult.java:355)
       at com.sforce.soap.partner.wsc80.GetUserInfoResult.load(GetUserInfoResul
t.java:347)
       at com.sforce.ws.bind.TypeMapper.readSingle(TypeMapper.java:437)
       at com.sforce.ws.bind.TypeMapper.readObject(TypeMapper.java:362)
       at com.sforce.soap.partner.wsc80.LoginResult.loadFields(LoginResult.java
:236)
       at com.sforce.soap.partner.wsc80.LoginResult.load(LoginResult.java:203)
       at com.sforce.ws.bind.TypeMapper.readSingle(TypeMapper.java:437)
       at com.sforce.ws.bind.TypeMapper.readObject(TypeMapper.java:362)
       at com.sforce.soap.partner.wsc80.LoginResponse_element.loadFields(LoginR
esponse_element.java:68)
       at com.sforce.soap.partner.wsc80.LoginResponse_element.load(LoginRespons
e_element.java:59)
       at com.sforce.ws.bind.TypeMapper.readSingle(TypeMapper.java:437)
       at com.sforce.ws.bind.TypeMapper.readObject(TypeMapper.java:362)
       at com.sforce.ws.transport.SoapConnection.bind(SoapConnection.java:119)
       at com.sforce.ws.transport.SoapConnection.receive(SoapConnection.java:93
)
       at com.sforce.ws.transport.SoapConnection.send(SoapConnection.java:76)
       at com.sforce.soap.partner.wsc80.PartnerConnection.login(PartnerConnecti
on.java:499)
       at com.sforce.mail.GenericClient.login(GenericClient.java:264)
       at com.sforce.mail.GenericClient.getConnection(GenericClient.java:178)
       at com.sforce.mail.GenericClient.<init>(GenericClient.java:134)
       at com.sforce.mail.ImapClient.<init>(ImapClient.java:40)
       at com.sforce.mail.EmailService.loadService(EmailService.java:153)
       at com.sforce.SalesforceAgent.main(SalesforceAgent.java:139)
2007-06-07 21:35:08,376 [main] INFO  Will try 2 more time(s).


Appreciate any kind of help.

Rgds,
Sunil Nandipati.

Biz case:  If amount field is Zero then a comments field becomes mandatory.
 
I want to make a custom field mandatory when one of the field is zero.
How can i do this?  Any ideas would be appreciated.
 
-Sunil.

Message Edited by Sunil Nandipati on 08-10-2006 12:30 AM

Dear All,

I installed the new version of email2case and i found that a lot of errors has been solved for us!
Very great work.

I'm experiencing a new problem that, sometime (about 1% of total), an email is not imported correctly into a case.
The case is opened, the Object is ok, but the body text of the email is not imported in the description field of the case.

Have you any suggestion ? Is this a known, little, bug ?
Thanks a lot for you support.
Best Regards,

Filippo