Salesforce

Salesforceの本番環境にあるApexクラスやトリガーを削除する

やりたいこと

不要になったソースをクラスごと消したい。がしかし、sandbox上では削除できるんだけども、本番環境は削除できない。
sandboxから削除したという情報をリリースもできない。

詰んでしまった👼👼👼

そこで、調べてみると、 destructiveChanges.xml をリリースすることで削除できるということがわかりました。

やりかた

ファイルを作る

ファイルを2つつくります。階層は下記のようにしてください。

folder
   ├──package.xml
   └──destructiveChanges.xml
package.xml
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
   <version>41.0</version> <!-- APIバージョン -->
</Package>
destructiveChanges.xml
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <fullName>codepkg</fullName>
    <types>
        <!-- 消したいクラスの名前をmembersに -->
        <members>OpportunityRefAccountUpdTriggerHandler</members>
        <members>OpportunityRefAccountUpdTriggerHdlTest</members>
        <name>ApexClass</name>
    </types>
    <types>
        <!-- 消したいトリガーの名前をmembersに -->
        <members>OpportunityRefAccountUpdTrigger</members>
        <name>ApexTrigger</name>
    </types>
    <version>41.0</version>
</Package>

カスタムオブジェクトなども削除できるみたいです。

作ったファイルをZipにします

ここからが苦労ポイントでした。

Mac先生の標準機能でフォルダを圧縮すると、余計な隠しファイルを入れてきます。
そいつが悪さする。すごく。
この状態で以降の処理をすると「No package.xml file found」のエラーになってしまうので、もしそのエラーが出たら、隠しファイルを疑ってみてください。

Macで作った手順。

zipファイルを作る

zip -r archive ./folder

中身を見る

unzip -l ./archive.zip

はい、余計な隠しファイルがいる!

Archive:  ./archive.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
        0  11-09-17 18:48   folder/
     6148  11-09-17 18:41   folder/.DS_Store <--おまえだ
      603  11-09-17 17:26   folder/destructiveChanges.xml
      135  11-09-17 17:28   folder/package.xml
 --------                   -------
     6886                   4 files

隠しファイルを消す

zip -d ./archive.zip folder/.DS_Store
Archive:  ./archive.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
        0  11-09-17 18:48   folder/
      603  11-09-17 17:26   folder/destructiveChanges.xml
      135  11-09-17 17:28   folder/package.xml
 --------                   -------
      738                   3 files

消えました

これでZipファイルの作成は完了です。

Workbench

Salesforceにログインをしたあと、workbenchにアクセスします。

https://workbench.developerforce.com/

認証しましょう。

migration > Deploy を選びます。
image.png

さっき作ったzipを選んで、画像の設定をして、 Next
image.png

Deploy を押せば完了

SUCCESSがTrueになっていれば成功です!
image.png

参考にしたもの

https://help.salesforce.com/articleView?id=000187562&language=ja&type=1
https://medium.com/@wangyidan621/salesforce-workbench-zip-deployment-no-package-xml-found-error-on-mac-ec7ce49a7126