• Yoram Melnik
  • NEWBIE
  • 0 Points
  • Member since 2020

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 14
    Questions
  • 18
    Replies
Hi,
I am getting the following error message from Sales force when trying to deploy a zip file through metadata api.
I get a message that a few fields are "Not in package.xml". See the printout below.
The poblem is that all the fields are in package.xml that is deployed.
Will appreciate any help!
Yoram
From package.xml:

 <types>
        <members>Contact.Bigid_id_c</members>
        <name>CustomField</name>
    </types>
<types>
        <members>Contact.Ssn_c</members>
        <name>CustomField</name>
    </types>
<types>
        <members>IntegTestLarge__c.Country__c</members>
        <name>CustomField</name>
    </types>
    
    
    <types>
        <members>IntegTestLarge__c.Date_of_birth__c</members>
        <name>CustomField</name>
    </types>
    <types>
        <members>IntegTestLarge__c.Full_name__c</members>
        <name>CustomField</name>
    </types>
    
    <types>
        <members>IntegTestLarge__c.Id__c</members>
        <name>CustomField</name>
    </types>
    
    
    
    
    
    <types>
        <members>IntegTestLarge__c.Ssn__c</members>
        <name>CustomField</name>
    </types>
    
    <types>
        <members>IntegTestLarge__c.Zipcode__c</members>
        <name>CustomField</name>
    </types>




Error message from Salesforce metadata api:

2020-11-14 14:36:45.038  INFO 10608 --- [       Thread-5] BigIdSalesforceAppLogger                 : End of printErrors(). Errors: Final list of failures:
unpackaged/objects/Contact.object(Contact.bigid_id_c):Not in package.xml
unpackaged/objects/Contact.object(Contact.ssn_c):Not in package.xml
unpackaged/objects/IntegTestLarge__c.object(IntegTestLarge__c.country__c):Not in package.xml
unpackaged/objects/IntegTestLarge__c.object(IntegTestLarge__c.date_of_birth__c):Not in package.xml
unpackaged/objects/IntegTestLarge__c.object(IntegTestLarge__c.full_name__c):Not in package.xml
unpackaged/objects/IntegTestLarge__c.object(IntegTestLarge__c.id__c):Not in package.xml
unpackaged/objects/IntegTestLarge__c.object(IntegTestLarge__c.ssn__c):Not in package.xml
unpackaged/objects/IntegTestLarge__c.object(IntegTestLarge__c.zipcode__c):Not in package.xml

2020-11-14 14:36:45.039 ERROR 10608 --- [       Thread-5] BigIdSalesforceAppLogger                 : error log Stack trace:java.lang.Exception: The files were not successfully deployed
    at salesforceMetadataService.DeployMetada.deployZip(DeployMetada.java:97)
    at salesforceMetadataService.SalesforceMetadataService.deployAttributes(SalesforceMetadataService.java:188)
    at appController.BigIdSalesforceAppController.run(BigIdSalesforceAppController.java:251)

Hi,
I am trying to zip an unpackaged directory with package.xml and object files for deployment of metadata to Salesforce.
When I zip it manually nad deploy it everything works. Zipping programatically produces a "deployment success" message from SF but the relevant feilds are not update.
Below is a screenshot of both zip files. They are identical but the "packed" columns.

Would appreciate any help....
Thx
Yoram
This is my code for zipping:

