Skip to content

Thys Michels Blog

{ cloud developer @ amazon }

Tag: metadata

Salesforce export metadata to csv

Exporting salesforce metadata to csv, iterate through SObject and fields and show Label, API Name, FLS, Custom/Standard field.

package com.app.salesforce.metadata;

import com.app.salesforce.file.FileService;
import com.sforce.soap.partner.*;
import com.sforce.ws.ConnectionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;

/**
 * Created by thysmichels on 11/7/16.
 */

@Service
public class MetadataService {

   @Autowired
   PartnerConnection partnerConnection;

    @Autowired
    FileService fileService;

   public void exportSObjectMetadata() throws ConnectionException, IOException {
       DescribeGlobalResult describeMetadataResult = partnerConnection.describeGlobal();
       DescribeGlobalSObjectResult[] sObjectResults = describeMetadataResult.getSobjects();
       String csvFile = "export/sobjectMetadata.csv";
       FileWriter writer = new FileWriter(csvFile);
       fileService.writeLine(writer, Arrays.asList("Label", "API Name", "Custom", "Label", "API Name", "Custom", "FLS"));
       for (DescribeGlobalSObjectResult sObjectResult : sObjectResults){
           if (sObjectResult.isCreateable() && sObjectResult.isQueryable()){
               DescribeSObjectResult describeSObjectResult = partnerConnection.describeSObject(sObjectResult.getName());
               for (Field field : describeSObjectResult.getFields()){
                   fileService.writeLine(writer, Arrays.asList(sObjectResult.getLabel(), sObjectResult.getName(), String.valueOf(sObjectResult.isCustom()), field.getLabel(),field.getName(), String.valueOf(field.isCustom()), String.valueOf(field.isPermissionable())));
               }
           }
       }

       writer.flush();
       writer.close();

   }


    public void updateCsvSObjectMetadata() throws ConnectionException, IOException {
        String csvFile = "import/sobjectFLS.csv";
        Map<String, DescribeGlobalSObjectResult> mapOfGlobalDescibeSObjectResult = new HashMap<>();
        Map<String, Map<String, MetadataModel>> metadataModelMapMap = new HashMap<>();

        DescribeGlobalResult describeMetadataResult = partnerConnection.describeGlobal();

        DescribeGlobalSObjectResult[] sObjectResults = describeMetadataResult.getSobjects();
        for (DescribeGlobalSObjectResult sObjectResult : sObjectResults) {
            if (sObjectResult.isCreateable()) {
                mapOfGlobalDescibeSObjectResult.put(sObjectResult.getLabel(), sObjectResult);
            }
        }

   
        for (DescribeGlobalSObjectResult sObjectResult : sObjectResults){
            if (sObjectResult.isCreateable() && sObjectResult.isQueryable()) {

                DescribeSObjectResult describeSObjectResult = partnerConnection.describeSObject(sObjectResult.getName());
                Map<String, MetadataModel> metadataModelMap = new HashMap<>();
                for (Field field : describeSObjectResult.getFields()) {
                    MetadataModel metadataModel = new MetadataModel();
                    metadataModel.setObjectLabel(sObjectResult.getLabel());
                    metadataModel.setObjectApi(sObjectResult.getName());
                    metadataModel.setObjectIsCustom(sObjectResult.isCustom());
                    metadataModel.setFieldLabel(field.getLabel());
                    metadataModel.setFieldApi(field.getName());
                    metadataModel.setFieldIsCustom(field.isCustom());
                    metadataModel.setIsFLS(field.isPermissionable());
                    metadataModelMap.put(field.getLabel(), metadataModel);
                }
                metadataModelMapMap.put(sObjectResult.getLabel(), metadataModelMap);

            }
        }

        String csvFileExport = "export/sobjectFLSCopy.csv";
        FileWriter writer = new FileWriter(csvFileExport);
        fileService.writeLine(writer, Arrays.asList("Object Label", "Object API Name", "Custom object (Y/N)", "Field Label", "Field API Name", "Custom Field (Y/N)", "Is Field Settable (Y/N) done 11/6","Used / System?","Encrypted","Administrator","Client Services","Community User","Developer","Executive","Marketing","Product Management","Production Support","Integration","System Administrator Clone","Client Service Manager","View Encrypted Data","Goals","Financial Accounts","Financial Planning","Portfolio Management","Case Management","Goals - Read Write","Financial Accounts - Read Write","Financial Planning - Read Write","Portfolio Management - Read Write","Case Management - Read Write"));

        Scanner scanner = new Scanner(new File(csvFile));
        scanner.nextLine();
        while (scanner.hasNext()) {

            List<String> line = fileService.parseLine(scanner.nextLine());
            
                if (metadataModelMapMap.get(line.get(0))!=null && metadataModelMapMap.get(line.get(0)).get(line.get(3))!=null){
                    fileService.writeLine(writer, Arrays.asList(line.get(0), metadataModelMapMap.get(line.get(0)).get(line.get(3)).getObjectApi(), metadataModelMapMap.get(line.get(0)).get(line.get(3)).getObjectIsCustom().toString(), line.get(3), metadataModelMapMap.get(line.get(0)).get(line.get(3)).getFieldApi(), metadataModelMapMap.get(line.get(0)).get(line.get(3)).getFieldIsCustom().toString(), metadataModelMapMap.get(line.get(0)).get(line.get(3)).getIsFLS().toString(), line.get(7),line.get(8),line.get(9),line.get(10),line.get(11),line.get(12),line.get(13),line.get(14),line.get(15),line.get(16),line.get(17),line.get(18),line.get(19),line.get(20),line.get(21),line.get(22),line.get(23),line.get(24),line.get(25),line.get(26),line.get(27),line.get(28),line.get(29),line.get(30)));
                } else {
                    System.out.println(line.get(0) +  "--> " + line.get(3));
                }
        }
        scanner.close();

        writer.flush();
        writer.close();
    }
}

Output

Case	Case	false	Case ID	Id	false	false
Case	Case	false	Deleted	IsDeleted	false	false
Case	Case	false	Case Number	CaseNumber	false	false
Case	Case	false	Client Name	ContactId	false	true
Case	Case	false	Household	AccountId	false	true

Rate this:

Share this:

  • Email
  • Tumblr
  • Twitter
  • Facebook
  • LinkedIn

Like this:

Like Loading...
Thys Michels Java, Salesforce Leave a comment June 14, 2017 3 Minutes
  • Follow Following
    • Thys Michels Blog
    • Join 101 other followers
    • Already have a WordPress.com account? Log in now.
    • Thys Michels Blog
    • Customize
    • Follow Following
    • Sign up
    • Log in
    • Report this content
    • View site in Reader
    • Manage subscriptions
    • Collapse this bar
%d bloggers like this: