• sushanto_dodo
  • NEWBIE
  • 0 Points
  • Member since 2013

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 5
    Questions
  • 6
    Replies

Can someone kindly provide an outline on how can we set object permissions for a profile using ANT migration toolkit for Salesforce?

 

I have the following process-conf.xml file which is located in bin directory of dataloader.

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
        <bean id="userextractProcess"
            class="com.salesforce.dataloader.process.ProcessRunner" singleton="false" lazy-init="default" autowire="default" dependency-check="default">
            <description>userextractjob gets user info from salesforce and saves info into a CSV file."</description>
            <property name="name" value="userextractProcess" />
             <property name="configOverrideMap">
             <map>
            <entry key="sfdc.debugMessages" value="false" />
            <entry key="sfdc.debugMessagesFile" value="c:\dataloader\samples\status\sfdcSoapTrace.log" />
            <entry key="sfdc.endpoint" value="https://test.salesforce.com" />
            <entry key="sfdc.username" value="**************" />
            <entry key="sfdc.password" value="**********" />
            <entry key="sfdc.timeoutSecs" value="600" />
            <entry key="sfdc.loadBatchSize" value="200" />
            <entry key="sfdc.entity" value="User" />
            <entry key="sfdc.extractionRequestSize" value="500" />
            <entry key="sfdc.extractionSOQL" value="Select Id, Username, LastName, FirstName, Name FROM User WHERE IsActive = true " />
            <entry key="process.operation" value="extract" />
            <entry key="dataAccess.type" value="csvWrite" />
            <entry key="dataAccess.name" value="c:\test\users.csv" />
            </map>
            </property>
        </bean>

 

The process.bat file is also in the same directory. I have traversed to the bin directory in Command prompt and trying to run this command

process ..userextractProcess but it gives the following error:

Unable to run process null

 

Can someone please advise. ?

 

 

 

 

Hello,

Does anyone have the idea whether we can migrate the translations for different languages from one salesforce environment to another salesforce environments using the Metadata API? If so , then can you kindly advise how it can be done and how to create the package.xml for it. Would be of great help.

I have the folllowing code and i get the invalid session Id exception.  How to remove it ? Can someone please assist? I am new to use salesforce metadata API. The line highlighted in RED  is where the exception is raised.

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.IO.Compression;
using System.Text;
using WebApplication1.WebReference;
using WebApplication1.SFMetadata;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {

        public const double API_VERSION = 23.0;

        private WebApplication1.WebReference.SforceService sf { get; set; }
        private WebApplication1.WebReference.LoginResult lr { get; set; }
        private GetUserInfoResult userInfo { get; set; }

        private MetadataService metaService { get; set; }
        private List<FileProperties> lstFp { get; set; }
        private RetrieveResult result { get; set; }



        private List<String> lstSObjects = new List<String>();
        private List<CustomField> lstFields = new List<CustomField>();



        // Retrieve all SObjects
        private void retrieveSObjects()
        {
            try
            {
                DescribeGlobalResult dgr = sf.describeGlobal();

                DescribeGlobalSObjectResult[] dgsr = dgr.sobjects;
                foreach (DescribeGlobalSObjectResult d in dgr.sobjects)
                {
                    lstSObjects.Add(d.name);
                    Response.Write("object name:" + d.name);
                }
            }
            catch (Exception e)
            {
                Response.Write("Could not retrieve the Sobjects from Salesforce. " + e.Message);
            }
            //check

            //check
        }








        protected void Button1_Click(object sender, EventArgs e)
        {

            SforceService sfService = new SforceService();
            MetadataService ms = new MetadataService();
            LoginResult lResult = new LoginResult();
            GetUserInfoResult uInfo = new GetUserInfoResult();

            sf = new WebApplication1.WebReference.SforceService();
            lr = new WebApplication1.WebReference.LoginResult();
            metaService = new MetadataService();
            userInfo = new GetUserInfoResult();
            lResult = sfService.login("sushanto.dodo@gmail.com", "sushanto14#2vk4KTBFv94mOHKUvZKkJ4Gpc");
            sfService.Url = lResult.serverUrl;
            Response.Write("URL : " + lResult.serverUrl);
            WebReference.SessionHeader hd = new WebReference.SessionHeader();
            hd.sessionId = lResult.sessionId;
            sfService.SessionHeaderValue = hd;
            Response.Write("\nSessionID"+lResult.sessionId+"\n");

            this.sf = sfService;
            this.lr = lResult;
            this.userInfo = uInfo;
            this.metaService = ms;
            Response.Write("logged in");


            // getProfile();
            // getUser();
            retrieveSObjects();
           String strFolder = "Profile";
            String pckgType = "Profile";

            List<ProfileObjectPermissions> lstProfObjPerm = new List<ProfileObjectPermissions>();
            List<PackageTypeMembers> lstPtm = new List<PackageTypeMembers>();
            foreach (String s in lstSObjects)
            {
                SFMetadata.ProfileObjectPermissions profObjPerm = new SFMetadata.ProfileObjectPermissions();
                profObjPerm.@object = s;
                lstProfObjPerm.Add(profObjPerm);

                SFMetadata.PackageTypeMembers objPckTypMembers = new SFMetadata.PackageTypeMembers();
                List<String> lstMembers = new List<String>();
                lstMembers.Add(s);
                objPckTypMembers.members = lstMembers.ToArray();
                lstPtm.Add(objPckTypMembers);

            }

            Package pck = new Package();
            pck.types = lstPtm.ToArray();

            SFMetadata.Profile objProfile = new SFMetadata.Profile();

            objProfile.objectPermissions = lstProfObjPerm.ToArray();

            // Call the methods to retrieve the profiles and zip file
            // REPLACED  THE LIST PACKAGE METHOD

            // can't use wildcards with reports, so need to fetch the list
            // of ReportFolders first, then fetch all the reports in
            // each folder.
            ListMetadataQuery q = new ListMetadataQuery();
            q.type = strFolder;
            Response.Write("\nSessionID"+lResult.sessionId+"\n");
            FileProperties[] fp = metaService.listMetadata(new ListMetadataQuery[] { q }, API_VERSION);
            /*
            if (fp == null)
            {
                Console.WriteLine("No profile folders returned");
                return ;
            }

            List<String> packageFiles = new List<String>();
            q.type = pckgType;
            foreach (FileProperties p in fp)
            {
                q.folder = p.fullName;
                // listMetadata can take more than one item at a time
                // left as an exercise for the reader to batch up these calls.
                FileProperties[] rps = metaService.listMetadata(new ListMetadataQuery[] { q }, API_VERSION);
                if (fp == null) continue;
                foreach (FileProperties rp in rps)
                {
                    Console.WriteLine("{0}", rp.fileName);
                    packageFiles.Add(rp.fullName);
                }
            }

            String[] profileFiles = packageFiles.ToArray(); ;

            // RETRIEVEPACKAGE METHOD CODE

            // build up an unpackaged retrieve request for the list of reports.
            RetrieveRequest r = new RetrieveRequest();
            r.apiVersion = API_VERSION;
            //r.unpackaged = new Package();
            r.unpackaged = pck;

            PackageTypeMembers m = new PackageTypeMembers();
            m.name = pckgType;
            m.members = profileFiles;
            r.unpackaged.types = new PackageTypeMembers[] { m };

            // start the retrieve request
            AsyncResult ar = metaService.retrieve(r);

            // wait for it to complete, sleeping as necassary.
            while (!ar.done)
            {
                System.Threading.Thread.Sleep(1000);
                ar = metaService.checkStatus(new String[] { ar.id })[0];
            }

            // did it work ?
            if (ar.state == AsyncRequestState.Error)
                Console.WriteLine("{0} {1}", ar.statusCode, ar.message);
            else
            {
                // now actually go get the results
                RetrieveResult rr = metaService.checkRetrieveStatus(ar.id);
                if (rr.messages != null)
                    foreach (RetrieveMessage rm in rr.messages)
                        Console.WriteLine("{0} : {1}", rm.fileName, rm.problem);

                // write the zipFile out to a disk file.
                using (System.IO.FileStream fs = new System.IO.FileStream("c:\\" + pckgType + ".zip", System.IO.FileMode.Create))
                    fs.Write(rr.zipFile, 0, rr.zipFile.Length);
            }
            */
            Response.Write("Extraction Complete.");
            Response.Write("RetrievedSObjects");

        }



    }
}

