Picklist Administration: Manage Your Picklist Values

Admin Intermediate > Picklist Administration > Manage Your Picklist Values

Manage Picklist Values

  1. Setup > Object Manager > Product > Fields & Relationships > Macaron Flavor
  2. 밑에 보시면 Values라고 있어요. 여기에서 목록을 관리할 수 있는데요, 새로운 값을 추가하거나, 보여주는 순서를 바꾸거나, 기존에 어떤 값을 다른 값으로 교체하거나, 아니면 현재 목록을 인쇄할 수 있는 화면도 제공하고요. 추가로 챠트의 색상을 랜덤으로 할지, 각 필드에서 지정한 대로 고정으로 할지도 결정할 수 있습니다.

Active, Inactive, Deleted, and Replaced Values

위의 목록을 보시면 각 항목 앞에 Edit | Del | Deactivate을 클릭할 수 있게 되어 있습니다. 계절이 지난 맛은 Deactivate하거나 인기가 없는 맛은 Delete할 수 있습니다. 여러개 선택해서 상단에 버튼으로 한번에 처리할 수도 있어요.

Edit Picklist Values

위의 목록에서 아무 항목이나 Edit를 클릭해보시면, 기존 값을 변경할 수도 있고, 이 값을 디폴트로 만들거나 챠트에 색상을 지정할 수도 있습니다.

Why a Picklist Value’s API Name Is Important

현재 버젼의 Salesforce는 Picklist에서 항목을 선택했을때 Label이 아닌 API Name을 데이타베이스에 저장합니다. 그래서 API Name만 동일하다면 Label이 바뀌어도 로직에 문제가 없습니다. 여기서 만약에 API Name을 변경해버리면 기존 레코드는 기존의 값을 가지고 있기 때문에 기존 레코드들이 갈 곳을 잃어버리는 경우가 생깁니다. Label은 자유롭게 변경하되 API Name은 여러가지 부분에서 이미 사용되고 있기때문에 변경시 문제를 일으킬 가능성이 있기때문에 각별한 주의가 필요합니다.

Controlling Fields, Dependent Picklists, and Narrowing Values

Setup > Object Manager > Product > Fields & Relationships > Macaron Flavor > Field Dependencies > New에서 Controlling Field와 Dependent Field를 설정하여 생성할 수 있습니다.

Use Formulas for Default Picklist Values

Setup > Object Manager > Product > Fields & Relationships > Macaron Flavor > Edit > General Options > Show Formula Editor를 클릭하면 수식을 넣을 수 있는 화면이 열립니다.

Formula의 가장 기본적인 기능은 주어진 상황에 맞춰서 디폴트선택값을 알아서 착착 선택해서 보여주는 것입니다. 예를 들면, 어떤 고객문의가 들어왔는데 우선순위가 높으면 선배님에게 할당하고, 우선순위가 높지 않으면 후배님에게 할당하도록 한다고 치면 아래와 같이 공식을 만들 수 있습니다.

IF(Priority__c = "높음", "선배님", "후배님")

아니면, 어떤 진상고객이 있는데 그 고객을 김대리한테 할당하고 다른 사람이면 선택안한 상태로..

IF($User.Profile.Name = "오진상", "김대리", null)

날짜기반으로도 선택 기본값을 바꿀 수 있습니다. 마케팅 캠페인이나 분기별 기본값 설정 시 유용합니다.

IF(TODAY() < DATE(2026, 3, 1), "Q1", "Q2")

아니면 다른 필드값 기반으로 Picklist의 기본값을 설정할 수도 있습니다

CASE(Region__c,
     "APAC", "Asia",
     "EMEA", "Europe",
     "Americas")

Change the Field Type to Allow/Prevent Multi-Selection

Field Edit화면의 상단에 Change Field Type버튼을 클릭하면 해당 필드의 Data Type을 변경할 수 있습니다. 예를 들어 여러가지 맛을 선택하게 하고 싶다면 Picklist(Multi-Select)로 바꿀 수 있는데 주의 하셔야할점은 데이타유형이 달라지면 값에 손실이 있을 수 있다는 겁니다. 이 방법은 별로 추천하지 않고요, 차라리 새로운 필드를 만드셔서 데이타타입 맞춰서 그쪽으로 복사하는게 더 안전하고 확실합니다.

Hands-on Challenge

You’ll be completing this unit in your own hands-on org. Click Launch to get started, or click the name of your org to choose a different one.

Your Challenge

Use a formula to define a default picklist value

As an administrator, you want the default value for the macaron flavor to be the flavor of the month for some months, otherwise the default is Vanilla.

  • Use the formula editor to set the Default Value for the Macaron Flavor picklist as follows: CASE(MONTH(TODAY()), 1, "Gingerbread", 2, "Strawberry", 4, "Chocolate", 7, "Raspberry", 11, "Pumpkin", 12, "Mint", "Vanilla")

풀이

Formula사용해서 기본 선택 목록 값 정하기

여러분 관리자로서 마카롱 맛의 기본값을 Vanilla(바닐라)로 설정하되, 특정한 달에는 그 달의 추천 맛을 별도로 설정하고자 합니다.

수식 편집기를 사용해서 Macaron Flavor(마카롱 맛) 선택 목록의 기본값을 다음과 같이 설정합니다. CASE(MONTH(TODAY()), 1, "Gingerbread", 2, "Strawberry", 4, "Chocolate", 7, "Raspberry", 11, "Pumpkin", 12, "Mint", "Vanilla")

  1. Setup > Object Manager > Product > Fields & Relationships > Macaron Flavor > Edit
  2. General Options > Show Formula Editor클릭하면 공식을 넣을 수 있는 텍스트상자가 나타날거에요.
  3. 위의 공식을 텍스트상자에 붙여넣고 Save버튼을 누릅니다.

Picklist Administration: Get Started with Picklists

Admin Intermediate > Picklist Administration > Get Started with Picklists

Overview

어떤 필드는 값을 입력할때 드롭박스를 제공해서 정해진 목록중에 하나를 선택하게 하잖아요. 우리도 때로 필드의 데이타 타입을 Picklist로 만들어야할때가 있어요. 이번 시간에는 기존에 Salesforce에서 제공하는 Standard Picklist와 우리가 만들어서 사용하는 Custom Picklist, 그리고 한번에 다중선택을 가능하게 해주는 Custom Multi-Select Picklist에 대해서 알아보겠습니다.

Standard Picklist

Standard Picklist는 Salesforce에 원래 포함되는 목록입니다. 예를들면, Lead 개체의 Lead Source 선택 목록, Opportunity 개체의 Opportunity Stage 선택 목록 등이 있습니다.

Custom Picklists

어떤 필드를 Custom Picklist로 생성하려면, Object에 들어가서 Fields & Relationships에 들어가서 New버튼을 누르고, Data Type에서 Picklist를 선택하고, Value에 줄바꿈으로 구분하여 선택할 항목들을 나열하면 사용자가 해당 필드에 데이타를 입력할때 나열한 목록 중 하나를 선택하도록 유도하게 됩니다.

목록은 알파벳 순으로 보여줄 수도 있고, 첫번째 항목을 디폴트값으로 정할수도 있고, Restrict picklist to the values defined in the value set체크박스를 활성화 시켜서 나열된 목록의 값 이외의 값을 허용하지 않도록 설정할 수도 있습니다.

Custom Multi-Select Picklists

선택상자 만들때 하나만 선택하게 하는게 있는가하면 여러개 선택할 수 있는 것도 있잖아요. 필드 생성하실때 Picklist 바로 밑에 있는 Picklist (Multi-Select)라는 애를 선택하면 하나 이상의 값을 선택할 수 있어요. 여러개 선택했을때는 값이 세미콜론으로 구분되서 들어가서 보여줄때는 다시 다중선택상자에 값을 선택해서 보여줍니다.

Restricted Picklists

위에서 잠깐 언급했던 Restrict picklist to the values defined in the value set를 선택하지 않으면 나열된 값 이외의 값이 들어갈 여지가 있어요. Salesforce UI를 이용할때는 선택상자에서 값을 선택해야하니까 다른 값이 들어올 일이 없지만 API를 직접호출하거나 API를 이용한 다른 앱이 다른 값을 입력하는 것을 허용한 경우에 다른 값을 저장하도록 허용하게 됩니다. 만약 나열한 값들만 반드시 넣어야한다면 Restrict picklist to the values defined in the value set를 체크해주세요. 그러면 API에서 호출을 한 경우에도 해당 목록이외의 값은 저장하지 않도록 검증을 합니다.

그 값은 필드에서 임의로 목록에 나열을 했든, Global value set에서 목록을 정했든 상관없이 해당 필드에 Restrict picklist to the values defined in the value set가 ON이라면 지정한 목록에 있는 값 이외의 값은 저장 할수 없게됩니다.

Dependent Picklists

이건 종속 선택목록이라고 하는건데요. 예를 들면 산본동을 선택하고 싶은데 우리나라에 동이 엄청 많은데 그롭박스에서 산본동을 찾으려면 스크롤을 많이 내려야할거에요. 그리고 산본동이 다른 시/도에도 있을 수 있잖아요. 그래서 우리는 먼저 시/도를 선택하고 구를 선택하고 그다음에 동을 선택하게 됩니다. 이때 시/도를 선택하면 다음 선택상자에는 해당 시/도에 있는 구만 보여주고 구를 선택하면 동에 해당하는 선택상자에는 해당 구 안에 있는 동만 보여주게 되어서 선택이 더욱 정확하고 용이하게 됩니다.

Compare Picklist Fields

Standard PicklistCustom PicklistCustom Multi-Select Picklist
Add/Remove from Page LayoutsYesYesYes
Delete from Your OrgYesYes
Set a Default ValueYesYesYes
Use a Formula for a Default ValueYesYes
Can Select Multiple ValuesYes
Can Add Values via Apps or APIYesYesYes
Can Be RestrictedYesYes
Can Be a Dependent PicklistYesYes

