Admin Intermediate > External Services > Get Started with External Services
External Services?
서비스를 하다보면요. 외부에서 제공하는 데이타를 사용해야할 경우가 있잖아요. 어떤 회사는 기존에 가지고 있던 플랫폼이 있어서 그거랑 Salesforce랑 동시에 운영하면서 데이타를 서로 연동하고 싶어하는 경우도 있거든요. 그럴때 Salesforce에서 코딩없이 외부 데이타를 가져와서 Salesforce에서 사용할 수 있도록 만든기능이 바로 External Service에요
Named Credential
해당 페이지에서 제공하는 동영상을 보면서 하나씩 차근히 짚어볼게요. 따라하지는 않으셔도 되고 그냥 눈으로 머리로 생각하면서 대충 흐름을 파악하시면 됩니다. 다다음 시간에 이거 실제로 따라하는걸 해보건데요. 일단 여러번 들어본다음에 하면 더 기억이 잘남잖아요 그래서 일단 한번 대충 훑어보고 가는거니까 여기서는 자세한 내용은 그냥 넘어가도 됩니다.
일단 Salesforce가 해당 API에 접근하려면 인증절차를 밟아야 하잖아요. 그때 필요한게 바로 Named Credential이에요. 아래 안내를 따라 Named Credential을 생성합니다.
Setup > Quick Find > Named Credentials
New버튼옆에 드롭다운을 클릭해서 New Legacy를 클릭합니다.
New와 New Legacy차이점:
요즘 나오는 API는 OAuth 2.0, JWT, AWS SigV4 등 최신 인증방식을 지원하고, REST/HTTP규격에 맞춰 완벽히 지원하며, Flow/External Services 연동을 완벽하게 지원합니다. 하지만 예전에 만들었던 구형 API들은 인증도 전통적 Username+Password, Basic Auth 중심이거나 API가 오래되어 최신 OAuth나 인증 방식 지원 안하는 경우가 많은데 그런 경우에 New Legacy를 사용하여 연동합니다. 가능하면 New를 쓰는 게 좋고, Legacy는 구형 시스템과 연동할 때만 선택하는 거예요.
Name Credential새로 만드는 화면에서 아래 정보를 입력하고 Save버튼을 눌러서 Named Credential을 생성합니다.
- Label: bank
- Name: bank
- URL: https://th-external-services.herokuapp.com/
API Specification
API Specification는 외부 API가 무엇을 제공하고, 어떻게 호출해야 하는지를 JSON이나 YAML형식으로 기술한 구조화된 문서에요. 어떤 엔드포인트(URL)가 있는지, 요청(Request) 파라미터는 무엇인지, 응답(Response) 데이터 형식은 어떻게 되는지, 인증 방식(예: OAuth, API Key)은 무엇인지등등이요. Salesforce가 이 스펙을 읽고 “어, 이 API는 이렇게 생겼고, 이렇게 써야 하는구나” 하고 이해할 수 있게 만드는 파일이에요.
API Specification은 대부분 OpenAPI (Swagger) 2.0나 3.0 JSON/YAML 형식을 사용합니다. 아래는 API Specification의 예입니다.
{
"openapi": "3.0.0",
"info": {
"title": "Credit Check API",
"version": "1.0"
},
"paths": {
"/checkScore": {
"post": {
"summary": "신용 점수 확인",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreditRequest"
}
}
}
},
"responses": {
"200": {
"description": "점수 조회 성공",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreditResponse"
}
}
}
}
}
}
}
}
}
External Services
방금 정의한 API Specification을 등록하시려면:
Setup > Quick Find > External Services를 선택하세요.
우측상단에 New External Service버튼을 클릭합니다.
API Source를 등록하는 화면에서 From MuleSoft Anypoint Platform을 선택하시거나 From API Specification을 선택하실 수가 있는데, From API Specification를 선택합니다.
Add an External Service화면에서:
- External Service Name: bankService44
- Description: account sync
- Service Schema: Relative URL
- Select Named Credential: bank
- URL: /accounts/schema
Service Schema로 Relative URL를 선택하면 기존 API URL에 해당 상대경로를 덧붙여서 호출하겠다는 의미입니다. Named Credential만들때 넣었던 API URL이 https://th-external-services.herokuapp.com/였는데 URL을 /accounts/schema로 설정하면 https://th-external-services.herokuapp.com/accounts/schema에서 스키마를 찾을 수 있다고 알려주는 거에요.
Save & Next버튼을 클릭하면, API Specification을 로딩하고 Scheme에 문제가 없는지 Validation을 실시합니다.
또다시 Save & Next를 누르면 API Specification을 바탕으로 가능한 기능들을 나열합니다. 이중에 Salesforce에서 사용하고자 하는 기능을 선택하고 Next버튼을 누릅니다.
그러면 External Service가 사용가능한 모든 Action들을 보여줍니다. 모든 입력값과 출력값을 정리해서보여줘요. 여기서 Done 버튼을 클릭하면, 새롭게 생성한 bankService44를 External Service목록에 보여줍니다.
Invocable Actions
지금까지 Named Credential을 통해서 Authenticate을 구현했고, External Service에 API Specification을 등록함으로써 기능을 정의했습니다. 이제 Flow, Einstein Bots, OmniStudio, Apex등의 툴을 이용해서 Invocable actions를 Integrate을 할 차례입니다.
우리는 Flow를 만들어에요.
- Start
- Screen: 사용자가 찾고자하는 Account의 Lastname과 Bank Account Type을 입력값으로 받습니다.
- Action: 위에서 받은 입력값으로 외부 서비스에서 Account Type과 Account ID를 찾아서 Decision으로 넘깁니다.
- Decision: 입력받은 고객값이 Salesforce에 존재하는지를 확인해서 없으면 입력받은 Account Type과 Account ID로 새로운 Account를 생성하고, 만약 기존에 해당 Account가 존재한다면 해당 Account의 Account Type과 Account ID를 갱신합니다.
- 기존 Account에 해당 Account가 없다면 새로운 Account를 생성하고,
- Assignment: 만약 기존 Account를 찾았다면 기존데이타에 Account Type과 Account ID을 추가하고
- Update Records: 넘겨받은 데이타로 데이타를 갱신합니다 .
좌측메뉴에 Manager탭을 열면 Apex-Defined Variables가 있는데 account를 클릭해서 열어보면, Apex Class에 정확하게 어디서 가져와서 어떻게 하라고 Class 이름으로 한눈에 확인이 가능합니다.
- Data Type: Apex-Defined
- Apex Class: ExternalService__bankService44_accountDetails
우리가 정의한 API Specification의 accountDetails가 Apex의 Class이름으로 들어갑니다