I have the folllowing code and i get the invalid session Id exception.  How to remove it ? Can someone please assist? I am new to use salesforce metadata API. The line highlighted in RED  is where the exception is raised.

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.IO.Compression;
using System.Text;
using WebApplication1.WebReference;
using WebApplication1.SFMetadata;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {

        public const double API_VERSION = 23.0;

        private WebApplication1.WebReference.SforceService sf { get; set; }
        private WebApplication1.WebReference.LoginResult lr { get; set; }
        private GetUserInfoResult userInfo { get; set; }

        private MetadataService metaService { get; set; }
        private List<FileProperties> lstFp { get; set; }
        private RetrieveResult result { get; set; }



        private List<String> lstSObjects = new List<String>();
        private List<CustomField> lstFields = new List<CustomField>();



        // Retrieve all SObjects
        private void retrieveSObjects()
        {
            try
            {
                DescribeGlobalResult dgr = sf.describeGlobal();

                DescribeGlobalSObjectResult[] dgsr = dgr.sobjects;
                foreach (DescribeGlobalSObjectResult d in dgr.sobjects)
                {
                    lstSObjects.Add(d.name);
                    Response.Write("object name:" + d.name);
                }
            }
            catch (Exception e)
            {
                Response.Write("Could not retrieve the Sobjects from Salesforce. " + e.Message);
            }
            //check

            //check
        }








        protected void Button1_Click(object sender, EventArgs e)
        {

            SforceService sfService = new SforceService();
            MetadataService ms = new MetadataService();
            LoginResult lResult = new LoginResult();
            GetUserInfoResult uInfo = new GetUserInfoResult();

            sf = new WebApplication1.WebReference.SforceService();
            lr = new WebApplication1.WebReference.LoginResult();
            metaService = new MetadataService();
            userInfo = new GetUserInfoResult();
          loginresult is obtained here
            sfService.Url = lResult.serverUrl;
            Response.Write("URL : " + lResult.serverUrl);
            WebReference.SessionHeader hd = new WebReference.SessionHeader();
            hd.sessionId = lResult.sessionId;
            sfService.SessionHeaderValue = hd;
            Response.Write("\nSessionID"+lResult.sessionId+"\n");

            this.sf = sfService;
            this.lr = lResult;
            this.userInfo = uInfo;
            this.metaService = ms;
            Response.Write("logged in");


            // getProfile();
            // getUser();
            retrieveSObjects();
           String strFolder = "Profile";
            String pckgType = "Profile";

            List<ProfileObjectPermissions> lstProfObjPerm = new List<ProfileObjectPermissions>();
            List<PackageTypeMembers> lstPtm = new List<PackageTypeMembers>();
            foreach (String s in lstSObjects)
            {
                SFMetadata.ProfileObjectPermissions profObjPerm = new SFMetadata.ProfileObjectPermissions();
                profObjPerm.@object = s;
                lstProfObjPerm.Add(profObjPerm);

                SFMetadata.PackageTypeMembers objPckTypMembers = new SFMetadata.PackageTypeMembers();
                List<String> lstMembers = new List<String>();
                lstMembers.Add(s);
                objPckTypMembers.members = lstMembers.ToArray();
                lstPtm.Add(objPckTypMembers);

            }

            Package pck = new Package();
            pck.types = lstPtm.ToArray();

            SFMetadata.Profile objProfile = new SFMetadata.Profile();

            objProfile.objectPermissions = lstProfObjPerm.ToArray();

            // Call the methods to retrieve the profiles and zip file
            // REPLACED  THE LIST PACKAGE METHOD

            // can't use wildcards with reports, so need to fetch the list
            // of ReportFolders first, then fetch all the reports in
            // each folder.
            ListMetadataQuery q = new ListMetadataQuery();
            q.type = strFolder;
            Response.Write("\nSessionID"+lResult.sessionId+"\n");
            FileProperties[] fp = metaService.listMetadata(new ListMetadataQuery[] { q }, API_VERSION);
            /*
            if (fp == null)
            {
                Console.WriteLine("No profile folders returned");
                return ;
            }

            List<String> packageFiles = new List<String>();
            q.type = pckgType;
            foreach (FileProperties p in fp)
            {
                q.folder = p.fullName;
                // listMetadata can take more than one item at a time
                // left as an exercise for the reader to batch up these calls.
                FileProperties[] rps = metaService.listMetadata(new ListMetadataQuery[] { q }, API_VERSION);
                if (fp == null) continue;
                foreach (FileProperties rp in rps)
                {
                    Console.WriteLine("{0}", rp.fileName);
                    packageFiles.Add(rp.fullName);
                }
            }

            String[] profileFiles = packageFiles.ToArray(); ;

            // RETRIEVEPACKAGE METHOD CODE

            // build up an unpackaged retrieve request for the list of reports.
            RetrieveRequest r = new RetrieveRequest();
            r.apiVersion = API_VERSION;
            //r.unpackaged = new Package();
            r.unpackaged = pck;

            PackageTypeMembers m = new PackageTypeMembers();
            m.name = pckgType;
            m.members = profileFiles;
            r.unpackaged.types = new PackageTypeMembers[] { m };

            // start the retrieve request
            AsyncResult ar = metaService.retrieve(r);

            // wait for it to complete, sleeping as necassary.
            while (!ar.done)
            {
                System.Threading.Thread.Sleep(1000);
                ar = metaService.checkStatus(new String[] { ar.id })[0];
            }

            // did it work ?
            if (ar.state == AsyncRequestState.Error)
                Console.WriteLine("{0} {1}", ar.statusCode, ar.message);
            else
            {
                // now actually go get the results
                RetrieveResult rr = metaService.checkRetrieveStatus(ar.id);
                if (rr.messages != null)
                    foreach (RetrieveMessage rm in rr.messages)
                        Console.WriteLine("{0} : {1}", rm.fileName, rm.problem);

                // write the zipFile out to a disk file.
                using (System.IO.FileStream fs = new System.IO.FileStream("c:\\" + pckgType + ".zip", System.IO.FileMode.Create))
                    fs.Write(rr.zipFile, 0, rr.zipFile.Length);
            }
            */
            Response.Write("Extraction Complete.");
            Response.Write("RetrievedSObjects");

        }



    }
}

