LoginSignup
9
10

Salesforce 移行ツールによるメタデータ取得

Last updated at Posted at 2018-08-30

Ant 移行ツールは Spring '24 で廃止されました。
代わりにSalesforceCLIを使用することができます。

移行ツールの導入

インストールは Ant 移行ツールガイド(Salesforce開発者ドキュメント)
を参照。
sampleフォルダをコピーし、各ファイルを編集して使用します。
build.xmlの入ったフォルダはant-salesforce.jarと同じディレクトリに格納する必要があります。

各ファイルの説明

  • build.xml : Ant で実行される一連のコマンドを定義。
  • build.properties : Salesforce の接続情報を設定。
  • package.xml : 1 回の要求で取得またはリリースするコンポーネントを指定。

準備

sampleフォルダをコピペして以下の様に各ファイルを配置。

salesforce_ant_43.0
├── ant-salesforce.jar
├── Readme.html
└── sample
    ├── build.properties
    ├── build.xml
    └── retrieveallpkg
        └── package.xml

build.xml を編集。↓ 編集例。

build.xml
<project name="Sample usage of Salesforce Ant tasks" default="test" basedir="." xmlns:sf="antlib:com.salesforce">

    <property file="build.properties"/>
    <property environment="env"/>

    <tstamp prefix="Datetime">
        <format property="now" pattern="yyyyMMdd_HHmm" locale="en" />
    </tstamp>

    <condition property="sf.username" value=""> <not> <isset property="sf.username"/> </not> </condition>
    <condition property="sf.password" value=""> <not> <isset property="sf.password"/> </not> </condition>
    <condition property="sf.sessionId" value=""> <not> <isset property="sf.sessionId"/> </not> </condition>

    <taskdef resource="com/salesforce/antlib.xml" uri="antlib:com.salesforce">
        <classpath>
            <pathelement location="../ant-salesforce.jar" />
        </classpath>
    </taskdef>

    <!-- メタデータの取得 -->
    <target name="retrieveall">
      <mkdir dir="${sf.username}_${Datetime.now}"/>
      <sf:retrieve
          username="${sf.username}"
          password="${sf.password}"
          sessionId="${sf.sessionId}"
          serverurl="${sf.serverurl}"
          maxPoll="${sf.maxPoll}"
          retrieveTarget="${sf.username}_${Datetime.now}"
          unpackaged="retrieveallpkg/package.xml"/>
    </target>

    <!-- メタデータタイプ一覧の取得 -->
    <target name="describeMetadata">
      <sf:describeMetadata username="${sf.username}" password="${sf.password}" sessionId="${sf.sessionId}" serverurl="${sf.serverurl}"/>
    </target>
</project>

package.xml の編集。取得するメタデータを指定する。持ってこれるメタデータの一覧は ant describeMetadata で取得可能。
※標準オブジェクト、メールテンプレートなどは個別に指定しないと取得できないため、注意。
↓ 編集例。

