リードの所有者としてアカウント所有者を割り当てる例
関連付けられたアカウントの所有者に基づいてリード所有者を自動的に設定するように営業アプリケーションを構成できます。
たとえば、営業担当ではない組織の従業員が、関連付けられたアカウントを持つリードを作成したとします。 Groovyスクリプトを使用して、関連付けられたアカウントを所有する営業担当にそのリードを自動的に割り当てることができます。
あなたは営業管理者です。経営陣が、リードの作成または割当後にアカウント所有者をリード所有者として自動設定するスクリプトを作成するよう依頼しました。 Groovyスクリプトを使用して、次のシナリオに対応できます。
-
関連付けられたアカウントでリードが作成され、割当プロセスが実行される場合
-
リードがアカウントなしで作成されたが、アカウントが後で追加され、割当プロセスが実行される場合
インポート管理を使用して作成または更新されたリードのリード所有者としてアカウント所有者を設定することはできません。
リードの作成または割当後のリード所有者としてのアカウント所有者の設定
リードの作成または割当後に、アカウント所有者をリード所有者として設定する方法を次に示します。-
営業管理者ロールを使用してサインインします。
-
サンドボックスを作成し、アクティブ化します。
サンドボックスの詳細は、「サンドボックスの概要」のトピックを参照してください。 -
「アプリケーション・コンポーザ」にナビゲートし、「標準オブジェクト」→「営業リード」を展開し、「サーバー・スクリプト」をクリックします。
-
「トリガー」タブをクリックし、「オブジェクト・トリガー」セクションで「作成」アイコンをクリックします。
-
「データベースでの挿入の前」トリガー・タイプを選択します。 「トリガー名」フィールドに
UpdatLeadOwnerOnCreate
などの名前を入力します。 スクリプトの次の内容をコピーして「トリガー定義」セクションに貼り付けます。if(nvl(CustomerId,null) != null) { def account = newView('OrganizationProfile'); def criteria = account?.createViewCriteria(); def criteriaRow = criteria?.createRow(); criteria?.insertRow(criteriaRow); def criteriaItem = criteriaRow?.ensureCriteriaItem('PartyId'); criteriaItem?.setValue(CustomerId); account?.appendViewCriteria(criteria); account.executeQuery(); if(account.hasNext()) { def accRow = account.next(); def leadResourceIterator = nvl(MklLeadResources,null); if(nvl(accRow?.OwnerPartyId,null) !=null) { setAttribute('OwnerId' , accRow?.OwnerPartyId); def resourceId = accRow?.OwnerPartyId; boolean alreadyOnSalesTeam = false; leadResourceIterator?.reset(); for (; leadResourceIterator?.hasNext(); ) { def mklLeadResourcesVORowImpl = leadResourceIterator.next(); Long existingResourceId = mklLeadResourcesVORowImpl.getAttribute('ResourceId'); if (resourceId.equals(existingResourceId)) { alreadyOnSalesTeam = true; break; } } if(!alreadyOnSalesTeam) { def leadResourceVO = leadResourceIterator.createRow(); leadResourceVO.setAttribute('LeadId',LeadId); leadResourceVO.setAttribute('ResourceId',resourceId); leadResourceVO.setAttribute('PrimaryFlag','Y'); } } } }
-
「保存して閉じる」をクリックします。 新しく作成したトリガーが「オブジェクト・トリガー」セクションに表示されることを確認します。
-
次に、「オブジェクト・トリガー」セクションの「作成」アイコンをクリックして、別のオブジェクト・トリガーを作成します。
-
「データベースでの更新の前」トリガー・タイプを選択します。 「トリガー名」フィールドに
UpdatLeadOwnerOnUpdate
などの名前を入力します。 スクリプトの次の内容をコピーして「トリガー定義」セクションに貼り付けます。if(isAttributeChanged('LastAssignmentDate')){ def account = newView('OrganizationProfile'); def criteria = account?.createViewCriteria(); def criteriaRow = criteria?.createRow(); criteria?.insertRow(criteriaRow); def criteriaItem = criteriaRow?.ensureCriteriaItem('PartyId'); criteriaItem?.setValue(CustomerId); account?.appendViewCriteria(criteria); account.executeQuery(); if(account.hasNext()) { def accRow = account.next(); def leadResourceIterator = nvl(MklLeadResources,null); if(nvl(accRow?.OwnerPartyId,null) !=null) { setAttribute('OwnerId' , accRow?.OwnerPartyId); def resourceId = accRow?.OwnerPartyId; boolean alreadyOnSalesTeam = false; leadResourceIterator?.reset(); for (; leadResourceIterator?.hasNext(); ) { def mklLeadResourcesVORowImpl = leadResourceIterator.next(); Long existingResourceId = mklLeadResourcesVORowImpl.getAttribute('ResourceId'); if (resourceId.equals(existingResourceId)) { alreadyOnSalesTeam = true; break; } } if(!alreadyOnSalesTeam) { def leadResourceVO = leadResourceIterator.createRow(); leadResourceVO.setAttribute('LeadId',LeadId); leadResourceVO.setAttribute('ResourceId',resourceId); leadResourceVO.setAttribute('PrimaryFlag','Y'); } } } }
-
「保存して閉じる」をクリックします。 新しく作成したトリガーが「オブジェクト・トリガー」セクションに表示されることを確認します。
-
サンドボックス環境で次のシナリオを十分にテストします。
-
関連付けられたアカウントでリードが作成され、割当プロセスが実行される場合。
-
リードがアカウントなしで作成されたが、アカウントが後で追加され、割当プロセスが実行される場合。
-
-
テストが正常に検証されたら、サンドボックスを公開します。