Hello,

Does anyone have the idea whether we can migrate the translations for different languages from one salesforce environment to another salesforce environments using the Metadata API? If so , then can you kindly advise how it can be done and how to create the package.xml for it. Would be of great help.

I have the folllowing code and i get the invalid session Id exception.  How to remove it ? Can someone please assist? I am new to use salesforce metadata API. The line highlighted in RED  is where the exception is raised.

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.IO.Compression;
using System.Text;
using WebApplication1.WebReference;
using WebApplication1.SFMetadata;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {

        public const double API_VERSION = 23.0;

        private WebApplication1.WebReference.SforceService sf { get; set; }
        private WebApplication1.WebReference.LoginResult lr { get; set; }
        private GetUserInfoResult userInfo { get; set; }

        private MetadataService metaService { get; set; }
        private List<FileProperties> lstFp { get; set; }
        private RetrieveResult result { get; set; }



        private List<String> lstSObjects = new List<String>();
        private List<CustomField> lstFields = new List<CustomField>();



        // Retrieve all SObjects
        private void retrieveSObjects()
        {
            try
            {
                DescribeGlobalResult dgr = sf.describeGlobal();

                DescribeGlobalSObjectResult[] dgsr = dgr.sobjects;
                foreach (DescribeGlobalSObjectResult d in dgr.sobjects)
                {
                    lstSObjects.Add(d.name);
                    Response.Write("object name:" + d.name);
                }
            }
            catch (Exception e)
            {
                Response.Write("Could not retrieve the Sobjects from Salesforce. " + e.Message);
            }
            //check

            //check
        }








        protected void Button1_Click(object sender, EventArgs e)
        {

            SforceService sfService = new SforceService();
            MetadataService ms = new MetadataService();
            LoginResult lResult = new LoginResult();
            GetUserInfoResult uInfo = new GetUserInfoResult();

            sf = new WebApplication1.WebReference.SforceService();
            lr = new WebApplication1.WebReference.LoginResult();
            metaService = new MetadataService();
            userInfo = new GetUserInfoResult();
          loginresult is obtained here
            sfService.Url = lResult.serverUrl;
            Response.Write("URL : " + lResult.serverUrl);
            WebReference.SessionHeader hd = new WebReference.SessionHeader();
            hd.sessionId = lResult.sessionId;
            sfService.SessionHeaderValue = hd;
            Response.Write("\nSessionID"+lResult.sessionId+"\n");

            this.sf = sfService;
            this.lr = lResult;
            this.userInfo = uInfo;
            this.metaService = ms;
            Response.Write("logged in");


            // getProfile();
            // getUser();
            retrieveSObjects();
           String strFolder = "Profile";
            String pckgType = "Profile";

            List<ProfileObjectPermissions> lstProfObjPerm = new List<ProfileObjectPermissions>();
            List<PackageTypeMembers> lstPtm = new List<PackageTypeMembers>();
            foreach (String s in lstSObjects)
            {
                SFMetadata.ProfileObjectPermissions profObjPerm = new SFMetadata.ProfileObjectPermissions();
                profObjPerm.@object = s;
                lstProfObjPerm.Add(profObjPerm);

                SFMetadata.PackageTypeMembers objPckTypMembers = new SFMetadata.PackageTypeMembers();
                List<String> lstMembers = new List<String>();
                lstMembers.Add(s);
                objPckTypMembers.members = lstMembers.ToArray();
                lstPtm.Add(objPckTypMembers);

            }

            Package pck = new Package();
            pck.types = lstPtm.ToArray();

            SFMetadata.Profile objProfile = new SFMetadata.Profile();

            objProfile.objectPermissions = lstProfObjPerm.ToArray();

            // Call the methods to retrieve the profiles and zip file
            // REPLACED  THE LIST PACKAGE METHOD

            // can't use wildcards with reports, so need to fetch the list
            // of ReportFolders first, then fetch all the reports in
            // each folder.
            ListMetadataQuery q = new ListMetadataQuery();
            q.type = strFolder;
            Response.Write("\nSessionID"+lResult.sessionId+"\n");
            FileProperties[] fp = metaService.listMetadata(new ListMetadataQuery[] { q }, API_VERSION);
            /*
            if (fp == null)
            {
                Console.WriteLine("No profile folders returned");
                return ;
            }

            List<String> packageFiles = new List<String>();
            q.type = pckgType;
            foreach (FileProperties p in fp)
            {
                q.folder = p.fullName;
                // listMetadata can take more than one item at a time
                // left as an exercise for the reader to batch up these calls.
                FileProperties[] rps = metaService.listMetadata(new ListMetadataQuery[] { q }, API_VERSION);
                if (fp == null) continue;
                foreach (FileProperties rp in rps)
                {
                    Console.WriteLine("{0}", rp.fileName);
                    packageFiles.Add(rp.fullName);
                }
            }

            String[] profileFiles = packageFiles.ToArray(); ;

            // RETRIEVEPACKAGE METHOD CODE

            // build up an unpackaged retrieve request for the list of reports.
            RetrieveRequest r = new RetrieveRequest();
            r.apiVersion = API_VERSION;
            //r.unpackaged = new Package();
            r.unpackaged = pck;

            PackageTypeMembers m = new PackageTypeMembers();
            m.name = pckgType;
            m.members = profileFiles;
            r.unpackaged.types = new PackageTypeMembers[] { m };

            // start the retrieve request
            AsyncResult ar = metaService.retrieve(r);

            // wait for it to complete, sleeping as necassary.
            while (!ar.done)
            {
                System.Threading.Thread.Sleep(1000);
                ar = metaService.checkStatus(new String[] { ar.id })[0];
            }

            // did it work ?
            if (ar.state == AsyncRequestState.Error)
                Console.WriteLine("{0} {1}", ar.statusCode, ar.message);
            else
            {
                // now actually go get the results
                RetrieveResult rr = metaService.checkRetrieveStatus(ar.id);
                if (rr.messages != null)
                    foreach (RetrieveMessage rm in rr.messages)
                        Console.WriteLine("{0} : {1}", rm.fileName, rm.problem);

                // write the zipFile out to a disk file.
                using (System.IO.FileStream fs = new System.IO.FileStream("c:\\" + pckgType + ".zip", System.IO.FileMode.Create))
                    fs.Write(rr.zipFile, 0, rr.zipFile.Length);
            }
            */
            Response.Write("Extraction Complete.");
            Response.Write("RetrievedSObjects");

        }



    }
}

