カスタムユーザ ロール 新規 3階層

■問題:

カスタムユーザ新規作成
取引先新規作成⇒取引先担当者新規作成⇒「カスタマーユーザを有効化」ボタンをレイアウトに表示させる⇒ 「カスタマーユーザを有効化」ボタンクリックし、ユーザ新規作成する。

  作成したユーザのロールは「〇○○顧客 個人取引先」になってしまう。

■対応方法:

以下の設定を変更してから、カスタムユーザ有効化し作成する。
   「共有設定」→「作成されるロール数を最小限に抑えます。これにより、処理の負荷が軽減され、パフォーマンスが向上します。」外す

ユーザ管理権限

Salesforce Platformライセンスユーザでもユーザ作成、管理できるように設定方法

Platformユーザ以下のように設定する。

① 「代理管理者」としてユーザ登録する。
➁ アプリケーション権限 「外部ユーザの管理」という権限を含む権限セットを作成し、付与する。

Salesforce 自動処理回避する方法

自動処理:
1 トリガー
2 フロー
3 入力規則

対応方法例:
1  設定⇒「カスタム設定」にて、定義(例:AutoRunFlag__c)を追加する。

2 「カスタム項目」を追加する 例えば: チェックボックスの定義(例:AutoRunFlag__c) を追加する


3 「Manage」を押す、ユーザ単位あるいはプロファイル単位の値を設定する
  例:実行の場合、 true

4 トリガーやバッチ実行処理にて、以下の処理を追加する。

 //トリガー実行スキップ
    AutoRunFlag__c autoflag = AutoRunFlag__c.getInstance();
    if(autoflag !=null && autoflag.AutoRunFlag__c) {
        return ;
    }

//入力規則
$Setup.AutoRunFlag__c.AutoRunFlag__c

Salesforce エクスペリエンス ファイルの外部共有

添付ファイルを外部共有について

ContentDocumentLink.Visibility = AllUsers

に設定すれば、外部ユーザに共有できます。

以下の方法でフローで実現できます。

通常トリガーフローは、ContentDocumentLinkにアクセスできないため、

①「自動起動フロー(トリガーなし)」のフローで共有処理(ContentDocumentLink.Visibility = AllUsers)を実装する。

➁ 通常トリガーフローから①のフローを呼び出すようにする。

Salesforce AppExchange App セキュリティレビュー

1 必要など申請資料の確認

 https://checklistbuilder.herokuapp.com/
 ※外部公式API利用してる場合も、そのAPIのセキュリティチェックも必要のようです。

 ①  Force.com Source Code (Checkmarx) Scanner Results
Partnerではなくても、だれでも以下すぐにでチェックし、レポートの取得可能です。
   https://security.secure.force.com/security/tools/forcecom/scanner

※パートナーでも登録申請してからチェック可能まで数日かかります。

 ➁ Web Application Vulnerability Scanner Results
  OWASP ZAP をインストールする
  PostManインストールする。

以下を設定する。

※PostManにて、APIを呼び出してから、OWASP ZAPに追加されることになります。

2 パッケージを含む組織と接続してリストを作成、セキュリティ依頼する

  第二世代管理パッケージの場合は、Dev Hub 組織を接続します。

  また、以下のコマンド最後まで実行しないと、DevHubに接続しても表示されません。

1 sfdx auth:web:login -d -a DevHub
2 sfdx config:set defaultdevhubusername=DevHub 
3 sfdx force:org:create -f config/project-scratch-def.json -a [組織アライアンス名] -s -d30
  sfdx force:source:push
  sfdx force:org:open → 動作確認して、問題なければ、以下で管理パッケージを作成する

4 sfdx force:package:create --name [パッケージ名] --path force-app --packagetype Managed
5 sfdx force:package:version:create --package [No4 生成したパッケージID] --definitionfile config/project-scratch-def.json --codecoverage --installationkeybypass --wait 10
6 sfdx force:package:version:promote -p [No5 生成したバージョンID]

注意点:
   ・プロファイルを利用せず、権限セットで利用すること。
  ・参照ソース維持するスクラッチ組織と開発組織分けること。
    (不要な変更パッケージから除外するため)