ExternalService__bankService44_accountDetails클래스는 어디서나 호출해서 사용할 수 있게 됩니다.
Flow Builder에서 만든 Flow가 동작을 잘하는지 확인 하려면, Run을 눌러보세요. 그러면 검색할 사용자의 Lastname과Bank Account Type을 입력받는 창이 뜹니다. 예를 들어 Thompson의 Checking계정을 검색하면, flow가 처리되고 결과를 보여줍니다.

실제로 Accounts에서 Thompson을 검색해보면 Account Type은 Checking으로 Account ID는 100으로 변경된 것을 확인하실 수 있습니다.
여기까지가 동영상의 내용이었습니다. API를 어떻게 정의하고 어떻게 가져와서 사용하는지 대충 감이 왔을거에요.
그밖에도 다양한 API들을 통해 각종 서비스들을 뒷단에서 연결하고 Salesforce에서 기능을 제공할 수 있어요.
Quiz
- What can you do with External Services?
- A. Authenticate into a named credential to update its database.
- B. Declaratively create a schema to use in External Services.
- C. Connect to an external endpoint to bring its data into Salesforce.
- D. Declaratively authenticate the external database for External Services.
- Which of the following is true about External Services?
- A. The steps to create an external service are done by the public API provider in Named Credentials.
- B. Much of the work to register an external service in Salesforce can be performed declaratively.
- C. You must learn to program using Apex if you want to use External Services.
- D. Using an OpenAPI specification is optional if you want to register an external service registration.