I have a C# app that is successfully returning and writing the zip file with the Profiles to a folder, but even thought I am setting the objects I would like to retrieve the permissions for, it is only returning the following:

 

<?xml version="1.0" encoding="UTF-8"?> <Profile xmlns="http://soap.sforce.com/2006/04/metadata">     <userLicense>Salesforce</userLicense> </Profile>

 

I should be seeing custom objects and the profile permissions related to these objects.

 

The reason I need to use the C# app is because in the Force.com IDE, only unmanaged objects can be retrieved, and then viewed in the Profile metadata. In the C# application, all objects, whether managed or unmanaged are returned. I've tested this out using the CustomObject and have returned all custom objects in a zip file.

 

So here is a portion my code. Please let me know if there are any questions. Would like to get this figured out. I'm not that Familiar with Java, but if you have some Java code as an example, that would also be very helpful.

 

       

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.IO;
using System.IO.Compression;
using System.Text;
using System.Windows.Forms;
using SalesforceMetaDataApplication.WebReference;
using SalesforceMetaDataApplication.SFMetadata;
using SForceOfficeToolkitLib4;


namespace SalesforceMetaDataApplication
{
    public partial class MetaInfo : Form
    {

        public const double API_VERSION = 23.0;

        private SalesforceMetaDataApplication.WebReference.SforceService sf { get; set; }
        private SalesforceMetaDataApplication.WebReference.LoginResult lr { get; set; }
        private GetUserInfoResult userInfo { get; set; }