retrieveallpkg/package.xml
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">

    <!-- メタデータ取得用package.xml -->
    <types><members>*</members><name>InstalledPackage</name></types>
    <types><members>*</members><name>CustomLabels</name></types>
    <types><members>*</members><name>StaticResource</name></types>
    <types><members>*</members><name>Scontrol</name></types>
    <types><members>*</members><name>Certificate</name></types>
    <types><members>*</members><name>AuraDefinitionBundle</name></types>
    <types><members>*</members><name>LightningComponentBundle</name></types>
    <types><members>*</members><name>ApexComponent</name></types>
    <types><members>*</members><name>ApexPage</name></types>
    <types><members>*</members><name>Queue</name></types>
    <types><members>*</members><name>CaseSubjectParticle</name></types>
    <types><members>*</members><name>ExternalDataSource</name></types>
    <types><members>*</members><name>NamedCredential</name></types>
    <types><members>*</members><name>ExternalServiceRegistration</name></types>
    <types><members>*</members><name>Role</name></types>
    <types><members>*</members><name>Group</name></types>
    <types><members>*</members><name>GlobalValueSet</name></types>
    <types><members>*</members><name>StandardValueSet</name></types>
    <types><members>*</members><name>CustomPermission</name></types>
    <types><members>*</members><name>CustomObject</name></types>
    <types><members>*</members><name>ReportType</name></types>
    <types><members>*</members><name>Report</name></types>
    <types><members>*</members><name>Dashboard</name></types>
    <types><members>*</members><name>AnalyticSnapshot</name></types>
    <types><members>*</members><name>Layout</name></types>
    <types><members>*</members><name>Document</name></types>
    <types><members>*</members><name>CustomPageWebLink</name></types>
    <types><members>*</members><name>Letterhead</name></types>
    <types><members>*</members><name>EmailTemplate</name></types>
    <types><members>*</members><name>QuickAction</name></types>
    <types><members>*</members><name>FlexiPage</name></types>
    <types><members>*</members><name>CustomTab</name></types>
    <types><members>*</members><name>CustomApplicationComponent</name></types>
    <types><members>*</members><name>CustomApplication</name></types>
    <types><members>*</members><name>EmbeddedServiceConfig</name></types>
    <types><members>*</members><name>EmbeddedServiceBranding</name></types>
    <types><members>*</members><name>Flow</name></types>
    <types><members>*</members><name>FlowDefinition</name></types>
    <types><members>*</members><name>EventSubscription</name></types>
    <types><members>*</members><name>EventDelivery</name></types>
    <types><members>*</members><name>Workflow</name></types>
    <types><members>*</members><name>AssignmentRules</name></types>
    <types><members>*</members><name>AutoResponseRules</name></types>
    <types><members>*</members><name>EscalationRules</name></types>
    <types><members>*</members><name>ApprovalProcess</name></types>
    <types><members>*</members><name>HomePageComponent</name></types>
    <types><members>*</members><name>HomePageLayout</name></types>
    <types><members>*</members><name>CustomObjectTranslation</name></types>
    <types><members>*</members><name>GlobalValueSetTranslation</name></types>
    <types><members>*</members><name>StandardValueSetTranslation</name></types>
    <types><members>*</members><name>ApexClass</name></types>
    <types><members>*</members><name>ApexTrigger</name></types>
    <types><members>*</members><name>ApexTestSuite</name></types>
    <types><members>*</members><name>Profile</name></types>
    <types><members>*</members><name>PermissionSet</name></types>
    <types><members>*</members><name>CustomMetadata</name></types>
    <types><members>*</members><name>ProfilePasswordPolicy</name></types>
    <types><members>*</members><name>ProfileSessionSetting</name></types>
    <types><members>*</members><name>DataCategoryGroup</name></types>
    <types><members>*</members><name>RemoteSiteSetting</name></types>
    <types><members>*</members><name>CspTrustedSite</name></types>
    <types><members>*</members><name>MatchingRules</name></types>
    <types><members>*</members><name>DuplicateRule</name></types>
    <types><members>*</members><name>CleanDataService</name></types>
    <types><members>*</members><name>WaveApplication</name></types>
    <types><members>*</members><name>WaveDataset</name></types>
    <types><members>*</members><name>EclairGeoData</name></types>
    <types><members>*</members><name>WaveLens</name></types>
    <types><members>*</members><name>WaveDashboard</name></types>
    <types><members>*</members><name>WaveXmd</name></types>
    <types><members>*</members><name>WaveDataflow</name></types>
    <types><members>*</members><name>WaveRecipe</name></types>
    <types><members>*</members><name>CustomSite</name></types>
    <types><members>*</members><name>ChannelLayout</name></types>
    <types><members>*</members><name>ContentAsset</name></types>
    <types><members>*</members><name>SharingRules</name></types>
    <types><members>*</members><name>Community</name></types>
    <types><members>*</members><name>ChatterExtension</name></types>
    <types><members>*</members><name>CallCenter</name></types>
    <types><members>*</members><name>ConnectedApp</name></types>
    <types><members>*</members><name>AppMenu</name></types>
    <types><members>*</members><name>DelegateGroup</name></types>
    <types><members>*</members><name>SiteDotCom</name></types>
    <types><members>*</members><name>NetworkBranding</name></types>
    <types><members>*</members><name>BrandingSet</name></types>
    <types><members>*</members><name>FlowCategory</name></types>
    <types><members>*</members><name>LightningBolt</name></types>
    <types><members>*</members><name>LightningExperienceTheme</name></types>
    <types><members>*</members><name>SamlSsoConfig</name></types>
    <types><members>*</members><name>CorsWhitelistOrigin</name></types>
    <types><members>*</members><name>ActionLinkGroupTemplate</name></types>
    <types><members>*</members><name>TransactionSecurityPolicy</name></types>
    <types><members>*</members><name>SynonymDictionary</name></types>
    <types><members>*</members><name>PathAssistant</name></types>
    <types><members>*</members><name>LeadConvertSettings</name></types>
    <types><members>*</members><name>PlatformCachePartition</name></types>
    <types><members>*</members><name>TopicsForObjects</name></types>
    <types><members>*</members><name>EmailServicesFunction</name></types>
    <types><members>*</members><name>Settings</name></types>

    <version>43.0</version>
</Package>

使用方法

  1. build.properties に Salesforce ユーザ名とパスワードを設定。
  2. コンソールで build.xml のあるディレクトリに移動する。
  3. ant retrieveall を実行する。
  4. build.xml があるディレクトリに、フォルダ ユーザ名_yyyyMMdd_HHmm が作成され、package.xml で指定したメタデータが取得される。
9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10