You need to sign in to do that
Don't have an account?
SFDC16
DUPLICATE_VALUE, duplicate value found while inserting record in web service
Hello developer.
I am getting an error while inserting record after parsing XML file in web services
Error:
System.DmlException: Upsert failed. First exception on row 1491; first error: DUPLICATE_VALUE, duplicate value found: BMCServiceDesk__Name__c duplicates value on record with id: a0K2v00000ovAav: []
Note: There is a no duplicate value found in the XML response file
Below is my code
String Username = 'demo';
String Password = 'demo';
HttpRequest req = new HttpRequest();
req.setMethod('POST');
req.setHeader('content-type','text/xml');
req.setHeader('');
req.setEndpoint('');
String body = '';
req.setBody(body);
Http http = new Http();
HTTPResponse res = new HTTPResponse();
res = http.send(req);
String responseBody=res.getBody();
System.debug('Response='+responseBody);
if(res.getStatusCode()==200)
{
List
<BMCServiceDesk__CMDB_Class__c> cmdbclass=[SELECT Id, Name, BMCServiceDesk__ClassID__c, BMCServiceDesk__ClassName__c, BMCServiceDesk__Class__c FROM BMCServiceDesk__CMDB_Class__c ];
List
<User> us=[Select id,name from user];
List
<BMCServiceDesk__BMC_BaseElement__c> listassets=new List<BMCServiceDesk__BMC_BaseElement__c>();
System.debug('Inside If Condition');
Dom.Document docx = new Dom.Document();
docx.load(responseBody);
Dom.XmlNode root = docx.getRootElement();
Dom.XmlNode[] childElements = root.getChildElements();
for(Dom.XmlNode child : childElements)
{
if(child.getName()=='body')
{
Dom.XmlNode GetAssetDetailsResponse = child.getChildElement('GetAssetDetailsResponse','http://tempuri.org/');
Dom.XmlNode GetAssetDetailsResult = GetAssetDetailsResponse.getChildElement('GetAssetDetailsResult','http://tempuri.org/');
Dom.XmlNode Customers = GetAssetDetailsResult.getChildElement('Root','');
system.debug('Customers------>'+Customers);
Dom.XmlNode[] Customer=Customers.getChildElements();
system.debug('Customer------->'+Customer);
Integer count=0;
for(Dom.XmlNode cust : Customer)
{
if(cust.getName()=='UserInfo')
{
System.debug('Userinfo------');
if(count>0)
{
Dom.XmlNode[] custasset=cust.getChildElements();
for(Dom.XmlNode c:custasset)
{
String assetId;
String resourcename;
String userinfo;
String classtype;
String referenceID;
if(C.getName()=='NAME')
{
userinfo=c.getText();
System.debug('userinfo---->'+userinfo);
}
if(c.getName()=='ResourceInfo')
{
Dom.XmlNode[] resourceInfochild=c.getChildElements();
for(Dom.XmlNode d:resourceInfochild)
{
System.debug('D------>'+d);
if(d.getName()=='RESOURCENAME')
{
resourcename=d.getText();
System.debug('resourcename---->'+resourcename);
}
if(d.getName()=='TYPENAME')
{
classtype=d.getText();
System.debug('classtype----->'+classtype);
}
if(d.getName()=='RESOURCEID')
{
referenceID=d.getName();
System.debug('referenceID------>'+referenceID);
}
}
}
if(resourcename!=null)
{
BMCServiceDesk__BMC_BaseElement__c base1=new BMCServiceDesk__BMC_BaseElement__c();
base1.BMCServiceDesk__Name__c=resourcename;
base1.BMCServiceDesk__PrimaryClient__c='0052v00000WzxmKAAR';
base1.BMCServiceDesk__CMDB_Class__c='a1y2v00000BikscAAB';
listassets.add(base1);
System.debug('listassets---->'+listassets);
}
}
}
}
count++;
}
}
}
if(listassets.size()>0)
{
System.debug('listassets---->'+listassets);
upsert listassets;
}
}
I am getting an error while inserting record after parsing XML file in web services
Error:
System.DmlException: Upsert failed. First exception on row 1491; first error: DUPLICATE_VALUE, duplicate value found: BMCServiceDesk__Name__c duplicates value on record with id: a0K2v00000ovAav: []
Note: There is a no duplicate value found in the XML response file
Below is my code
String Username = 'demo';
String Password = 'demo';
HttpRequest req = new HttpRequest();
req.setMethod('POST');
req.setHeader('content-type','text/xml');
req.setHeader('');
req.setEndpoint('');
String body = '';
req.setBody(body);
Http http = new Http();
HTTPResponse res = new HTTPResponse();
res = http.send(req);
String responseBody=res.getBody();
System.debug('Response='+responseBody);
if(res.getStatusCode()==200)
{
List
<BMCServiceDesk__CMDB_Class__c> cmdbclass=[SELECT Id, Name, BMCServiceDesk__ClassID__c, BMCServiceDesk__ClassName__c, BMCServiceDesk__Class__c FROM BMCServiceDesk__CMDB_Class__c ];
List
<User> us=[Select id,name from user];
List
<BMCServiceDesk__BMC_BaseElement__c> listassets=new List<BMCServiceDesk__BMC_BaseElement__c>();
System.debug('Inside If Condition');
Dom.Document docx = new Dom.Document();
docx.load(responseBody);
Dom.XmlNode root = docx.getRootElement();
Dom.XmlNode[] childElements = root.getChildElements();
for(Dom.XmlNode child : childElements)
{
if(child.getName()=='body')
{
Dom.XmlNode GetAssetDetailsResponse = child.getChildElement('GetAssetDetailsResponse','http://tempuri.org/');
Dom.XmlNode GetAssetDetailsResult = GetAssetDetailsResponse.getChildElement('GetAssetDetailsResult','http://tempuri.org/');
Dom.XmlNode Customers = GetAssetDetailsResult.getChildElement('Root','');
system.debug('Customers------>'+Customers);
Dom.XmlNode[] Customer=Customers.getChildElements();
system.debug('Customer------->'+Customer);
Integer count=0;
for(Dom.XmlNode cust : Customer)
{
if(cust.getName()=='UserInfo')
{
System.debug('Userinfo------');
if(count>0)
{
Dom.XmlNode[] custasset=cust.getChildElements();
for(Dom.XmlNode c:custasset)
{
String assetId;
String resourcename;
String userinfo;
String classtype;
String referenceID;
if(C.getName()=='NAME')
{
userinfo=c.getText();
System.debug('userinfo---->'+userinfo);
}
if(c.getName()=='ResourceInfo')
{
Dom.XmlNode[] resourceInfochild=c.getChildElements();
for(Dom.XmlNode d:resourceInfochild)
{
System.debug('D------>'+d);
if(d.getName()=='RESOURCENAME')
{
resourcename=d.getText();
System.debug('resourcename---->'+resourcename);
}
if(d.getName()=='TYPENAME')
{
classtype=d.getText();
System.debug('classtype----->'+classtype);
}
if(d.getName()=='RESOURCEID')
{
referenceID=d.getName();
System.debug('referenceID------>'+referenceID);
}
}
}
if(resourcename!=null)
{
BMCServiceDesk__BMC_BaseElement__c base1=new BMCServiceDesk__BMC_BaseElement__c();
base1.BMCServiceDesk__Name__c=resourcename;
base1.BMCServiceDesk__PrimaryClient__c='0052v00000WzxmKAAR';
base1.BMCServiceDesk__CMDB_Class__c='a1y2v00000BikscAAB';
listassets.add(base1);
System.debug('listassets---->'+listassets);
}
}
}
}
count++;
}
}
}
if(listassets.size()>0)
{
System.debug('listassets---->'+listassets);
upsert listassets;
}
}
Hi SFDC16,
Please Check Duplicate Rule and Trigger's Because I think something is working in backend.
if this solution is helpfull for you then mark it Best Answer