        private MetadataService metaService { get; set; }
        private List<FileProperties> lstFp { get; set; }
        private RetrieveResult result { get; set; }

        private Dictionary<String, SalesforceMetaDataApplication.WebReference.Profile> dictProfile 
            = new Dictionary<String, SalesforceMetaDataApplication.WebReference.Profile>();
        private Dictionary<String, SalesforceMetaDataApplication.WebReference.User> dictUser
            = new Dictionary<String, SalesforceMetaDataApplication.WebReference.User>();

        private List<String> lstSObjects = new List<String>();
        private List<CustomField> lstFields = new List<CustomField>();

        // Initialize the class with parameters from SFLogin. Get the Profiles, Users, and all SObjects in the org.
        public MetaInfo(SforceService sfService, MetadataService ms, LoginResult lResult, GetUserInfoResult uInfo)
        {
            InitializeComponent();
            
            sf = new SalesforceMetaDataApplication.WebReference.SforceService();
            lr = new SalesforceMetaDataApplication.WebReference.LoginResult();
            metaService = new MetadataService();
            userInfo = new GetUserInfoResult();

            this.sf = sfService;
            this.lr = lResult;
            this.userInfo = uInfo;

            this.metaService = ms;

            getProfile();
            getUser();
            retrieveSObjects();
        }