Hands-on Challenge

Create a custom picklist

You work for a cookie store. You sell lots of macarons. What’s a macaron? A macaron is a cookie that comes in many flavors. So, your customers have a lot of choices.

  • Add a picklist field to the standard Product object with the following settings:
    • Object: Product
    • Field Type: Picklist
    • Field Label: Macaron Flavor
    • Field Name: Macaron_Flavor
    • Make sure Restrict picklist to the values defined in the value set is selected
  • Include the following picklist values:
    • Gingerbread
    • Strawberry
    • Chocolate
    • Raspberry
    • Pumpkin
    • Mint
    • Vanilla
  • Make this field visible to all user profiles

풀이

오늘 도전과제에서는 Custom picklist를 생성할거에요.

오늘 당신은 쿠키가게에서 일합니다. 아주 많은 마카롱을 팔아야해요. 마카롱은 엄청 다양한 맛이 있잖아요. 그래서 고객들은 어떤 맛을 먹을지 선택하게 해드릴게요.

일단 새로운 단원의 첫번째 과제니까 새로운 Playgound(Picklist)를 생성할게요.

Product객체에 아래의 조건으로 picklist필드를 하나 추가합니다.

  1. Setup > Object Manager > Product > Fields & Relationships > New
    • Step 1. Choose the field type
      • Data Type: Picklist
    • Step 2. Enter the details
      • Field Label: Macaron Flavor
      • ✅ Enter values, with each value separated by a new line
        • Gingerbread
        • Strawberry
        • Chocolate
        • Raspberry
        • Pumpkin
        • Mint
        • Vanilla
      • ✅ Restrict picklist to the values defined in the value set
    • Step 3. Establish field-level security
      • 최상단에 ✅ Visible을 체크해서 모든 사람이 다 볼수 있게 합니다.
    • Step 4. Add to page layouts
      • ✅ Product Layout
      • Save

Data Security: Define Sharing Rules

Admin Intermediate > Data Security > Define Sharing Rules

Sharing Rules이란?

어떤 Object의 기본 접근이 Private이면 해당 레코드는 소유자 + 상위역할계층에 있는 사용자만 볼수 있어요. 그런데 여업팀 전체가 볼 수 있어야 하는 상황이라면 Sharing Rule을 만들어서 그 팀에 열어줄 수 있습니다.

공유 규칙을 세울때는

  1. 어떤 레코드를 공유할지
    • 특정 Owner가 소유한 레코드
    • 필드값을 기준으로 레코드 선택가능
  2. 누구와 공유할지
    • 개별사용자
    • Role
    • Role + 하위역할
    • Territory
    • Territory + 하위역할
    • 혹은 Public Group
  3. 어떤 권한을 줄지
    • Read-Only
    • Read/Write

Public Group은 관리자가 필요에 따라 만든 사용자 그룹인데 역할이나 프로필이 서로 다른 사람들을 하나도 묶어야 하는 경우에 만들어서 사용합니다. Sharing Rule을 만들기 전에 Public Group을 우선적으로 만들어서 Sharing Rule에서 사용하는게 만들기도 쉽고, 나중에 유지보수도 쉬워집니다. 조직이 바뀔때 나중에 Public Group만 수정하면 되거든요.

Recruiting App에서의 Sharing Rules

Sharing Rule은 관리자가 미리 정적으로 정의할 수 있으면 규칙을 만들 수 있고, 레코드가 매번 임의로 달라지면 Sharing Rule로는 규칙을 만들 수 없고 다른 방법으로 권한을 줘야해요. Sharing Rule은 자동 + 일괄로 적용이 되야 하거든요.

Sharing Rule은 보통 모든 레코드를 어떤 그룹이나 역할에 속한 사람 전부에게 항상 동일한 조건으로 접근 권한을 주어야 할때 사용합니다. 누가 대상인지가 미리 고정이 되어야 가능해요.

만약 레코드마다 대상 사용자가 바뀌거나, 같은 객체에서 이 레코드에서는 이사람, 저 레코드에서는 다른사람이 권한을 가져야하는 상황인데 나중에 그게 누가 배정될지 모르는 상황이라면 Sharing Rule로 권한을 주기에는 어려운 부분이 있어요.

채용앱에서 어떤것이 Sharing Rules로 만들 수 있는 것인지 생각해볼게요

  • Recruiters
    • Read/Write
      • Position
      • Candidate
      • Job application
      • Review
      • Yes. Recruiters들은 구인관련해서 모든 포지션, 모든 지원자, 그리고 모든 지원서와 리뷰상황등을 전부다 볼 수 있어야합니다.
  • Hiring Managers
    • Read/Write
      • Position
      • No. Hiring Managers에 들어간 모든 사람이 모든 Position에 읽고 쓰기가 가능하면 안되요. 오직 자기가 관리하는 포지션만 쓸수 있어야해요. 그런데 포지션이 열릴때마다 Hiring Manager는 매번 바뀌기 때문에 자동으로 예측하고 미리 규칙을 정해놓는 것이 불가능합니다. 이건 매번 포지션이 나올때마다 수동으로 Hiring Manager를 지정해주어야 하기 때문에 미리 Sharing Rule을 만들 수 없어요.
    • Read
      • Candidate
      • No. Cadidate은 Position에 묶여 있지 않아서 어떤 지원자를 Hiring Managers들이 봐도 되는지 안되는지는 나중에 그 지원자의 Position이 결정되면 그때 알 수 있어요. 한명의 지원자가 여러개의 포지션에 지원할 수도 있는 거잖아요. 그래서 모든 Hiring Manager들이 전부 모든 Candidate을 볼수 있게 할 수는 없어요.
      • Read/Write
        • Job Application
        • Review
        • Yes, Cadidate과는 달리 Job Application이나 Review는 정보 입력시에 Position에 항상 정해져있어요. 그래서 어떤 Hiring Manager에게 보여줄지를 미리 정할 수 있습니다.
  • Interviewer
    • Read
      • Candidate
      • Job Application
      • No, 어느 포지션을 누가 면접볼지는 미리 결정 할 수 없으므로 공유규칙 불가능
ObjectLabelTargetLevel
ReviewEdit ReviewsRecruiters & Hiring ManagersRead/Write
Job ApplicationEdit Job ApplicationsRecruiters & Hiring ManagersRead/Write
CandidateEdit CandidatesRecruiting Manager + 하위역할Read/Write
PositionEdit PositionsRecruiting Manager + 하위역할Read/Write

Create a Public Group

  1. Setup > Quick Find > Public Groups > New
    • Label: Reviewers
    • Save
  2. Public Groups > Reviewers > View Summary
  3. All Public Group Members 에서 Add Members를 클릭해주세요.
  4. 각 탭에 개별 사용자, 역할별, 영역별 등 다양한 조합의 사용자 그룹을 선택할 수 있습니다.
    아래 역할을 추가해주세요.
    • Role: SW Dev Manager
    • Role: Director Product Management
    • Role: Director QA
    • Role and Internal Subordinates: Recruiting Manager
  5. Save

Define a Sharing Rule

  1. Setup > Quick Find > Sharing Settings
  2. Manage sharing settings for: Review
  3. Sharing Rules > New
    • Rule Name
      • Label: Edit Reviews
    • Select your rule type
      • ✅ Based on record owner
    • Select which records to be shared
      • Public Groups > All Internal Users
    • Select the users to share with
      • Public Groups > Reviewers
    • Select the level of access for the users
      • Read/Write
    • Save
  4. Message
    • The recalculation of sharing access will continue in the background. You’ll receive an email notification upon completion. Do you want to continue?
    • OK

Hands-on Challenge

Create a Sharing Rule for the Program Object

The Program object has an org-wide default of Private, but recruiters need access to any Campus Outreach programs for recruitment purposes. Create a custom picklist field on the Program object, then create a criteria-based sharing rule to share the necessary records with the recruiters.

Need Help?

Before You Start

  • Make sure you complete the hands-on challenges in the previous units of this module before you attempt this challenge. The work you do here builds on work you do in those units.
  • If you haven’t created a custom field before, complete the Data Modeling module before you attempt this challenge.
  • Create a custom field for the Program object:
    • Field Type: Picklist
    • Field Label: Type복사
    • Field Name: Type복사
    • Values (each value separated by a new line):
      • Campus Outreach복사
      • Development복사
      • Research복사
    • On the field-level security page, set this field as Visible for all profiles or as Read Access for all permission sets. (This step assures the challenge passes.)
  • Create a sharing rule for the Program object:
    • Label: Campus Outreach Programs
    • Rule Name: Campus_Outreach_Programs복사
    • Rule Type: Based on criteria
    • Field: Type
    • Operator: equals
    • Value: Campus Outreach
    • Share with (role): Recruiter
    • Access level: Read/Write

풀이

Program객체에 대해서 Sharing Rule을 만들어주세요.

Program객체는 OWD에서 Private으로 권한이 설정되어 있습니다. 그런데 Recruiters들이 Campus Outreach Programs에 대한 접근 권한을 요구합니다. Program객체에 picklist타입으로 필드를 하나 만들고 Campus Outreach Programs랑 다른 프로그램도 넣을 수 있게 한뒤, criteria-based sharing rule을 만들어서Campus Outreach Programs에 해당하는 레코드만 Recruiters들과 공유하세요.

이전 강좌들의 도전과제를 완료하지 않았다면 본 과제를 완료할 수 없습니다.

Program객체를 생성해주세요

  1. Setup > Object Manager > Create > Custom Object
    • Label: Program
    • Plural Label: Programs
    • Save

