今回のサンプルは、取引先責任者IDを使ってカスタマー取引先ポータルのユーザを作成するApexコードのサンプルをご紹介します。
主に以下のような用途で利用いただけます。
・ポータルサイトを使って、お客様からのお問い合わせの管理を行ったり、お客様に向けてナレッジなどの情報を提供する
【必要なライセンス】
カスタマー取引先ポータル(カスタマーポータル)を利用するためには、カスタマーポータルユーザライセンス(※1)が必要となります。
※Experience Cloudユーザライセンス(外部ユーザラインセンスとして、Customer Community、Customer Community Plusのいずれか)
代理店などの自社パートナーに対しては、別のパートナーコミュニティラインセンス(Partner Community)が用意されているので注意
Developer Edition(無料の開発環境)を持っていない方は、以下の記事を参考にSalesforce組織を取得してください。
-
参考セールスフォースの基礎Ⅰ(3)Developer組織の作成~ログインまで
【第三回】セールスフォースの基礎講義 前回の記事では、インスタンスとリージョンの考え方や基礎用語について解説しました。 今回は実際にSalesforceの開発環境を作成して、実際に操作しながら学ぶため ...
続きを見る
カスタマーポータルユーザの作成(ApexTriggerサンプルコード)
ポータルユーザ作成処理
/**
* クラス名:CreateCommunityUser
* 処理概要:
* 作成者:CreativeContentLabTokyo
* 作成日:2022/06/10
*
*/
global class CreateCommunityUser{
//カスタムExceptionの定義
public class CustomException extends Exception {}
/**
* メソッド名:createCommunityUserByContactId
* 処理概要:取引先責任者のIDを使って、コミュニティユーザを作成
* 引数:取引先責任者ID
* 戻り値:ユーザレコード
**/
WebService static User createCommunityUserByContactId(String contactId) {
//取引先責任者のIDを使って、氏名とメールアドレスの情報を取得
Contact contactRec = [SELECT FirstName,LastName,Email,AccountId
FROM Contact WHERE Id =: contactId LIMIT 1];
//カスタマーコミュニティユーザのプロファイル名を指定してプロファイルIDを取得
//Profile prof = [SELECT Id,Name FROM profile WHERE name='Customer Community User' LIMIT 1];
//標準のCustomer Community Userの利用は推奨されないため、コピーしてカスタムプロファイルを生成しておく
Profile prof = [SELECT Id,Name FROM profile WHERE
name='Custom Customer Community User' LIMIT 1];
//ユーザ名生成
String strUserName = contactRec.Email + 'ccltPortail';
//ニックネーム生成
String strNikcname;
if(contactRec.FirstName == null){
strNikcname = contactRec.LastName + Math.random();
} else {
strNikcname = contactRec.FirstName + Math.random();
}
//Alias生成(姓名の文字列短い場合を考慮してパディングしておく)
String strAlias = String.valueOf(contactRec.LastName.substring(0,1)
+ Math.random() ).leftPad(3,'0').substring(0,5);
//カスタマーコミュニティユーザを作成
User newCommunityUser = new User(contactId = contactId,
username = strUserName,
firstname = contactRec.FirstName,
lastname = contactRec.LastName,
email=contactRec.Email,
communityNickname = strNikcname,
alias = strAlias,
profileid = prof.Id,
emailencodingkey='ISO-2022-JP',
languagelocalekey='ja',
localesidkey='ja_JP',
timezonesidkey='Asia/Tokyo');
try {
insert newCommunityUser ;
//例外発生時処理
} catch(DMLException ex) {
//その他例外処理
Throw new CustomException('[Exception]'+ex.getMessage());
}
//正常終了の場合、作成したユーザレコードを返却
return newCommunityUser ;
}
}
テストクラス(CreateCommunityUserTest.cls)
/**--------------------------------------------------------------------------
* プログラム名:CreateCommunityUserTest
* 概 要 :CreateCommunityUserテストクラス
* 作成日 :2022.06.10
* 作成者 :cclt
* --------------------------------------------------------------------------**/
@isTest(SeeAllData=false)
private class CreateCommunityUserTest {
// テストデータのセットアップ
@testSetup
static void initTest(){
// 取引先の作成
Account acc = new Account(Name='クリエイティブコンテンツラボトウキョウ');
insert acc;
// 取引先に紐づく取引先責任者を作成
contact con = new Contact();
con.FirstName ='David';
con.LastName ='cclt';
con.AccountId = acc.Id;
con.Email='cclt.customerportaltest@gmail.com';
insert con;
}
@isTest static void Test_Case_createCommunityUser() {
//取引先責任者IDを取得
Contact con = [select id,FirstName,LastName,AccountId,Email
From Contact limit 1];
User portalUser;
//テスト開始
Test.startTest();
//カスタマーコミュニティユーザ作成処理実行
portalUser = CreateCommunityUser.createCommunityUserByContactId(con.Id);
//テスト終了
Test.stopTest();
//検証
System.assert(portalUser != null);
System.assert(portalUser.Email.equals(con.Email));
}
@isTest static void Test_Case_ContactNameNull() {
// 不正な取引先責任者を作成
contact con = new Contact();
con.FirstName ='';
con.LastName ='cclt';
insert con;
User portalUser;
//テスト開始
Test.startTest();
try {
//カスタマーコミュニティユーザ作成処理実行
portalUser = CreateCommunityUser.createCommunityUserByContactId(con.Id);
} catch (Exception ex) {
//検証
System.assert(ex.getMessage().contains('FIELD_INTEGRITY_EXCEPTION'));
}
//テスト終了
Test.stopTest();
}
}
サンプルコード一覧へ戻る場合は、こちらへ
-
参考サンプルコード(テンプレート)Apex/Lwc/Visualforce/Flow
Salesforceの開発を行うときにベースとなるサンプルコードを探すことが多いので、カテゴリごとにサンプルをまとめてみました。 Apex Apex処理サンプル タイトル サンプルコード 説明 カスタ ...
続きを見る