/**
     * @Desc:   
     */ 
    public static void writeZipFile(File directoryToZip, List<File> fileList, String zipFilePathName) {

        try {
            FileOutputStream fos = new FileOutputStream(zipFilePathName);
            ZipOutputStream zos = new ZipOutputStream(fos);

            for (File file : fileList) {
                if (!file.isDirectory()) { // we only zip files, not directories
                    addToZip(directoryToZip, file, zos);
                }
            }
            zos.close();
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    /**
     * @Desc:   
     */ 
    public static void addToZip(File directoryToZip, File file, ZipOutputStream zos) throws FileNotFoundException,
    IOException {

        FileInputStream fis = new FileInputStream(file);

        // we want the zipEntry's path to be a relative path that is relative
        // to the directory being zipped, so chop off the rest of the path
        String zipFilePath = file.getCanonicalPath().substring(directoryToZip.getCanonicalPath().length() + 1,file.getCanonicalPath().length());
        System.out.println("Writing '" + zipFilePath + "' to zip file");
        ZipEntry zipEntry = new ZipEntry(zipFilePath);
        zipEntry.setCompressedSize(2);
        zos.putNextEntry(zipEntry);        

        byte[] bytes = new byte[1024];
        int length;
        while ((length = fis.read(bytes)) >= 0) {
            zos.write(bytes, 0, length);
        }

        zos.closeEntry();
        fis.close();
    }


Both zip files:

User-added image

HI,
I am trying to retrieve metadata  for Account object with ANT.
The zip file that is returned has less fields than the number of fields in the RetrieveRequest.
Below is the retrieveRequest before seding and the result zip received.
Would appreciate any help.
Thank you
Yoram

RetrieveRequest:
[RetrieveRequest  apiVersion='47.0'
 packageNames='{[0]}'
 singlePackage='false'
 specificFiles='{[0]}'
 unpackaged='[Package [Metadata  fullName='null'
]
 apiAccessLevel='null'
 description='null'
 namespacePrefix='null'
 objectPermissions='{[0]}'
 packageType='null'
 postInstallClass='null'
 setupWeblink='null'
 types='{[43][PackageTypeMembers  members='{[1]Account.AccountNumber,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Active__c,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.AnnualRevenue,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.BillingCity,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.BillingCountry,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.BillingPostalCode,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.BillingState,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.BillingStreet,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.CleanStatus,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.CreatedById,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.CreatedDate,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.CustomerPriority__c,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Description,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Fax,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Id,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Industry,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.IsDeleted,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.LastModifiedById,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.LastModifiedDate,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.LastReferencedDate,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.LastViewedDate,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Name,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.NumberOfEmployees,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.NumberofLocations__c,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.OwnerId,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Ownership,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Phone,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.PhotoUrl,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Rating,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.ShippingCity,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.ShippingCountry,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.ShippingPostalCode,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.ShippingState,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.ShippingStreet,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Sic,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.SLA__c,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.SLAExpirationDate__c,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.SLASerialNumber__c,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.SystemModstamp,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.TickerSymbol,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Type,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.UpsellOpportunity__c,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Website,}'
 name='CustomField'
]
,}'
 uninstallClass='null'
 version='47.0'
]
'
]

Result zip;