Program객체에 아래의 필드를 추가해주세요

  1. Setup > Object Manager > Program > Fields & Relationships > New
    • Step 1. Choose the field type
      • Data Type: Picklist
    • Step 2. Enter the details
      • Field Name: Type
      • ✅ Enter values, with each value separated by a new line
        • Campus Outreach
          Development
          Research
    • Step 3. Establish field-level security
      • 모든 Permission Sets에 Read Access

Program객체에 Sharing Rule을 생성하세요.

  1. Setup  > Quick Find > Sharing Settings
  2. Manage sharing settings for: Program
  3. Sharing Rules > New
    • Step 1. Rule Name
      • Label: Campus Outreach Programs
      • Rule Name: Campus_Outreach_Programs
    • Select your rule type
      • Based on criteria
    • Select which records to be shared
      • Field: Type
      • Operator: equals
      • Value: Campus Outreach
    • Select the users to share with
      • Roles > Recruiter
    • Select the level of access for the users
      • Access level: Read/Write
    • Save
  4. Message
    • The recalculation of sharing access will continue in the background. You’ll receive an email notification upon completion. Do you want to continue?
    • OK

Data Security: Create a Role Hierarchy

Admin Intermediate > Data Security > Create a Role Hierarchy

Overview

이번 시간에는 조직의 계층별로 데이타에 접근하는데 권한에 차등을 두어 윗사람은 아랫사람의 데이타를 보고 아랫사람은 동료나 윗사람의 데이타를 볼 수 없는등의 설정을 하도록 하겠습니다.

Define ‌Role Hierarchy

