スクラッチ組織にソースをデプロイしようとしたら Must specify a non-empty plural label for the CustomObject
というエラーが発生する事があるので、トラブルシューティングのTIPSをご紹介します。
事象
sfdx CLI
又は sf CLI
で別の組織で開発を進めていたプロジェクトを自分の開発組織にデプロイした際に、次の様なエラーが発生する事があります。
$ sf start deploy project
.....
Component Failures [1]
===========================================================================
| Type Name Problem
| ----- -------- ----------------------------------------------------------
| Error MyObj__c Must specify a non-empty plural label for the CustomObject
原因
このエラーは、デプロイ対象のカスタムオブジェクトのメタデータに複数形の表示ラベルの指定がない場合に発生します。
Salesforce では、組織の言語が英語に設定されている組織で、新しくカスタムオブジェクトを作成する場合、通常の表示ラベルの他に複数形で表示するための表示ラベルを指定します。そしてこの機能は組織の言語が日本語に設定されている組織にはありません。そのため、日本語の組織で作成したカスタムオブジェクトを英語の組織にデプロイしようとすると必ずこのエラーが発生します。
対処法
対処法としては、カスタムオブジェクトのメタデータに pluralLabel
を追加するだけです。これをエラーが発生したすべてのカスタムオブジェクトのメタデータで実施します。
MyObj.object-meta.xml
<?xml version="1.0" encoding="UTF-8"?>
<CustomObject xmlns="http://soap.sforce.com/2006/04/metadata">
...
<pluralLabel>MyObjs</pluralLabel>
...
</CustomObject>
変更が完了したら、再度同じコマンドでデプロイします。すると先程のエラーは解消されているはずで、他にエラーがなければ正常にデプロイが完了します。
% sf start deploy project
...
Deployed Source
==========================================
| State Name Type Path
| ------- ----- ------------ -------------
| Changed MyObj CustomObject force-app/...