<?xml version="1.0" encoding="UTF-8"?>
<CustomObject xmlns="http://soap.sforce.com/2006/04/metadata">
    <fields>
        <fullName>AccountNumber</fullName>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
    <fields>
        <fullName>Active__c</fullName>
        <externalId>false</externalId>
        <label>Active</label>
        <required>false</required>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Picklist</type>
        <valueSet>
            <valueSetDefinition>
                <sorted>false</sorted>
                <value>
                    <fullName>No</fullName>
                    <default>false</default>
                    <label>No</label>
                </value>
                <value>
                    <fullName>Yes</fullName>
                    <default>false</default>
                    <label>Yes</label>
                </value>
            </valueSetDefinition>
        </valueSet>
    </fields>
    <fields>
        <fullName>AnnualRevenue</fullName>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
    <fields>
        <fullName>CleanStatus</fullName>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
    <fields>
        <fullName>CustomerPriority__c</fullName>
        <externalId>false</externalId>
        <label>Customer Priority</label>
        <required>false</required>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Picklist</type>
        <valueSet>
            <valueSetDefinition>
                <sorted>false</sorted>
                <value>
                    <fullName>High</fullName>
                    <default>false</default>
                    <label>High</label>
                </value>
                <value>
                    <fullName>Low</fullName>
                    <default>false</default>
                    <label>Low</label>
                </value>
                <value>
                    <fullName>Medium</fullName>
                    <default>false</default>
                    <label>Medium</label>
                </value>
            </valueSetDefinition>
        </valueSet>
    </fields>
    <fields>
        <fullName>Description</fullName>
        <securityClassification>Confidential</securityClassification>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
    <fields>
        <fullName>Fax</fullName>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
    <fields>
        <fullName>Industry</fullName>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Picklist</type>
    </fields>
    <fields>
        <fullName>Name</fullName>
        <trackFeedHistory>true</trackFeedHistory>
    </fields>
    <fields>
        <fullName>NumberOfEmployees</fullName>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
    <fields>
        <fullName>NumberofLocations__c</fullName>
        <externalId>false</externalId>
        <label>Number of Locations</label>
        <precision>3</precision>
        <required>false</required>
        <scale>0</scale>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Number</type>
        <unique>false</unique>
    </fields>
    <fields>
        <fullName>OwnerId</fullName>
        <trackFeedHistory>true</trackFeedHistory>
        <type>Lookup</type>
    </fields>
    <fields>
        <fullName>Ownership</fullName>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Picklist</type>
    </fields>
    <fields>
        <fullName>Phone</fullName>
        <complianceGroup>PCI</complianceGroup>
        <securityClassification>Confidential</securityClassification>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
    <fields>
        <fullName>Rating</fullName>
        <securityClassification>Confidential</securityClassification>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Picklist</type>
    </fields>
    <fields>
        <fullName>SLAExpirationDate__c</fullName>
        <externalId>false</externalId>
        <label>SLA Expiration Date</label>
        <required>false</required>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Date</type>
    </fields>
    <fields>
        <fullName>SLASerialNumber__c</fullName>
        <externalId>false</externalId>
        <label>SLA Serial Number</label>
        <length>10</length>
        <required>false</required>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Text</type>
        <unique>false</unique>
    </fields>
    <fields>
        <fullName>SLA__c</fullName>
        <externalId>false</externalId>
        <label>SLA</label>
        <required>false</required>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Picklist</type>
        <valueSet>
            <valueSetDefinition>
                <sorted>false</sorted>
                <value>
                    <fullName>Gold</fullName>
                    <default>false</default>
                    <label>Gold</label>
                </value>
                <value>
                    <fullName>Silver</fullName>
                    <default>false</default>
                    <label>Silver</label>
                </value>
                <value>
                    <fullName>Platinum</fullName>
                    <default>false</default>
                    <label>Platinum</label>
                </value>
                <value>
                    <fullName>Bronze</fullName>
                    <default>false</default>
                    <label>Bronze</label>
                </value>
            </valueSetDefinition>
        </valueSet>
    </fields>
    <fields>
        <fullName>Sic</fullName>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
    <fields>
        <fullName>TickerSymbol</fullName>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
    <fields>
        <fullName>Type</fullName>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Picklist</type>
    </fields>
    <fields>
        <fullName>UpsellOpportunity__c</fullName>
        <externalId>false</externalId>
        <label>Upsell Opportunity</label>
        <required>false</required>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Picklist</type>
        <valueSet>
            <valueSetDefinition>
                <sorted>false</sorted>
                <value>
                    <fullName>Maybe</fullName>
                    <default>false</default>
                    <label>Maybe</label>
                </value>
                <value>
                    <fullName>No</fullName>
                    <default>false</default>
                    <label>No</label>
                </value>
                <value>
                    <fullName>Yes</fullName>
                    <default>false</default>
                    <label>Yes</label>
                </value>
            </valueSetDefinition>
        </valueSet>
    </fields>
    <fields>
        <fullName>Website</fullName>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
</CustomObject>


 
Hi,
I am trying to update a metadata field and get an error as seen below.
Will appreciate any help!
Thx
Yoram

Below are 2 REST queries that I am performing.
1. The first on gets all the complianceGroup fields form fieldDefinition for a certain object.
From the query I get the complianceGroup Id and url.
2. The second one tires to patch a new value to the url and id received in the first query.

First select query:
https://um6.salesforce.com/services/data/v49.0/tooling/query/?q=Select+Id,+complianceGroup+From+FieldDefinition+WHERE+EntityDefinitionId+in('Account')

The result is:
Url: /services/data/v49.0/tooling/sobjects/FieldDefinition/Account.Fax
Id: 000000000000000AAA

Second select query:
Header: PATCH https://um6.salesforce.com/services/data/v49.0/tooling/sobjects/FieldDefinition/Account.Fax/000000000000000AAA HTTP/1.1

The result for this query is the following error:
[ {
  "errorCode" : "NOT_FOUND",
  "message" : "The requested resource does not exist"
} ]