以下を利用して、不要な内容をパッケージから除外

 .forceignore

package.xml

# LWC configuration files
**/jsconfig.json
**/.eslintrc.json

# LWC Jest
**/__tests__/**
**/profiles/**
**/AppSwitcher**
**/testSuites**
**/*SessionSetting*
**/*PasswordPolicy*
*SessionSetting*
*PasswordPolicy*

  project-scratch-def.json

{
  "orgName": "better-future Co. Ltd",
  "edition": "Partner Developer",
  "features": ["DebugApex"],
  "settings": {
    "lightningExperienceSettings": {
      "enableS1DesktopEnabled": true
    },
    "mobileSettings": {
      "enableS1EncryptedStoragePref2": false
    }
  }
}

検証スクラッチ組織作成

{
  "orgName": "Demo company",
  "edition": "Enterprise",
  "features": [],
  "settings": {
    "lightningExperienceSettings": {
      "enableS1DesktopEnabled": true
    },
    "securitySettings": {
      "passwordPolicies": {
        "enableSetPasswordInApi": true
      }
    },
    "mobileSettings": {
      "enableS1EncryptedStoragePref2": false
    }
  }
}

〇参考資料:
https://japan-isv.my.site.com/basecamp/s/appexchange-partner

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

① sfdx-project.json 作成

{
"packageDirectories": [
{
"path": "force-app",
"default": true,
"package": "dxlineapp",
"versionName": "ver 1.0",
"versionNumber": "1.0.0.NEXT"
}
],
"name": "fmlline",
"namespace": "bfml",
"sfdcLoginUrl": "https://login.salesforce.com",
"sourceApiVersion": "54.0",
"packageAliases": {
"dxlineapp": "xxx",
"dxlineapp@1.0.0-1": "xxx"
}
}

➁環境ハブから、「Enterprise Edition」の環境を作成する。

③ 上記のコマンドで生成したPackgeを上記の環境にインストールする。
/packaging/installPackage.apexp?p0=xxxxxxx

④ Partner Community にログインし、「組織を接続」で上記の環境に接続する

⑤ 「リスト」を作成し、

 「リスト」→「アプリ」→「パッケージを選択」
上記作成したパッケージバージョンを選択する。

⑥ セキュリティソースチェック

以下にアクセスする(最初は申請する必要で、少し時間がかかる)
https://security.secure.force.com/sourcescanner/PackageScannerMain

以下で、上記選択したパッケージを選択し、セキュリティチェック処理を実施する。

⑦ 実行後、「Download Report」から結果を取得し、そのままセキュリティーレビューに添付する。

リストビューとレポートで使用する相対日付

「過去n日間」、「翌n日間」、「n日前」のような相対値では、半角スペースを入れずに入力します。
過去3日間
翌3日間
3日前


「nか月前」 、「n年前」、「翌n年間」のような相対値も、半角スペースを入れずに入力します。
3か月前
1年前
翌1年間


「過去 n か月」、「翌 n か月」のような相対値では、「n」の前後に半角スペースを入れて入力します。
過去 3 か月
翌 3 か月

「過去 n 週間」、「翌 n 週間」のような相対値も、「n」の前後に半角スペースを入れて入力します。
過去 1 週間
翌 1 週間

参考:
https://help.salesforce.com/s/articleView?id=000316282&type=1

Salesforce スクラッチ 開発

コマンド:

sfdx force:source:pull

ERROR running force:source:legacy:pull:  Entity of type 'ProfileSessionSetting' named 'sflineuser_profileSessionSetting1650515525696' cannot be found
Entity of type 'ProfilePasswordPolicy' named 'sflineuser_profilePasswordPolicy1650515525506' cannot be found

対応:

.forceignore file

**/*SessionSetting*
**/*PasswordPolicy*
*SessionSetting*
*PasswordPolicy*

その他
依存環境確認しながらPUSHすること。
sfdx force:source:deploy -u <alias-name> –sourcepath force-app/main/default/objects sfdx force:source:deploy -u <alias-name> –sourcepath force-app/main/default/classes sfdx force:source:deploy -u <alias-name> –sourcepath force-app/main/default/lwc