        // Retrieve all SObjects
        private void retrieveSObjects()
        {
            try 
            {
                DescribeGlobalResult dgr = sf.describeGlobal();

                DescribeGlobalSObjectResult[] dgsr = dgr.sobjects;
                foreach (DescribeGlobalSObjectResult d in dgr.sobjects)
                {
                    lstSObjects.Add(d.name);
                }
            } 
            catch (Exception e)
            {
                MessageBox.Show("Could not retrieve the Sobjects from Salesforce. " + e.Message);
            }
        }

        // Package Types
        private void profileToolStripMenuItem_Click(object sender, EventArgs e)
        {
            String strFolder = "Profile";
            String pckgType = "Profile";

            List<ProfileObjectPermissions> lstProfObjPerm = new List<ProfileObjectPermissions>();
            List<PackageTypeMembers> lstPtm = new List<PackageTypeMembers>();
            foreach(String s in lstSObjects) 
            {
                SFMetadata.ProfileObjectPermissions profObjPerm = new SFMetadata.ProfileObjectPermissions();
                profObjPerm.@object = s;
                lstProfObjPerm.Add(profObjPerm);
                
                SFMetadata.PackageTypeMembers objPckTypMembers = new SFMetadata.PackageTypeMembers();
                List<String> lstMembers = new List<String>();
                lstMembers.Add(s);
                objPckTypMembers.members = lstMembers.ToArray();
                lstPtm.Add(objPckTypMembers);

            }

            Package pck = new Package();
            pck.types = lstPtm.ToArray();

            SFMetadata.Profile objProfile = new SFMetadata.Profile();

            objProfile.objectPermissions = lstProfObjPerm.ToArray();

            // Call the methods to retrieve the profiles and zip file
            String[] profileFiles = listPackages(strFolder, pckgType);
            retrievePackages(profileFiles, pckgType, pck);

            MessageBox.Show("Extraction Complete.");
        }


        private String[] listPackages(String strFolder, String strType) {
            // can't use wildcards with reports, so need to fetch the list
            // of ReportFolders first, then fetch all the reports in
            // each folder.
            ListMetadataQuery q = new ListMetadataQuery();
            q.type = strFolder;

            FileProperties[] fp = metaService.listMetadata(new ListMetadataQuery[] { q }, API_VERSION);

            if (fp == null)
            {
                Console.WriteLine("No profile folders returned");
                return new String[0];
            }

            List<String> packageFiles = new List<String>();
            q.type = strType;
            foreach (FileProperties p in fp)
            {
                q.folder = p.fullName;
                // listMetadata can take more than one item at a time
                // left as an exercise for the reader to batch up these calls.
                FileProperties[] rps = metaService.listMetadata(new ListMetadataQuery[] { q }, API_VERSION);
                if (fp == null) continue;
                foreach (FileProperties rp in rps)
                {
                    Console.WriteLine("{0}", rp.fileName);
                    packageFiles.Add(rp.fullName);
                }
            }
            return packageFiles.ToArray();
        }