This is the java code for the seocnd select query:
private void setComplianceGroupValue(String complianceUrl, String id, ArrayList<String> categories) throws ParseException, IOException, ResponseNotOKException {

        for (Iterator iterator = categories.iterator(); iterator.hasNext();) {
            String currentCagtegory = (String) iterator.next();

            //Set up the HTTP objects needed to make the request.
            HttpClient httpClient = HttpClientBuilder.create().build();
            HttpPatch patch = new HttpPatch(complianceUrl + "/" + id);
            Header oauthHeader = new BasicHeader("Authorization", "OAuth " + loginAccessToken);
            Header prettyPrintHeader = new BasicHeader("X-PrettyPrint", "1");    
            //Header xss = new BasicHeader(("X-XSS-Protection: 1; mode=block"), uri);
            patch.addHeader(oauthHeader);
            patch.addHeader(prettyPrintHeader);
            //patch.addHeader(xss);
            //patch.setHeader("Content-type", "application/json");

            JSONObject jasonCategory = new JSONObject();
            jasonCategory.put("id", id);
            jasonCategory.put("ComplianceGroup", currentCagtegory);
            
            
            StringEntity body = new StringEntity(jasonCategory.toString());
            
            body.setContentType ("application/json");
            //body.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
            patch.setEntity(body);
            // Make the request.
            HttpResponse response = httpClient.execute(patch);
            String getResult = EntityUtils.toString(response.getEntity());
            // if respone is not 200 (ok) than an exception is thrown
            proccessHttpResponse(response, complianceUrl+ "/" + id);
                
            LoggerSingelton.getInstance().getLogger().info("postAttributes result: {}. {}", getResult ,SalesforceRestService.class.getSimpleName());
        }
    }
 
Hi
I am writing an app that need to set a value to metadata of different fields in differrent Ojbect.
What I need to do is to get to a field in an Object like "Fax" or "Phone" in "Account" and set the metadata field for the specific field to a certain value.
Example: Set the complianceGroup of "Fax" in "Account" to  "PII" which id one of the picklist values.
I would appreciate help
Thx
Yoram
HI,
I am writing an app that need to synchronize metadata between Salesforce and a third system.
I tried using Ant metadata (someone sudgested that in a previous post) but I get bad results. The process within SF that retrieves and deploys the zip files is unclear to me and omits fields and objects. Also, the process involves intensive IO and is inefficient.
I think I understand that there are Objects and fields that cannot be updated.
I have 2 questions:
1. How can I configure SF to be able to update all fields and Objects?
2. What is the best api to do that? What about Api tooling?
Thank you
Yoram

HI,
I am writing an app that manipulates complianceGroup metadata in certain object using ANT metadata in a Java application.
I noticed that its impossible to set a complianceGroup to fields in User object. 

Why is that?
Are there other Objects that are the same? i.e, metada cannot be updated.
Thx
Yoram

HI,
I am deploying a zip file to update metadata of fields in different objects.
I get a successful message but the fields are not updated.
The api specified a parameter of zip base 64.
How can I convert the zip file to base 64?
Thx
Yoram

HI,
When retrieving fields through soap metadata retrieve funcions I get the following warning:
unpackaged/package.xml - Can't retrieve non-customizable CustomObject named: LoginGeo.
All other object were retrieved correctly and the zip file is written.
Is there a way to retrieve the fields from a "non-customizable" object?
Thank you
Yoram

Hi
I want to use Java to update a metadata field in different objects such as Lead, Conatct, etc...
I don't want to udate a the data of the picklist itself but just set the complianceGroup metadata for one of the entity's field to and existing data.
Which api should I use? any examples?
thx
Yoram

HI

I am trying to udate a field in "FieldDefinition" table. The field is complianceGroup.
I can't find a good resource or an example on how to update a field using rest api.
Currently I am getting a "HttpResponseProxy{HTTP/1.1 500 Server Error".
My method is shown below. Would appreciate any help.
I do authenticate correctly with Salesforce and get a "loginAcessToken"
Thx
Yoram