역할계층 구조를 보기 위해서 Setup > Quick Find > Roles > Set Up Roles를 클릭하세요.

    Organization’s Role Hierarchy페이지 우측에 보면 드롭박스가 있는데 이는 3가지 화면 구성을 제공합니다. 가장 먼저 보이는 화면 구성은 Tree View이고 계층적 구조를 한눈에 파악할 수 있어서 편리합니다. 그리고 Show in sorted list view는 알파벳순으로 볼 때 편리하고, Show in list view는 목록형태로 보여주돼 Depth를 주어서 소속관계를 한눈에 파악 할 수 있습니다. 우측 드롭박스를 클릭하셔서 다양한 뷰의 형태를 직접 사용해 보시기 바랍니다.

    들어가자마자 보이는건 Tree View입니다. Expand All을 클릭해서 전체 역할 계층을 한눈에 확인 할 수 있습니다.

    본 유닛에서 VP Human Resources에 Onboarding Manager을 추가하라고 하는데 VP Human Resources가 Roles에 존재하지 않아요. 그래서 VP Human Resources를 먼저 추가하고 계속 진행하도록 하겠습니다.

    1. Tree view에서 SVP, Human Resources를 찾아주세요.
    2. 그 바로 아래에 있는 Add Role버튼을 클릭해주세요.
      • Label: VP Human Resources
      • Role Name: VP Human_Resources
      • This role reports to: SVP, Human Resources
      • Save

    이제 Onboarding Manager Role을 추가해볼게요

    1. Tree view에서 VP Human Resources를 찾아주세요.
    2. 그 바로 아래에 있는 Add Role버튼을 클릭해주세요.
      • Label: Onboarding Manager
      • Role Name: Onboarding_Manager
      • This role reports to: VP Human Resources
      • Save

    길이가 긴 역할 이름은 보고서 열에서 추가 공간을 차지하므로 Role Name as displayed on reports에 짧지만 읽기 쉬운 약어를 사용하는 것이 좋습니다

    새로 추가한 Role에 사용자를 할당해 볼게요.

    1. 현재 화면(Roles > Onboarding Manager)에서 Assign Users to Role버튼을 클릭해주세요.
    2. Available Users에서 All Unassigned를 선택하면 역할이 정해지지 않은 사용자들이 보입니다.
    3. 목록에서 사용자를 선택하고 Add버튼을 누르면 Selected Users for Onboarding Manager로 사용자가 들어갑니다.
    4. Save버튼 클릭하고 나오면 하단에 추가된 사용자가 보일거에요.

    Hands-on Challenge

    Create the Role Hierarchy for the Human Resources Department

    Finish setting up the Recruiting Manager and Recruiter roles. Remember that the VP Human Resources can see records owned by or shared to users in the Recruiting Manager role. And Recruiting Managers can see the data that Recruiters can access.

    Need Help?

    • Create the Recruiting Manager role:
      • Label: Recruiting Manager
      • Role Name: Recruiting_Manager
      • Reports to: VP Human Resources
    • Create the Recruiter role:
      • Label: Recruiter
      • Role Name: Recruiter
      • Reports to: Recruiting Manager

    풀이

    인사팀에 역할계층을 생성합니다.

    Recruiting Manager를 생성하고, Recruiting Manager가 만든 데이타나 Recruiting Manager에게 공유된 데이타는 VP Human Resources가 전부 볼수 있어야합니다. 그리고 Recruiting Managers는 Recruiters가 접근할 수 있는 모든 데이타를 볼 수 있어야합니다.

    1. Setup > Roles > Set Up Roles
    2. VP Human Resources를 찾아서 그 밑에 Add Role을 클릭해주세요
      • Label: Recruiting Manager
      • Role Name: Recruiting_Manager
      • This role reports to: VP Human Resources
      • Save
    3. Setup > Roles > Set Up Roles
    4. Recruiting Manager를 찾아서 그 밑에 Add Role을 클릭해주세요
      • Label: Recruiter
      • Role Name: Recruiter
      • This role reports to: Recruiting Manager
      • Save

    Data Security: Control Access to Records

    Admin Intermediate > Data Security > Control Access to Records

    Overview

    이번 시간에는 레코드 단위로 접근을 제한 하는 방법에 대해서 알아보도록 하겠습니다.

    Record-Level Security

    To control data access precisely, you can allow particular users to view specific fields in a specific object, but then restrict the individual records they’re allowed to see. Record access determines which individual records users can view and edit in each object they have access to. First ask yourself these questions:

    데이터 액세스를 정확하게 제어하기 위해 특정 사용자가 특정 개체의 특정 필드를 볼 수 있도록 허용하되, 볼 수 있는 개별 레코드를 제한할 수 있습니다. 레코드 액세스를 통해 사용자는 액세스할 수 있는 각 개체에서 보고 편집할 수 있는 개별 레코드를 결정할 수 있습니다. 먼저 다음 질문을 해보세요.

    데이타접근을 좀더 세부적으로 제한하는 방법에는 특정 사용자가 특정 개체나 그 개체의 특정 필드를 볼 수 있도록 허용을 하는 방법에 대해서 배웠는데요, 이제는 레코드 마저도 어떤 레코드를 볼 수 있게 할지 편집은 하게 할지 말지를 결정할 수 있습니다. Record Access를 통해서 어떤 사용자가 어떤 데이타를 보고, 또는 편집할 수 있는지 등을 결정하게 됩니다.

    레코드 단위 접근제한 방법

    레코드 단위로 접근을 제한 하는 방법에는 4가지가 있습니다:

    1. Organization-Wide Defaults (OWD)
      • 조직내 모든 사용자에게 부여되는 기본적인 접근권한입니다.
      • 보통 가장 제한적으로 설정하고 필요에 따라 권한을 할당하는 식으로 관리합니다.
    2. Role Hierarchy (역할 계층)
      • 회사 조직 구조처럼 상사하 아랫사람의 레코드를 자동으로 볼수 있게 합니다.
    3. Sharing Rules (공유규칙)
      • 특정 사용자 그룹이나 역할에 대해 레코드를 자동으로 공유합니다.
      • OWD에 권한이 없어서 접근이 안될때 권한을 부여하기 위해 사용합니다.
    4. Manual Sharing (수동공유)
      • 레코드를 소유한 사람이 다른 사용자에게 특정 레코드를 공유할 수 있습니다.
      • 규칙에 따라 자동으로 공유가 되는 것이 아니고 특별한 경우에 예외적으로 사용하는 방법입니다.

    Org-Wide Sharing Defaults

    1. Setup > Quick Find > Sharing Settings
    2. Organization-Wide Defaults 안에 보면 Edit버튼이 있습니다. 클릭하시만 아래와 같은 화면이 뜨는데요. 여기에서 Default Internal Access와 Default External Access를 설정하실 수 있으세요.
    3. 아래처럼 변경해주세요:
      • Default Internal access
        • Position: Public Read Only
        • Candidate: Private
        • Job Application: Private
        • Review: Private
      • Default external access
        • Position: Private
        • Candidate: Private
        • Job Application: Private
        • Review: Private
    4. Save

    참고로, OWD에서 Default로 선택할 수 있는 선택지는 객체마다 다를 수 있습니다. 어떤 객체는 더 많은 옵션을 가지기도 하고 어떤 객체는 아예 Controlled by Parent 같은 특수 옵션이 있기도 하고 어떤 표준 객체는 Private를 지원 안 할 수도 있고 어떤 건 Public Read Only만 있기도 합니다. Custom Object는 OWD옵션이 항상 3개(Private, Public Read Only, Public Read/Write)로 고정입니다. Controlled by Parent나 Public Read/Write/Transfer같은 옵션은 표준객체에만 제공되는 옵션입니다.

    Role Hierarchy를 통해 상위 역할(매니저)는 하위 역할(부하 직원)의 레코드를 자동으로 볼수 있어요. 하지만 이걸 막고 싶을때 Grant Access Using Hierarchies 체크박스를 해제 하면 레코드의 소유자와 각종 접근 규칙으로 권한을 부여받은 사람만 접근이 가능하고 상사라고해서 부하직원 파일을 볼수 있고 그런게 없어져요.

    OWD를 변경하면 자동으로 Sharing Recalculation이 실행되서 기존에 있던 레코드들에 대해서 누가 볼수 있고, 누가 수정할 수 있는지 다시 계산을 합니다. 이때 Salesforce가 백그라운드 작업을 돌리게 됩니다.

    OWD에서 권한을 너무 짜게 줘서 활동에 제한이 있을수 있어요. 그럴때는 위에서 소개한 Record-Level Security의 다음 단계들을 설정해서 권한을 열어주도록 합니다.

    Hands-on Challenge

    Configure Organization-Wide Defaults

    For the Recruiting app, you must create a custom object to track referrals for positions. Referral records by default should be visible only to the record owner and shouldn’t be visible to users above the owner in the role hierarchy. Create the Referral custom object, then update the organization-wide default sharing setting for the Referral object.

    Need Help?

    Before You Start

    • If you haven’t learned how to create a custom object, complete the Data Modeling module before you attempt this challenge.
    • Create a custom object:
      • Label: Referral
      • Plural Label: Referrals
      • Object Name: Referral
      • Record Name: Referral Name
      • Record Name Data Type: Text
    • Configure organization-wide default sharing settings for the Referral object so that Referral records are visible only to the record owner
    • Configure the sharing settings so that Referral records aren’t visible to users above the owner in the role hierarchy. (We won’t check for this.)

    풀이

    Custom Ojbect만들기

    1. Setup > Object Manager > Create > Custom Object
      • Label: Referral
      • Plural Label: Referrals
      • Object Name: Referral
      • Record Name: Referral Name
      • Record Name Data Type: Text
    2. Save

    OWD설정하기

    1. Setup > Quick Find > Sharing Settings
    2. Organization-Wide Defaults 안에 보면 Edit버튼이 있습니다.
    3. Referral객체를 찾아서 해당 사용자만 볼수 있게 변경합니다.
      • Internal Access: Private
      • External Access: Private
    4. 윗사람이 데이타를 볼 수 없게 합니다.
      • 옆에 Grant Access Using Hierarchies의 체크박스를 Uncheck하세요.
    5. Save

    Data Security: Control Access to Fields

    Admin Intermediate > Data Security > Control Access to Fields

    Overview

    회사 직원들의 이름과 전화번호는 모든 직원들에게 공유되어도 되지만 연봉같은 정보는 특정 사람들에게만 보여주어야하고, 입사지원자들의 이력서는 채용에 가담하는 모든 사람들이 볼 수 있어야하지만 SSN같이 예민한 정보는 숨겨야하는 경우가 있잖아요. 그럴때 Object단위가 아닌 Field단위로 권한을 제한 할 수 있습니다.

    자세한 설명은 나중에 하겠지만 오해를 만들지 않기 위해서 한가지 짚고 넘어 가자면,
    일부 Field permissions는 항상 활성화되어 있으며 Permission Sets이나 Profile에서 그 권한을 수정할 수 없습니다.

    Permission Set에 필드권한 주기

    지난 시간 사용했던 채용앱에서 입사지원자들의 면접이 끝났다고 쳐요. 그러면 면접관들이 지원자들에 대한 면접결과를 입력해야하는데 이때 필요한 정보를 읽는 것을 허용하고, 필요한 필드들을 수정하는 것을 허용하도록 Permission Set을 만들어 보도록 할게요.

    이제 Permission Set를 생성할게요.

    1. Setup > Quick Find > Permission Sets > New
      • Lable: Update Candidate Records
      • License: -None-
    2. Save
    3. Find Settings 검색창에 Candidates를 검색해서 선택하고 Edit버튼을 클릭합니다.
    4. Object Permissions 아래에 Read권한을 활성화 시켜주세요.
    5. Field Permissions에서 필요한 Field들만 권한을 허용해주세요.
    6. Click Save

    다중 Permission Sets에 필드권한 주기

    우선, 다중 Permission Set에 필드권한 주는 기능을 허용하도록 설정을 변경합니다.

    1. Setup > Quick Find > User Management Settings
    2. Field-Level Security for Permission Sets during Field Creation 활성화

    그리고 지난 시간에 설치한 Recruiting App에 진행에 필요한 필드가 빠져있어서 필드하나 추가하고 넘어가겠습니다.

    1. Setup > Object Manager > Candidate > Fields & Relationships > New
      • Data Type: Picklist
      • Field Label: Job Category
      • Select ✅ Enter values, with each value separated by a new line
    2. Next, Next, Save

    이제 여러개의 Permission Set에 한번에 필드권한을 부여해보도록 하겠습니다.

    1. Setup > Object Manager > Candidate > Fields & Relationships > Job Category
    2. 상단에 Set Field-Level Security버튼을 클릭합니다.
    3. Select ✅ Permission sets with object permissions
    4. Job Category필드가 Update Candidate Records Permission Set에서 읽고 편집이 가능하도록 Read Access와 Edit Access의 체크박스를 ✅체크합니다.
    5. Save

    Hands-on Challenge

    Create a Permission Set to Handle Field Access

    One of the requirements of our Recruiting app is that Hiring Managers can update job applications, but they can’t change the related candidate or position. Create a permission set that gives the correct access.

    Need Help?

    • Create a permission set:
      • Label: Manage Job Applications
      • API Name: Manage_Job_Applications
      • Add a description (We won’t check for this.)
      • License: -None-
      • Enable Job Application Object Permissions: Read and Edit
      • Enable Job Application Field Permissions: Assigned users can view all fields and edit all fields, except they can’t edit Position and Candidate.

    풀이

    Handle필드에 접근하기위한 Permission Set생성하기

    Hiring Manager가 지원서를 편집할 수 있게 해주세요. 단, Related candidate이나 Position필드는 변경할 수 없게 해주세요.

    여기서 우리는 작업을 담당하는 Permission Set과 사람을 담당하는 Permission Set Group을 만들거에요.
    Permission Set에는 Job Application을 관리하는 권한을 부여하고,
    Hiring Manager Permission Set Group을 만들어서 에 해당 Permission Set을 추가할거에요.

    Job Application의 Candidate(Lookup)과 Position(Lookup)이 두가지 필드를 삭제하고 다시 생성한 뒤 계속 진행할게요.

    1. Setup > Object Manager > Job Application > Fields & Relationships
    2. Candidate과 Position레코드의 맨 뒤에 드롭박스에서 Delete버튼을 클릭해서 두개다 삭제해줍니다.
    3. New버튼을 클릭해서 Custom Field로 다시 만들어 줍니다.
      • Data Type: Text
      • Field Label: Candidate
      • Length: 10
    4. Next, Next, Save
    5. New버튼을 클릭
      • Data Type: Text
      • Field Label: Position
      • Length: 10
    6. Next, Next, Save

    위의 두개 필드를 다시 생성해주는 이유는 아래 Permission Set에서 권한을 제거해야하는데 두개 필드가 System Field라서 선택상자가 비활성화 되어 있어서 체크를 해지할 수 없기 때문에 과제가 완료가 되지 않습니다. 그래서 해당 필드들을 Custom Field로 임의로 변경해서 나중에 체크를 해제할 수 있도록 하기 위함이에요.

    지원서를 관리할 수 있는 Permission Set을 만들게요

    1. Setup > Permission Sets > New
      • Label: Manage Job Applications
      • API Name: Manage_Job_Applications
      • Description: This is a permission set to manage job applications
      • License: -None-
    2. Save
    3. Find Settings 검색창에 Job Application를 검색해서 선택하고 Edit버튼을 클릭합니다.
    4. Object Permissions 아래에 Read랑 Edit권한을 활성화 시켜주세요.
    5. 그리고 Field Permissions의 모든 필드에 Read Access와 Edit Access를 부여하되, 단 Position과 Candidate필드 두개는 편집권한을 부여하지 않습니다.

      아까 우리가 필드를 Custom Field로 바꾸지 않았다면 아래와 같이 해당 체크박스가 비활성화가 되어서 선택을 해지할 수 없게 되어서 도전과제에 실패하게 됩니다.

    6. Save버튼을 클릭해서 도전과제를 완료합니다.

    참고로 도전과제에서 Position과 Candidate필드는 제외하고 나머지 Field Permissions를 모두 권한을 부여하라고 지시하고 있는데요. Position과 Candidate은 체크가 비활성화 되어있어서 체크를 없앨수가 없어요. 그런데 어차피 System Field라서 누구도 조작이 불가능합니다. 그래서 이대로 체크를 내버려 두고 진행을 하시면 될것 같아요.

    여기까지가 도전과제였지만 사실 이대로 서비스를 할 수는 없으니까 서비스 하는 차원에서 마무리를 해볼게요.
    이하 내용은 제가 임의로 연습하는 거니까 도전과제의 일부는 아니에요.

    이제 Permission Set Group을 만들고 방금 만든 Permission Set을 추가할게요.

    1. Setup > Permission Set Groups > New Permission Set Group
      • Label: Hiring Managers
      • API Name: Hiring_Managers
      • Description: This is a permission set group for the hiring managers
    2. Save
    3. Permission Sets in Group을 클릭하세요.
    4. Add Permission Set버튼을 클릭하세요.
    5. Manage Job Applications를 찾아서 앞에 체크박스에 ✅체크를 한뒤 상단에 Add버튼을 눌러주세요.
    6. Done

    이제 Hiring Managers에 사용자를 추가하겠습니다.

    1. Setup > Permission Set Groups에서 API Name이 Hiring_Managers인것을 찾아서 클릭하세요.
    2. 상단에 Manage Assignments버튼을 클릭하세요.
    3. Add Assignment버튼을 클릭하세요.
    4. 그룹에 추가하고자 하는 사용자들을 전부 선택한 뒤 Next
    5. Assign > Done

    Data Security: Control Access to Objects

    Admin Intermediate > Data Security > Control Access to Objects

    Overview

    Salesforce에서 객체는 데이터 저장 단위입니다. 예를 들어 Account, Contact, Lead 같은 것이 객체입니다. 이 모듈에서는 사용자가 특정 객체를 Create, Read, Edit, Delete 할 수 있는지를 제어하는 법을 배웁니다.

    Installation

    진행을 위해 Recruiting App 패키지를 설치해주세요.

    Package ID: 04t0P000000N9rs

    Learning Objectives

    이 모듈을 완료하면 다음을 할 수 있어요:

    • Explain the difference between profiles, permission sets, and permission set groups.
    • Modify access to objects.
    • Clone and assign a profile.
    • Create and assign new permission sets.
    • Create and assign new permission set groups.

    Manage Object Permissions

    Profiles

    • 사용자 기본 설정을 담고 있는 가장 기본적인 보안 설정 그룹
    • 객체 권한, 페이지 레이아웃, 앱 접근 등 기본 액세스를 결정
    • 한 사용자에 한 프로필만 할당 가능

    Permission Sets

    • 객체, 필드, 앱 등에 대한 권한을 추가로 부여할 때 사용
    • 프로필보다 유연하고 재사용 가능
    • 여러 퍼미션 세트를 한 사용자에게 할당할 수 있음

    Permission Set Groups

    • 여러 퍼미션 세트를 묶어서 한 번에 할당할 수 있게 함
    • 예) Sales Rep, Recruiter 같은 직무 기반 그룹 생성 가능
    • 퍼미션 세트들을 그룹으로 묶어서 관리 효율성 향상

    실전 예시: Recruiting 앱 객체 접근

    Custom ObjectRecruiterHiring ManagerInterviewerStandard Employee
    PositionRead Create EditRead Create Edit*Read (No min/max bonus)Read (No min/max bonus)
    CandidateRead Create EditRead* (No SSN)Read * (No SSN)Not Applicable
    Job ApplicationRead Create EditRead Edit (No lookup fields)Read *Not Applicable
    ReviewRead Create EditRead Create EditRead ** Create Edit **Not Applicable

    Profiles 설정

    위에서도 언급했듯이 사용자는 오직 단 하나의 Profile만 가질 수 있어요. 사용자를 생성할때 Salesforce가 정한 몇가지 기본 프로필 중에 하나를 선택하게 되는데 이 종류는 다음과 같습니다:

    • Standard User
      • 레코드를 만들고 편집
      • Object 권한을 편집할 수 없음
      • 기존 프로필을 복제하고 이를 새 프로필의 기초로 사용하여 필요에 따라 설정을 조정할 수 있음
    • Marketing User
    • Contract Manager
    • System Administrator
      • 데이터에 대한 가장 광범위한 액세스 권한
      • Salesforce를 구성 및 사용자 정의할 수 있는 가장 강력한 기능
      • 모든 데이터 보기 및 모든 데이터 수정이라는 두 가지 특수 권한이 포함
    • Minimum Access – Salesforce
      • 레코드를 볼 수 있지만 만들거나 편집할 수는 없음

    가능하면 항상 최소 액세스 Salesforce 프로필(또는 그 복제본)을 사용한 다음 권한 집합 및 권한 집합 그룹을 사용하여 사용자에게 필요한 권한만 부여하는 것이 좋습니다.

    프로필에서 이러한 기능을 구성하는 것이 좋습니다.
    – 기본 앱 및 레코드 유형
    – IP 범위
    – 로그인 시간
    – 페이지 레이아웃 할당

    Create and Assign a Profile

    프로필을 만들어 볼건데요. 맨땅에 헤딩하는거 보다 기존에 프로필중에 하나를 선택해서 복사한다음 수정하는게 가장 쉬워요.

    Profile을 생성하기 전에 Profile생성 화면을 탭별로 깔끔하게 보여주도록 변경하는 설정을 우선적으로 하고 넘어갈게요.

    1. Setup > Quick Find > User Management Setting여기 가시면 여러가지 설정을 ON/OFF할 수 있는데요.
    2. 이중에 Enhanced Profile User Interface를 찾아서 활성화를 시켜주세요.
      • 설정옵션 바로 밑에 설명대로 이 옵션을 활성화 하면 프로필에서 검색하고 수정할때 UI가 개선됩니다.

    ❌ ❌ ❌ Trailhead에서 시키는대로 User Management Setting에 가서 Enhanced Profile User Interface를 활성화 해주면 Profile에서 Edit버튼이 보이지 않아요.

    Profile 복제하여 생성

    1. Setup > Quick Find > Profiles에 들어가보시면 기존에 선언된 여러 Profile이 있는데요.
    2. 레코드 맨앞에 Clone을 클릭하면 해당 레코드를 똑같이 복제해서 하나 더 만들 수 있는데요.
    3. Minimum Access – Salesforce를 찾아서 Clone버튼을 누릅니다.
    4. 그 다음 복사할 Profile의 새로운 이름만 넣어주고 Save버튼 누르면 복제가 완료됩니다.
    5. 복제된 Profile의 상세화면을 보여주네요
    6. 여기서 Edit버튼을 눌러서 각종 설정을 변경할 수 있습니다.

    해당 Profile을 User에 할당하기

    1. Setup > Quick Find > Users > testuser > Edit
      • Profile: Test Profile
    2. Save

    Permission Sets & Permission Set Groups

    Permission Set / Permission Set Group을 사용하면 관리가 훨씬 편해집니다. 프로필만으로 권한을 관리하면 사용자마다 수많은 프로필을 만들어야 할 수도 있습니다. 반면 Permission Set + Permission Set Group 구조는 Lego 블록처럼 권한 조각을 조합해서 필요할 때마다 재사용할 수 있습니다.

    Permission Set

    Permission Set은 사용자에게 특정 권한들을 추가로 부여하는 설정입니다. 예를 들어, 어떤 사용자에게 “리드 관리 권한”, “리포트 생성 권한” 등 필요한 권한만 묶어서 줄 수 있습니다. Profile과 달리 한 사용자에게 여러 Permission Set을 부여할 수 있어 유연합니다. Permission Set은 프로필(profile)을 변경하지 않고도 권한을 보완할 수 있는 좋은 방법입니다.

    Permission Set Group

    Permission Set Group은 여러 Permission Set을 묶어놓은 그룹입니다. 즉, 여러 개의 Permission Set을 하나의 묶음으로 만들어서 그룹 단위로 사용자에게 할당할 수 있어 관리가 더 쉬워집니다. 이 그룹은 하나 이상의 Permission Set을 포함하며, 사용자가 이 그룹에 할당되면 그 안의 모든 권한을 자동으로 얻게 됩니다.

    예를 들어:
    영업팀과 마케팅팀 모두 리드 삭제(Delete) 권한이 필요하다고 해봅시다.
    이때 “리드 관리” Permission Set 하나만 만들고, Sales 스택 그룹과 Marketing 스택 그룹에 이 Permission Set을 추가하면 됩니다. 나중에 수정이 필요할 때도 그 하나의 Permission Set만 변경하면 됩니다.

    아래는 Permission sets에서 설정할 권한과 기능들입니다:

    • Apex classes
      • Apex 코드에 접근할 수 있는 권한
      • Apex Class = Salesforce에서 개발자가 만든 서버 로직
      • 이 사용자가 특정 Apex 클래스를 실행할 수 있는지를 설정하는 것임
        • Lightning Component
        • Flow에서 Apex 호출
        • Custom Button / Automation 뒤에 Apex가 있을 때
    • Connected app access
      • 외부 앱이 Salesforce에 접근하도록 허용
      • Connected App = Salesforce ↔ 외부 서비스 연결 (OAuth)
      • 예시
        • Google, Slack, DocuSign
        • 외부 모바일 앱
        • API 연동 툴
      • 이 사용자가 어떤 Connected App을 사용할 수 있는지
      • 이 유저가 이 외부 앱으로 로그인/연동해도 되는가? 하는 걸 설정함
    • Custom permissions
      • 논리적인 권한 플래그
      • 비즈니스 규칙용 스위치
      • UI 권한이 아니라 개발자가 쓰는 조건용 권한
      • Apex / Flow / Validation Rule에서 사용
      • 예시
        • Can_Approve_Discount
        • Can_See_Internal_Notes
      • 화면에서 버튼을 보이게 할지
      • 특정 로직을 실행할지
      • 승인 가능 여부 판단
    • Field permissions
      • 필드 단위 접근 권한
      • 객체 안의 개별 필드 설정 가능:
        • Read (보기)
        • Edit (수정)
      • 예시
        • Salary 필드
        • HR: Read/Edit
        • 일반 직원: No access
      • 이 필드를 볼 수 있나? 수정할 수 있나?등을 설정
    • Object permissions
      • 객체 단위 CRUD 권한
      • 객체 전체에 대한 권한
      • 설정 항목:
        • Create
        • Read
        • Edit
        • Delete
        • View All
        • Modify All
      • 예시
        • Opportunity
        • Sales: Create/Edit
        • Support: Read only
      • 이 객체로 레코드를 만들고/보고/수정/삭제할 수 있나?
    • User permissions (= App Permissions + System Permissions)
      • App Permissions
        • 특정 Salesforce 기능 사용 권한
        • 예:
          • Run Reports
          • Import Wizard
          • Access Activities
      • System Permissions
        • 관리자급 기능
        • 예:
          • Customize Application
          • Modify All Data
          • View Setup
      • Salesforce 기능 자체를 쓸 수 있느냐의 문제
    • Tab settings
      • 탭이 보이느냐 안 보이느냐
      • 설정 옵션:
        • Default On (항상 보임)
        • Default Off (숨김)
        • Tab Hidden (완전 숨김)
      • 예시
        • Campaign 탭
          • 마케팅팀: Default On
          • 영업팀: Hidden
      • UI에 보이게 할지 말지
    • Visualforce pages
      • Visualforce 페이지 접근 권한
      • Visualforce = Salesforce의 구형 커스텀 UI 기술 설정
        • 이 사용자가 어떤 VF 페이지를 열 수 있는지
      • 언제 필요?
        • 아직 VF 기반 페이지를 쓰는 조직
        • 커스텀 버튼 / 링크가 VF로 연결될 때
      • Apex와 비슷하게 개발된 화면 접근 권한
    항목느낌
    Object / Field데이터 접근
    User / Tab기본 기능 & 화면
    Apex / VF개발 기능
    Connected App외부 연동
    Custom Permission조건 판단용

    어떤 권한을 “없애려면” 그 권한이 들어 있는 모든 Permission Set 및 Group에서 다 제거해야 합니다. 여러개의 Permission Set를 사용자에게 부여했을때 나중에 준 권한이 이전 권한을 덮어쓰지 않기 때문에 사용자에게 부여된 Permission Set중 그 기능이 하나라도 켜져 있으면 권한은 살아 있게 되요. 마찬가지로 Profile에 들어있다면 거기서도 삭제를 해야 해당 권한이 없어짐.

    채용 앱

    채용 앱에는 4가지 사용자 유형이 있습니다.

    1. 채용 인사 담당자 (Recruiter)
    2. 채용 관리자 (Hiring Manager)
    3. 면접관 (Interviewer)
    4. 일반 직원 (Employee)

    이들은 같은 객체를 쓰기도 하고, 권한 수준은 달라요.
    그래서 Permission Set 재사용 + Permission Set Group 조합이 핵심 전략입니다.

    채용 인사 담당자 (Recruiter)

    Recruiter 전용 Permission Set Group을 만들어야 합니다. 왜냐면:

    • 채용 인사 담당자는 채용 전반을 다 다루고,
    • 접근 객체가 많기 때문이에요:
      • Review
      • Candidate
      • Position
      • Job Application

    Recruiter Permission Set Group 에 묶을 Permission Set(객체)들

    • Review Object Permissions
    • Candidate Object Permissions
    • Position Object Permissions
    • Job Application Object Permissions

    Recruiter니까 접근해야할 객체가 많고, 역할이 명확해서 Group으로 관리하는게 좋기때문에 Recruiter Permission Set Group으로 만들어야 한다고 판단이 되었습니다.

    채용 관리자 (Hiring Manager)

    채용 관리자는 각 팀의 팀장이나 팀장이 명시한 사람이 보통 담당하게 되는데 Hiring Manager Object Permission Set하나만 만들어서 여러 팀 관리자에게 재사용하도록 하는게 좋을 것 같음. 그 이유는:

    • 부서마다 세부 데이터는 다를 수 있음
      • 영업팀 vs 엔지니어링팀
    • 하지만 객체 자체는 동일
      • Review
      • Candidate
      • Position 등

    Object 권한만 공통 Permission Set으로 부여하고 필드 제한 / 레코드 제한은 나중에 처리하는게 좋다고 판단됨
    객체 접근 = 공통
    필드 / 레코드 차이 = 나중 문제

    면접관 (Interviewer)

    이 사람들은 모든 부서 직원이 될 수 있고 일시적으로만 채용 데이터 접근 필한 사람들입니다. 그래서 Interviewer Permission Set Group 생성하고 인터뷰 기간 동안만 할당했다가 끝나면 제거하는 식으로 하는게 좋을 것 같아요.

    일반 직원 (Employee)

    채용에 참여 안 해도 모든 사용자가 Position(직책)은 볼수 있고, 회사 전체 공통 요구사항도 볼수 있어야 합니다. 그래서 일반 직원들을 위해 Position Read-Only Permission Set을 생성해서 아주 제한적으로 Read권한만 부여하는 거죠.

    그리고 이 Permission Set을:

    • Recruiter Group
    • Hiring Manager Group
    • Interviewer Group
      모두에 포함하면 됩니다.

    공통 권한: Review 객체

    Recruiter, Hiring Manager, Interviewer전부다 모든 Review객체에 대해 Read, Create, Edit 권한이 필요합니다.
    이때, 각 역할별로 Permission Set에 Review 권한을 중복 설정하는 것은 좋지 않은 방법입니다. ❌
    Review Object Permission Set을 하나 만들어서 이걸 3개 그룹에 재사용 하는겁니다.

    • Recruiter Group
    • Hiring Manager Group
    • Interviewer Group

    최종 설계 그림 (머릿속에 이거 그리면 됨)

    역할(페르소나)별로 Permission Set Group 생성하고, 객체별 권한은 Permission Set으로 쪼개기, 그리고 공통 권한은 반드시 재사용하고 “혹시 필요할지도” 권한은 넣지 않도록 합니다. 권한은 최소한으로 부여하고 꼭 필요할때 추가적으로 부여하도록 하는 것이 좋은 설계입니다.

    Permission Sets (기능 단위)

    • Review Object Access
    • Candidate Object Access
    • Position Read Only
    • Job Application Object Access
    • Hiring Manager Object Access

    Permission Set Groups (사람 단위)

    • Recruiter Group
    • Hiring Manager Group
    • Interviewer Group

    Create a Permission Set

    Review object에 대한 permission set을 만들어 보겠습니다.

    1. Setup > Quick Find > Permission Sets > New
      • Label: Access and Manage Reviews
      • License: -None-
    2. Save
    3. 저장하고 보여주는 Access and Manage Reviews화면에서 Find Settings검색창에 Reviews를 검색해서
    1. 위의 화면에서 Find Settings박스에 Reviews를 검색해서 선택합니다.
    2. Edit버튼을 누릅니다.
    3. ReadCreate, 그리고 Edit 권한을 활성화합니다.
    4. Save

    사용자에게 Permission Set을 바로 할당할 수 있습니다. 하지만 그 대신 먼저 Permission Set Group을 만들고 이 권한을 그룹에 포함합니다.

    Create a Permission Set Group

    위에서 설계한대로 3개의 사람기준 Permission Set Group들은 모두 Review객체를 포함합니다. 여기서는 3개의 사람 그룹중 Recruiters를 위한  Permission Set Groups을 생성해보도록 하겠습니다.

    1. Setup > Quick Find > Permission Set Groups > New Permission Set Group
      • Label: Recruiters
      • Description: This is the Permission Set Group for Recruiters
    2. Save
    3. 현재 페이지에서 Permission Sets in Group링크를 클릭하세요.
      다시 들어오시려면, Setup > Quick Find > Permission Set Groups > Recruiters > Permission Sets > Permissions Set in Group
    4. Add Permission Set을 클릭합니다.
    5. 위에서 만든 Access and Manage Reviews Permission set을 선택합니다.
    6. Add > Done

    Assign Permission Set Group to User

    채용 담당자 권한 집합 그룹이 구성되고 검토에 대한 액세스 권한이 부여됩니다. 마지막 단계는 사용자에게 할당하는 것입니다.

    1. Recruiters의 Permission Set Groups페이지에서
      다시 들어오시려면, Setup > Quick Find > Permission Set Groups > Recruiters
    2. Manage Assignments버튼을 클릭하세요.
    3. Add Assignment버튼을 클릭하세요.
    4. 그룹에 추가하고자 하는 사용자들을 전부 선택한 뒤 Next
    5. 특정 기간동안만 권한을 할당하고 싶은 경우에 Specify the expiration date를 선택하고 날짜를 지정합니다.
    6. Assign > Done
    7. 그러면 이렇게 Assignments가 만들어 져서 해당 그룹에 액세스 권한을 사용자들에게 부여할 수 있습니다.

    Review Access Using Summaries

    권한을 여러개 설정하다보면 어떤 Object이 어디서 어떻게 쓰이고 있는지 보고 싶을거잖아요. 그럴때:

    1. Setup > Object Manager > [Object 아무거나] > Object Access에 들어가 보시면 아래와 같이 Permission Sets, Groups, 그리고 Profiles까지 해당 객체에 권한이 할당된 모든 설정들을 한번에 보실 수 있습니다.

    그리고 사용자별로 할당된 권한을 보시려면,

    1. Setup > Quick Find > Users를 클릭하고,
    2. 사용자를 선택한 뒤,
    3. 상단에 View Summary버튼을 클릭하시면 각종 권한과 종속된 Permission Sets를 보실 수 있습니다.

    Hands-on Challenge

    Create a Permission Set for Access to Positions

    For our Recruiting app, create a permission set that grants access to the positions object. Then, add this permission set to the Recruiters permission set group that you created in the unit.

    Need Help?

    Pre-Work
    If you haven’t already created the Recruiters permission set group described in this unit, do that now. Otherwise, you won’t be able to complete this challenge.

    • Create a permission set:
      • Label: Manage Positions
      • API Name: Manage_Positions
      • Add a description (We won’t check for this.)
      • License: -None-
      • Enable Positions Object Permissions: Read, Create, and Edit
    • Add the permission set to the Recruiters permission set group
    • Verify that the Manage Positions permission set and Recruiters permission set group are displayed in the Object Access Summary for the Position object (We won’t check for this.)

    풀이

    Positions객체에 접근할 수 있는 Permission Set을 만드세요. 그리고 이 Permission Set을 Recruiters Permission Set Group에 추가하세요.

    만약 위의 강좌를 따라오면서 Recruiters Permission Set Group을 안 만드셨으면 지금 얼른 만드세요. 그거 없으면 과제를 완료할 수 없습니다.

    그럼 우선 Permission Set을 하나 만들겠습니다.

    1. Setup > Quick Find > Permission Sets > New
      • Label: Manage Positions
      • API Name: Manage_Positions
      • License: -None-
      • Save

    방금 만든 Permission Set에 Position객체를 읽고, 생성하고, 편집할 수 있는 권한을 할당하겠습니다.

    1. 아까 Save누르고 보인 Manage Positions화면에서 Object Settings을 클릭하세요
      만약 화면을 닫아버리셨다면 Setup > Permission Sets > M > Manage Positions로 다시 들어오셔서 Object Settings를 클릭하세요.
    2. 그러면 Object들이 보이실거에요. 그중에 Positions를 찾아서 클릭합니다.
    3. 화면에 보이는 Edit버튼을 클릭하세요.
    4. Object Permissions에서 Read, Create, Edit만 체크한 뒤 Save버튼을 누릅니다.

    방금 만든 Permission Set을 Recruiters Permission Set Group에 추가할게요.

    1. Setup > Quick Find > Permission Set Groups > Recruiters
    2. Permission Sets in Group를 클릭하세요.
    3. Add Permission Set버튼을 클릭하세요.
    4. Manage Positions를 검색해서 앞에 Action체크 상자를 체크한 뒤 Add버튼을 클릭하세요.
    5. 그러면 추가가 되었다는 확인메세지가 뜨고
    6. Done버튼을 클릭하면 Manage Positions Permission Set이 추가된 것을 확인할 수 있습니다.

    Object Access Summary에서 결과를 확인해 볼게요.

    1. Setup > Object Manager > Position > Object Access
    2. Manage Positions Permission Set에서 해당 Object를 사용하고 있는 것을 확인 할 수 있습니다.
    3. 마찬가지로 Recruiters Permission Set Group도 할당이 되어 있습니다.

    Data Security: Control Access to the Org

    Admin Intermediate > Data Security > Control Access to the Org

    Overview

    이번 강좌에서는 Admin으로서 사용자를 생성하고 관리하는 업무와 비밀번호 정책등을 설정하거나 사용자의 IP나 로그인 시간등을 제한하는 방법에 대해서 알아보도록 하겠습니다.

    Create a User

    개인에게 권한을 부여하거나 제한하기 위해서는 우선 고객의 정보를 User객체에 입력해야합니다. 사용자 생성은 Admin의 권한이고 Setup에서 이루어 집니다. Setup > Quick Find > Users > New User 또는 Add Multiple Users를 클릭해서 사용자를 등록할 수 있습니다. 해당 페이지에 각종 개인정보를 넣고 Save하시면 User가 등록이 됩니다.

    Deactivate a User

    Setup에서 User레코드를 Edit하는 페이지에 가보면 Active체크상자가 있는데 그걸 Uncheck 하고 Save하시면 사용자 비활성화가 됩니다. 비활성화된 사용자는 더이상 라이센스를 점유하고 있지 않고 더이상 시스템에 로그인 할수 없어요. 때로 Active할 수 없는 경우가 있는데 그럴때는 User레코드를 Edit으로 들어가지 말고 이름을 눌러서 View하는 페이지로 들어가시면 상단에 Freeze라는 버튼이 보이실거에요. Freeze가 되면 계정은 살아있지만 로그인이 즉시 차단됩니다. 비활성화를 방해하는 요소들을 찾아서 변경한 뒤 비활성화를 하실 수 있습니다.

    사용자를 비활성화 할 수 없는 경우:

    • 계층 구조의 핵심: 해당 사용자가 Custom Hierarchy 필드에서 참조되고 있을 때.
    • 워크플로우/프로세스: ‘기본 워크플로우 사용자(Default Workflow User)’로 지정되어 있을 때.
    • 이메일 서비스: 특정 이메일 서비스의 수신자로 설정되어 있을 때.

    Set Password Policy

    사용자의 비밀번호가 강력하고 안전한지 확인하기 위해 여러 설정을 구성할 수 있습니다.

    Password Policies

    모든 사용자의 비밀번호가 만료되기까지의 시간과 비밀번호에 필요한 복잡성 수준 지정과 같은 비밀번호 및 로그인 정책을 설정합니다.

    Setup > Quick Find > Password Policies에서 비밀번호에 대한 정책을 설정할 수 있습니다.

    비밀번호 정책을 사용자별로 설정할 수도 있습니다.
    사용자데이타에 비밀번호 정책이 설정되어 있다면 그 정책은 조직의 비번정책보다 우선시됩니다.

    User Password Expiration

    ‘비밀번호가 만료되지 않음’ 권한이 있는 사용자를 제외하고 조직의 모든 사용자에 대한 비밀번호를 만료합니다.

    User Password Resets

    지정된 사용자의 비밀번호를 재설정합니다.

    Login Attempts and Lockout Periods

    로그인 시도 실패 횟수가 너무 많아 사용자가 잠긴 경우에 풀어달라고 여러분에게 연락이 올거에요. 아래는 해당 사용자의 액세스를 잠금 해제하는 방법입니다.

    조직레벨에서 IP제한하기

    Salesforce에 로그인 할수 있는 IP주소를 설정할 수 있습니다. 보통 IP주소는 지역을 기반으로 하기때문에 특정 지역 또는 나라에서만 로그인을 할 수 있도록 믿을 수 있는 IP구간을 설정할 수 있습니다.

    믿을수 있는 IP설정하는 곳: Setup > Quick Find > Network Access

    사실 지정된 IP범위를 벗어나도 로그인이 됩니다.
    다만 인증 코드를 입력하여 본인임을 한번더 확인하는 절차를 밟아야 할 뿐입니다.

    프로필 단위로 IP제한하기

    방금전에는 IP를 기반으로 허용이 되는 구간을 설정하면 이외의 지역에서는 인증절차를 밟도록 설정을 했는데요. 이번에는 프로필 단위로 로그인을 허용하는 지역을 설정해보도록 하겠습니다.

    프로필이란 사용자들을 역할이나 권한별로 그룹지어 놓은것

    1. Setup > Quick Find > Profiles
    2. 프로필 한개를 클릭하여 프로필 상세페이지를 엽니다.
    3. 상단에 보면 Login IP Ranges(0)라고 있죠? 여기에는 아무런 IP제한 설정이 되어 있지 않다는 뜻이에요.
    4. Login IP Ranges를 클릭하고 옆에 New버튼을 눌러서 허용 IP Range를 설정하세요.
      신뢰할 수 있는 IP 범위 선택
    5. Save하고 나오면 해당 프로필의 로그인이 해당 지역으로 제한됩니다.

    시간별 로그인 제한하기

    예를 들어 콜센터 직원이 오전 9시에서 오후 5시 사이에 전화를 받는 동안에만 고객 데이터를 볼 수 있도록 한 경우 저녁과 주말에는 로그인할 수 없도록 할 수 있습니다.

    1. Setup > Quick Find > Profiles
    2. 변경할 프로필의 이름을 클릭합니다.
    3. Login Hours에서 Edit을 클릭합니다.
    4. 이 프로필을 가진 사용자가 조직에 로그인할 수 있는 요일과 시간을 설정합니다.
      • 사용자가 언제든지 로그인할 수 있도록 하려면 Clear all times를 클릭합니다.
      • 특정 날짜에 사용자가 시스템을 사용하지 못하도록 하려면 시작 시간과 종료 시간을 같은 값으로 설정하세요. 

    사용자가 로그인 시간이 끝날 때 로그인한 경우 현재 페이지를 계속 볼 수 있지만 추가 조치를 취할 수는 없습니다.

    Hands-on Challenge

    Create a New User and Deactivate It

    Create a new user using the Minimum AccessSalesforce profile, then deactivate that user to preserve the licenses in your org.

    Need Help?

    • Create a new user:
      • Profile: Minimum Access – Salesforce
      • User License: Salesforce
      • Alias: testuser
      • Username: must contain testuser somewhere in it
    • The new user must be inactive

    풀이

    새로운 사용자 등록

    1. Setup > Quick Find > Users > New User
    2. User License: Salesforce
    3. Profile: Minimum Access – Salesforce
    4. First Name: testuser
    5. Last Name: testuser
    6. Alias: testuser
    7. Email: testuser@ellieswonderland.com
    8. Username: testuser@ellieswonderland.com
    9. Save

    비활성화

    1. Setup > Quick Find > Users > testuser > Edit
    2. Uncheck 🔲 Active
    3. Save

    Data Security: Overview of Data Security

    Admin Intermediate > Data Security > Overview of Data Security

    Overview

    이 모듈은 Salesforce 시스템에서 데이터 보안(Data Security) 이 왜 중요한지, 그리고 *어떤 계층(레벨)*으로 접근을 제어할 수 있는지를 설명합니다.

    Learning Objectives

    완료하면 다음을 이해할 수 있어요:

    • 왜 적절한 사람에게만 적절한 데이터 접근 권한을 주는 것이 중요한지 설명할 수 있다.
    • 데이터 접근을 제어하는 4가지 주요 레벨을 나열할 수 있다.
    • 각 레벨별로 어떻게 접근을 제한할 수 있는지 시나리오를 설명할 수 있다.

    데이터 보안의 핵심 — 4가지 접근 제어 레벨

    Salesforce는 다층적(Layered)으로 데이터 보안을 제공합니다.

    1. 조직 전체 레벨 (Organization)

    • 전체 Salesforce 조직에서 누가 로그인할 수 있는지,
    • 비밀번호 정책, 로그인 시간과 위치 제한 등을 설정해 보안을 강화합니다.
      예: 외부 네트워크에서의 로그인 제한 같은 설정을 할 수 있어요.

    2. 객체 레벨 (Objects)

    • Accounts, Contacts, Job Applications와 같은 객체(object)의 접근을 설정합니다.
    • 누가 생성/조회/편집/삭제할 수 있는지 권한을 부여/제한해요.
      예: 면접관은 직책 객체를 조회만 할 수 있도록 설정할 수 있습니다.

    객체 권한 관리는 프로필이나 Permission Set(권한 세트)을 통해 구성합니다.

    3. 필드 레벨 (Fields)

    • 같은 객체 안에서도 특정 필드만 접근 제한이 가능합니다.
      예: 면접관은 “보너스 금액” 필드를 보지 못하게 하면서,
       채용 관리자나 리크루터는 볼 수 있게 할 수 있어요.

    4. 레코드 레벨 (Records)

    한 객체라도, 개별 레코드마다 접근 권한을 다르게 설정할 수 있어요:

    • 기본 공유 설정: 기본적으로 서로 다른 사용자 간의 접근 수준 설정
    • 역할 계층 (Role Hierarchy): 상위 역할의 사용자는 아래 역할 소유 레코드 접근 허용
    • 공유 규칙 (Sharing Rules): 자동으로 특정 그룹에게 접근 권한 부여
    • 수동 공유 (Manual Sharing): 레코드 소유자가 다른 사용자에게 수동으로 공유

    즉, 같은 객체라 해도 사용자 역할/공유 정책에 따라 볼 수 있는 데이터가 달라질 수 있어요.

    감사 & 모니터링 (Audit & Monitoring)

    모듈은 데이터 접근을 설정하는 것뿐 아니라, 감사(로그/추적) 기능도 소개합니다.

    • Record Modification Fields
      → 누가 만들고 수정했는지 자동 기록
    • Login History
      → 지난 로그인 성공/실패 기록 보기
    • Field History Tracking
      → 필드 변경 이력 추적
    • Setup Audit Trail
      → 시스템 설정 변경 로그
    • Event Monitoring
      → 사용자 행동 이벤트 상세 보기

    이런 기능으로 보안 이상 징후를 탐지하고 관리할 수 있습니다.

    정리

    이 모듈은 Salesforce에서 누가 어떤 데이터를 볼 수 있나를 설정하는 기본적인 보안 개념부터 시작합니다:

    레벨제어 대상예시
    조직로그인/비밀번호 정책근무시간 외 로그인 제한
    객체전체 객체 접근 권한면접관은 생성X, 보기O
    필드특정 필드 접근 제한보너스는 일부만 보기
    레코드개별 레코드 공유 설정자신 소유만 보기

    Quiz

    1. Which of these features can you use to control access at the object level?
      • A. Authorized User Lists
      • B. Sharing Rules
      • C. Permission Sets
      • D. Object Rules
    2. Which of these is a method for controlling record-level access?
      • A. Organization-Wide Defaults
      • B. Permission Set Groups
      • C. Profiles
      • D. Event Monitoring
    1. 다음 중 개체 수준에서 액세스를 제어하는 데 사용할 수 있는 기능은 무엇인가요?
      • A. 인증된 사용자 목록
      • B. 공유 규칙
      • C. 권한 집합
      • D. 개체 규칙
    2. 다음 중 레코드 수준 액세스를 제어하는 방법은 무엇인가요?
      • A. 조직 전체 기본값
      • B. 권한 집합 그룹
      • C. 프로필
      • D. 이벤트 모니터링

    Formulas and Validations: Create Validation Rules

    Admin Intermediate > Formulas and Validations > Create Validation Rules

    Validation Rules

    필드에 Validation Rule를 걸어놓으면 입력 당시에 데이타가 유효한지를 검사하게 되어 엉뚱한 값이 들어오지 않게 미연에 방지를 할 수 있습니다.

    Validation Rule은 크게 3가지로 구성됩니다:

    1. Rule Name – 이름
    2. Error condition Formula – 규칙
    3. Error Message – 규칙에 맞지 않을때 보여줄 메세지

    Validation Rule만들기

    Account Number가 8자리 문자열이 아닌경우 에러메세지 보여주기

    1. Setup > Object Manager > Account > Validation Rules > New
      • Rule Name: Account_Number_8_Characters
      • Error condition Formula: LEN( AccountNumber) <> 8
      • Error Message: Account number must be 8 characters long.
    2. Check Syntax눌러서 No errors found나오면 Okay
    3. Save

    Validation Rule이 잘 적용이 되었는지 확인해볼게요

    1. Sales > Accounts > New
    2. Account Name: Test Account
    3. Account Number: 1234
    4. Save

    그러면 아래와 같이 우리가 입력했던 메세지가 팝업됩니다.

    기타 유용한 팁

    Account Number는 숫자로만

    AND(
       NOT(ISBLANK(AccountNumber)),
       NOT(ISNUMBER(AccountNumber))
    )

    숫자가 아닌 문자가들어 왔을때 Account Number is not numeric.

    날짜는 올해여야 함

    YEAR(My_Date__c) <> YEAR(TODAY())

    입력한 날짜의 연도가 올해가 아닌경우 Date must be in the current year.

    Salary 범위는 20,000 이하

    (Salary_Max__c - Salary_Min__c) > 20000

    연봉차이가 2만불이상 나면 Salary range must be within $20,000.

    웹사이트 확장자 검사

    AND(
       RIGHT( Web_Site__c, 4) <> ".COM",
       RIGHT( Web_Site__c, 4) <> ".com",
       RIGHT( Web_Site__c, 4) <> ".ORG",
       RIGHT( Web_Site__c, 4) <> ".org",
       RIGHT( Web_Site__c, 4) <> ".NET",
       RIGHT( Web_Site__c, 4) <> ".net"
     )

    도메인 뒷자리가 정해진 확장자가 아닌경우 Web Site must have an extension of .com, .org, or .net

    청구지국가 유효성 체크

    OR(
    LEN(BillingCountry) = 1,
    NOT(
    CONTAINS(
    "AF:AX:AL:DZ:AS:AD:AO:AI:AQ:AG:AR:AM:" &
    "AW:AU:AZ:BS:BH:BD:BB:BY:BE:BZ:BJ:BM:BT:BO:" &
    "BA:BW:BV:BR:IO:BN:BG:BF:BI:KH:CM:CA:CV:KY:" &
    "CF:TD:CL:CN:CX:CC:CO:KM:CG:CD:CK:CR:CI:HR:" &
    "CU:CY:CZ:DK:DJ:DM:DO:EC:EG:SV:GQ:ER:EE:ET:FK:" &
    "FO:FJ:FI:FR:GF:PF:TF:GA:GM:GE:DE:GH:GI:GR:GL:" &
    "GD:GP:GU:GT:GG:GN:GW:GY:HT:HM:VA:HN:HK:HU:" &
    "IS:IN:ID:IR:IQ:IE:IM:IL:IT:JM:JP:JE:JO:KZ:KE:KI:" &
    "KP:KR:KW:KG:LA:LV:LB:LS:LR:LY:LI:LT:LU:MO:MK:" &
    "MG:MW:MY:MV:ML:MT:MH:MQ:MR:MU:YT:MX:FM:MD:MC:" &
    "MC:MN:ME:MS:MA:MZ:MM:MA:NR:NP:NL:AN:NC:NZ:NI:" &
    "NE:NG:NU:NF:MP:NO:OM:PK:PW:PS:PA:PG:PY:PE:PH:" &
    "PN:PL:PT:PR:QA:RE:RO:RU:RW:SH:KN:LC:PM:VC:WS:" &
    "SM:ST:SA:SN:RS:SC:SL:SG:SK:SI:SB:SO:ZA:GS:ES:" &
    "LK:SD:SR:SJ:SZ:SE:CH:SY:TW:TJ:TZ:TH:TL:TG:TK:" &
    "TO:TT:TN:TR:TM:TC:TV:UG:UA:AE:GB:US:UM:UY:UZ:" &
    "VU:VE:VN:VG:VI:WF:EH:YE:ZM:ZW",
    BillingCountry)))

    Billing Country가 ISO 3166 2자리 코드에 해당하지 않으면 A valid two-letter country code is required.

    Hands-on Challenge

    Create a Validation Rule

    Create a validation rule that displays an error message and prevents users from creating or updating a contact for an account if the contact and account have different zip codes. Allow creating and updating contacts that have no associated account.

    • Create a validation rule:
      • Rule Name: Contact_must_be_in_Account_ZIP_Code
      • Operator: AND (return true if both conditions are true)
      • Define the two conditions that, combined, will show the error message:
        • The contact is associated with an account id
        • The contact mailing zip code is different than the account shipping zip code
          Hint: Use the API names (MailingPostalCode and Account.ShippingPostalCode) and the <> (Not Equal) operator.
      • Enter an error message for the validation rule

    풀이

    연락처와 계정의 우편 번호가 다를 경우, 오류 메시지를 표시하여 사용자가 계정의 연락처를 생성하거나 업데이트할 수 없도록 제한하는 유효성 검사 규칙을 만듭니다. 연결 계정이 없는 연락처에 대해서는 생성 및 업데이트를 허용해야 합니다.

    조건을 만드는 생각해야할 기준은 바로 에러메세지를 보여주는 조건입니다.
    지금의 경우는 “AccountId가 비어있지 않고, Zip이 다른 경우에 에러메세지를 보여줘라”를 구현해야하는 거에요.

    1. Setup > Object Manager > Contact > Validation Rules > New
    2. Rule Name: Contact_must_be_in_Account_ZIP_Code
    3. Operator: AND
    4. Two Condition:
      • Contact has an account
        • NOT(ISBLANK(AccountId))
      • If the zip codes are different
        • Insert Field: Contact > Mailing Zip/Postal Code > Insert
        • Insert Operator: <> Not Equal
        • Insert Field: Contact > Account > Shipping ZipPostal Code > Insert
        • 👉 MailingPostalCode <> Account.ShippingPostalCode
    5. Error Condition Formula
      • AND(ISBLANK(AccountId), MailingPostalCode <> Account.ShippingPostalCode)
    6. Error Message
      • Zipcode must match the account’s zipcode
    7. Check Syntax
      • No errors found
    8. Save