        // Overload methods to retrieve the different package types and write them to disk.
        // TODO: compress these methods into more reusable methods.
        private void retrievePackages(String[] packageFiles, String strMetaName, Package objPackage) 
        {
            // build up an unpackaged retrieve request for the list of reports.
            RetrieveRequest r = new RetrieveRequest();
            r.apiVersion = API_VERSION;
            //r.unpackaged = new Package();
            r.unpackaged = objPackage;

            PackageTypeMembers m = new PackageTypeMembers();
            m.name = strMetaName;
            m.members = packageFiles;
            r.unpackaged.types = new PackageTypeMembers[] { m };

            // start the retrieve request
            AsyncResult ar = metaService.retrieve(r);

            // wait for it to complete, sleeping as necassary.
            while (!ar.done)
            {
                System.Threading.Thread.Sleep(1000);
                ar = metaService.checkStatus(new String[] { ar.id })[0];
            }

            // did it work ?
            if (ar.state == AsyncRequestState.Error)
                Console.WriteLine("{0} {1}", ar.statusCode, ar.message);
            else
            {
                // now actually go get the results 
                RetrieveResult rr = metaService.checkRetrieveStatus(ar.id);
                if (rr.messages != null)
                    foreach (RetrieveMessage rm in rr.messages)
                        Console.WriteLine("{0} : {1}", rm.fileName, rm.problem);

                // write the zipFile out to a disk file.
                using (System.IO.FileStream fs = new System.IO.FileStream("c:\\Temp\\" + strMetaName + ".zip", System.IO.FileMode.Create))
                    fs.Write(rr.zipFile, 0, rr.zipFile.Length);
            }
        }

        private void retrievePackages(String[] packageFiles, String strMetaName)
        {
            // build up an unpackaged retrieve request for the list of reports.
            RetrieveRequest r = new RetrieveRequest();
            r.apiVersion = API_VERSION;
            r.unpackaged = new Package();

            PackageTypeMembers m = new PackageTypeMembers();
            m.name = strMetaName;
            m.members = packageFiles;
            r.unpackaged.types = new PackageTypeMembers[] { m };

            // start the retrieve request
            AsyncResult ar = metaService.retrieve(r);

            // wait for it to complete, sleeping as necassary.
            while (!ar.done)
            {
                System.Threading.Thread.Sleep(1000);
                ar = metaService.checkStatus(new String[] { ar.id })[0];
            }

            // did it work ?
            if (ar.state == AsyncRequestState.Error)
                Console.WriteLine("{0} {1}", ar.statusCode, ar.message);
            else
            {
                // now actually go get the results 
                RetrieveResult rr = metaService.checkRetrieveStatus(ar.id);
                if (rr.messages != null)
                    foreach (RetrieveMessage rm in rr.messages)
                        Console.WriteLine("{0} : {1}", rm.fileName, rm.problem);

                // write the zipFile out to a disk file.
                using (System.IO.FileStream fs = new System.IO.FileStream("c:\\Temp\\" + strMetaName + ".zip", System.IO.FileMode.Create))
                    fs.Write(rr.zipFile, 0, rr.zipFile.Length);
            }
        }
    }
}

 

Hello,

I am trying to insert a lead using php and running into some trouble. It has been a long time since I have programmed in php so I am attributing this issue to syntax but for thelife of me I can not seem to find any example code.

Here is the code I have tried:

Code:
$fieldsToUpdate
      = array('FirstName'=>$fname,'LastName'=>$lname,'Email'=>$email,'Leadsource'=>$source,'company'=>$co,'Website'=>$web );
$sObject = new SObject();
$sObject->fields = $fieldsToUpdate;
$sObject->type = 'Lead';
$acct = $mySforceConnection->upsert(array ($sObject));

 I have also tried variations like:
Code:
$lead['Email']      = "test@test.com";
$lead['LeadSource'] = "blog";
$lead['Company']    = "Test Co.";
$lead['Website']    = "www.test.com";
$lead['FirstName']  = "Testy";
$lead['LastName']   = "Tester";

$lead['type']       = "Lead";

$result = $mySforceConnection->->create($lead);

//--------------------------------------------------
//Also using the above vars + the following
//--------------------------------------------------

$sObject = new SObject();
$sObject->fields = $lead;
$sObject->type = 'lead';

$result = $mySforceConnection->create($sObject);

 
In my php.ini I do not display the errors so I am not getting any errors back, but when I query the SF I do not see the lead added. I have tried these variations with upsert as well with the same results.

Any help would be most appreciated!

Thanks
Don