Header oauthHeader = new BasicHeader("Authorization", "OAuth " + loginAccessToken);
                    Header prettyPrintHeader = new BasicHeader("X-PrettyPrint", "1");
                    HttpClient httpClient = HttpClientBuilder.create().build();
                    
                    JSONObject curr = new JSONObject();
                    String CurrCategory = "BNNP";
                    String uri = "https://um6.salesforce.com/services/data/v48.0/sobjects/FieldDefinition/'Account.Fax'"
                    curr.putOnce("complianceGroup", CurrCategory);
                    
                    //Set up the HTTP objects needed to make the request.            
                    HttpPatch patch = new HttpPatch(uri);        
                    patch.addHeader(oauthHeader);
                    patch.setHeader("Content-type", "application/json");
                    //patch.addHeader(prettyPrintHeader);
                    
                    StringEntity params =new StringEntity(curr.toString());
                    params.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
                    patch.setEntity(params);
                    
                    // Make the request.
                    HttpResponse response = httpClient.execute(patch);
 

Hi,
I am writing a Java program that inserts new complianceGroup metadata.
My problem is that the metadata that is created is set to active but all the existing values in the table are set inactive and I am left with one ative item and all the rest inactive. The insert of the next item again does it again.
How can I insert them so that the existinh values will remain active?
below is my code.
Thanks
Yoram

for (int i = 0; i < newCategories.size(); i++) {

            StandardValueSet newSet = new StandardValueSet();
            newSet.setFullName(COMPLIANCE_GROUP);
            newSet.setStandardValue(new StandardValue[1]);
            
            StandardValue currValue = new StandardValue();
            currValue.setFullName(newCategories.get(i));
            currValue.setDefault(false);
            currValue.setDescription("Synched from BigId - " + LocalDateTime.now());
            currValue.setIsActive(true);
            currValue.setLabel(newCategories.get(i));
            currValue.setClosed(false);
            newSet.getStandardValue()[0] = currValue;

            // Name field with a type and label is required
            CustomField cf = new CustomField();
            cf.setType(FieldType.Picklist);
            cf.setLabel(newSet.getFullName() + " Name");
            //co.setNameField(cf);            

            UpsertResult[] results = metadataConnection.upsertMetadata(new Metadata[] { newSet });
           
        }
Hi,
I am writing a java application that need to manipulate metadata field values.
The types are:
1. Compliance Categorization - corresponds to the ComplianceGroup field on the FieldDefinition.
2. Data Sensitivity Level - corresponds to the SecurityClassification field on the FieldDefinition.

My app already obtains a MetadataConnection after authorisation and I want to start using the metadata api. 
How can I figure out the type of the fields listed above?
Thank you
Yoram
HI,
I want to manipulate picklist values for "Data Sensetivity" and "Compliance Categorization" list.
I would like to query the list from a Java application and have the ability to add and delete items from the list.
Thanks
Hi,
I am getting the following error message from Sales force when trying to deploy a zip file through metadata api.
I get a message that a few fields are "Not in package.xml". See the printout below.
The poblem is that all the fields are in package.xml that is deployed.
Will appreciate any help!
Yoram
From package.xml:

 <types>
        <members>Contact.Bigid_id_c</members>
        <name>CustomField</name>
    </types>
<types>
        <members>Contact.Ssn_c</members>
        <name>CustomField</name>
    </types>
<types>
        <members>IntegTestLarge__c.Country__c</members>
        <name>CustomField</name>
    </types>
    
    
    <types>
        <members>IntegTestLarge__c.Date_of_birth__c</members>
        <name>CustomField</name>
    </types>
    <types>
        <members>IntegTestLarge__c.Full_name__c</members>
        <name>CustomField</name>
    </types>
    
    <types>
        <members>IntegTestLarge__c.Id__c</members>
        <name>CustomField</name>
    </types>
    
    
    
    
    
    <types>
        <members>IntegTestLarge__c.Ssn__c</members>
        <name>CustomField</name>
    </types>
    
    <types>
        <members>IntegTestLarge__c.Zipcode__c</members>
        <name>CustomField</name>
    </types>




Error message from Salesforce metadata api:

2020-11-14 14:36:45.038  INFO 10608 --- [       Thread-5] BigIdSalesforceAppLogger                 : End of printErrors(). Errors: Final list of failures:
unpackaged/objects/Contact.object(Contact.bigid_id_c):Not in package.xml
unpackaged/objects/Contact.object(Contact.ssn_c):Not in package.xml
unpackaged/objects/IntegTestLarge__c.object(IntegTestLarge__c.country__c):Not in package.xml
unpackaged/objects/IntegTestLarge__c.object(IntegTestLarge__c.date_of_birth__c):Not in package.xml
unpackaged/objects/IntegTestLarge__c.object(IntegTestLarge__c.full_name__c):Not in package.xml
unpackaged/objects/IntegTestLarge__c.object(IntegTestLarge__c.id__c):Not in package.xml
unpackaged/objects/IntegTestLarge__c.object(IntegTestLarge__c.ssn__c):Not in package.xml
unpackaged/objects/IntegTestLarge__c.object(IntegTestLarge__c.zipcode__c):Not in package.xml

2020-11-14 14:36:45.039 ERROR 10608 --- [       Thread-5] BigIdSalesforceAppLogger                 : error log Stack trace:java.lang.Exception: The files were not successfully deployed
    at salesforceMetadataService.DeployMetada.deployZip(DeployMetada.java:97)
    at salesforceMetadataService.SalesforceMetadataService.deployAttributes(SalesforceMetadataService.java:188)
    at appController.BigIdSalesforceAppController.run(BigIdSalesforceAppController.java:251)

Hi,
I am trying to zip an unpackaged directory with package.xml and object files for deployment of metadata to Salesforce.
When I zip it manually nad deploy it everything works. Zipping programatically produces a "deployment success" message from SF but the relevant feilds are not update.
Below is a screenshot of both zip files. They are identical but the "packed" columns.

Would appreciate any help....
Thx
Yoram
This is my code for zipping:

/**
     * @Desc:   
     */ 
    public static void writeZipFile(File directoryToZip, List<File> fileList, String zipFilePathName) {

        try {
            FileOutputStream fos = new FileOutputStream(zipFilePathName);
            ZipOutputStream zos = new ZipOutputStream(fos);

            for (File file : fileList) {
                if (!file.isDirectory()) { // we only zip files, not directories
                    addToZip(directoryToZip, file, zos);
                }
            }
            zos.close();
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    /**
     * @Desc:   
     */ 
    public static void addToZip(File directoryToZip, File file, ZipOutputStream zos) throws FileNotFoundException,
    IOException {

        FileInputStream fis = new FileInputStream(file);

        // we want the zipEntry's path to be a relative path that is relative
        // to the directory being zipped, so chop off the rest of the path
        String zipFilePath = file.getCanonicalPath().substring(directoryToZip.getCanonicalPath().length() + 1,file.getCanonicalPath().length());
        System.out.println("Writing '" + zipFilePath + "' to zip file");
        ZipEntry zipEntry = new ZipEntry(zipFilePath);
        zipEntry.setCompressedSize(2);
        zos.putNextEntry(zipEntry);        

        byte[] bytes = new byte[1024];
        int length;
        while ((length = fis.read(bytes)) >= 0) {
            zos.write(bytes, 0, length);
        }

        zos.closeEntry();
        fis.close();
    }


Both zip files:

User-added image

HI,
I am trying to retrieve metadata  for Account object with ANT.
The zip file that is returned has less fields than the number of fields in the RetrieveRequest.
Below is the retrieveRequest before seding and the result zip received.
Would appreciate any help.
Thank you
Yoram

RetrieveRequest:
[RetrieveRequest  apiVersion='47.0'
 packageNames='{[0]}'
 singlePackage='false'
 specificFiles='{[0]}'
 unpackaged='[Package [Metadata  fullName='null'
]
 apiAccessLevel='null'
 description='null'
 namespacePrefix='null'
 objectPermissions='{[0]}'
 packageType='null'
 postInstallClass='null'
 setupWeblink='null'
 types='{[43][PackageTypeMembers  members='{[1]Account.AccountNumber,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Active__c,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.AnnualRevenue,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.BillingCity,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.BillingCountry,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.BillingPostalCode,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.BillingState,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.BillingStreet,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.CleanStatus,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.CreatedById,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.CreatedDate,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.CustomerPriority__c,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Description,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Fax,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Id,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Industry,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.IsDeleted,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.LastModifiedById,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.LastModifiedDate,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.LastReferencedDate,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.LastViewedDate,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Name,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.NumberOfEmployees,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.NumberofLocations__c,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.OwnerId,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Ownership,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Phone,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.PhotoUrl,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Rating,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.ShippingCity,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.ShippingCountry,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.ShippingPostalCode,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.ShippingState,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.ShippingStreet,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Sic,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.SLA__c,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.SLAExpirationDate__c,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.SLASerialNumber__c,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.SystemModstamp,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.TickerSymbol,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Type,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.UpsellOpportunity__c,}'
 name='CustomField'
]
,[PackageTypeMembers  members='{[1]Account.Website,}'
 name='CustomField'
]
,}'
 uninstallClass='null'
 version='47.0'
]
'
]

Result zip;

<?xml version="1.0" encoding="UTF-8"?>
<CustomObject xmlns="http://soap.sforce.com/2006/04/metadata">
    <fields>
        <fullName>AccountNumber</fullName>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
    <fields>
        <fullName>Active__c</fullName>
        <externalId>false</externalId>
        <label>Active</label>
        <required>false</required>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Picklist</type>
        <valueSet>
            <valueSetDefinition>
                <sorted>false</sorted>
                <value>
                    <fullName>No</fullName>
                    <default>false</default>
                    <label>No</label>
                </value>
                <value>
                    <fullName>Yes</fullName>
                    <default>false</default>
                    <label>Yes</label>
                </value>
            </valueSetDefinition>
        </valueSet>
    </fields>
    <fields>
        <fullName>AnnualRevenue</fullName>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
    <fields>
        <fullName>CleanStatus</fullName>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
    <fields>
        <fullName>CustomerPriority__c</fullName>
        <externalId>false</externalId>
        <label>Customer Priority</label>
        <required>false</required>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Picklist</type>
        <valueSet>
            <valueSetDefinition>
                <sorted>false</sorted>
                <value>
                    <fullName>High</fullName>
                    <default>false</default>
                    <label>High</label>
                </value>
                <value>
                    <fullName>Low</fullName>
                    <default>false</default>
                    <label>Low</label>
                </value>
                <value>
                    <fullName>Medium</fullName>
                    <default>false</default>
                    <label>Medium</label>
                </value>
            </valueSetDefinition>
        </valueSet>
    </fields>
    <fields>
        <fullName>Description</fullName>
        <securityClassification>Confidential</securityClassification>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
    <fields>
        <fullName>Fax</fullName>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
    <fields>
        <fullName>Industry</fullName>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Picklist</type>
    </fields>
    <fields>
        <fullName>Name</fullName>
        <trackFeedHistory>true</trackFeedHistory>
    </fields>
    <fields>
        <fullName>NumberOfEmployees</fullName>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
    <fields>
        <fullName>NumberofLocations__c</fullName>
        <externalId>false</externalId>
        <label>Number of Locations</label>
        <precision>3</precision>
        <required>false</required>
        <scale>0</scale>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Number</type>
        <unique>false</unique>
    </fields>
    <fields>
        <fullName>OwnerId</fullName>
        <trackFeedHistory>true</trackFeedHistory>
        <type>Lookup</type>
    </fields>
    <fields>
        <fullName>Ownership</fullName>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Picklist</type>
    </fields>
    <fields>
        <fullName>Phone</fullName>
        <complianceGroup>PCI</complianceGroup>
        <securityClassification>Confidential</securityClassification>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
    <fields>
        <fullName>Rating</fullName>
        <securityClassification>Confidential</securityClassification>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Picklist</type>
    </fields>
    <fields>
        <fullName>SLAExpirationDate__c</fullName>
        <externalId>false</externalId>
        <label>SLA Expiration Date</label>
        <required>false</required>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Date</type>
    </fields>
    <fields>
        <fullName>SLASerialNumber__c</fullName>
        <externalId>false</externalId>
        <label>SLA Serial Number</label>
        <length>10</length>
        <required>false</required>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Text</type>
        <unique>false</unique>
    </fields>
    <fields>
        <fullName>SLA__c</fullName>
        <externalId>false</externalId>
        <label>SLA</label>
        <required>false</required>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Picklist</type>
        <valueSet>
            <valueSetDefinition>
                <sorted>false</sorted>
                <value>
                    <fullName>Gold</fullName>
                    <default>false</default>
                    <label>Gold</label>
                </value>
                <value>
                    <fullName>Silver</fullName>
                    <default>false</default>
                    <label>Silver</label>
                </value>
                <value>
                    <fullName>Platinum</fullName>
                    <default>false</default>
                    <label>Platinum</label>
                </value>
                <value>
                    <fullName>Bronze</fullName>
                    <default>false</default>
                    <label>Bronze</label>
                </value>
            </valueSetDefinition>
        </valueSet>
    </fields>
    <fields>
        <fullName>Sic</fullName>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
    <fields>
        <fullName>TickerSymbol</fullName>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
    <fields>
        <fullName>Type</fullName>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Picklist</type>
    </fields>
    <fields>
        <fullName>UpsellOpportunity__c</fullName>
        <externalId>false</externalId>
        <label>Upsell Opportunity</label>
        <required>false</required>
        <trackFeedHistory>false</trackFeedHistory>
        <type>Picklist</type>
        <valueSet>
            <valueSetDefinition>
                <sorted>false</sorted>
                <value>
                    <fullName>Maybe</fullName>
                    <default>false</default>
                    <label>Maybe</label>
                </value>
                <value>
                    <fullName>No</fullName>
                    <default>false</default>
                    <label>No</label>
                </value>
                <value>
                    <fullName>Yes</fullName>
                    <default>false</default>
                    <label>Yes</label>
                </value>
            </valueSetDefinition>
        </valueSet>
    </fields>
    <fields>
        <fullName>Website</fullName>
        <trackFeedHistory>false</trackFeedHistory>
    </fields>
</CustomObject>


 
HI,
I am writing an app that need to synchronize metadata between Salesforce and a third system.
I tried using Ant metadata (someone sudgested that in a previous post) but I get bad results. The process within SF that retrieves and deploys the zip files is unclear to me and omits fields and objects. Also, the process involves intensive IO and is inefficient.
I think I understand that there are Objects and fields that cannot be updated.
I have 2 questions:
1. How can I configure SF to be able to update all fields and Objects?
2. What is the best api to do that? What about Api tooling?
Thank you
Yoram
HI,
I am deploying a zip file to update metadata of fields in different objects.
I get a successful message but the fields are not updated.
The api specified a parameter of zip base 64.
How can I convert the zip file to base 64?
Thx
Yoram

HI,
When retrieving fields through soap metadata retrieve funcions I get the following warning:
unpackaged/package.xml - Can't retrieve non-customizable CustomObject named: LoginGeo.
All other object were retrieved correctly and the zip file is written.
Is there a way to retrieve the fields from a "non-customizable" object?
Thank you
Yoram

Hi
I want to use Java to update a metadata field in different objects such as Lead, Conatct, etc...
I don't want to udate a the data of the picklist itself but just set the complianceGroup metadata for one of the entity's field to and existing data.
Which api should I use? any examples?
thx
Yoram

HI

I am trying to udate a field in "FieldDefinition" table. The field is complianceGroup.
I can't find a good resource or an example on how to update a field using rest api.
Currently I am getting a "HttpResponseProxy{HTTP/1.1 500 Server Error".
My method is shown below. Would appreciate any help.
I do authenticate correctly with Salesforce and get a "loginAcessToken"
Thx
Yoram

Header oauthHeader = new BasicHeader("Authorization", "OAuth " + loginAccessToken);
                    Header prettyPrintHeader = new BasicHeader("X-PrettyPrint", "1");
                    HttpClient httpClient = HttpClientBuilder.create().build();
                    
                    JSONObject curr = new JSONObject();
                    String CurrCategory = "BNNP";
                    String uri = "https://um6.salesforce.com/services/data/v48.0/sobjects/FieldDefinition/'Account.Fax'"
                    curr.putOnce("complianceGroup", CurrCategory);
                    
                    //Set up the HTTP objects needed to make the request.            
                    HttpPatch patch = new HttpPatch(uri);        
                    patch.addHeader(oauthHeader);
                    patch.setHeader("Content-type", "application/json");
                    //patch.addHeader(prettyPrintHeader);
                    
                    StringEntity params =new StringEntity(curr.toString());
                    params.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
                    patch.setEntity(params);
                    
                    // Make the request.
                    HttpResponse response = httpClient.execute(patch);