Power Automate 흐름을 사용하여 Dynamics 365 Field Service 작업 주문을 자동으로 만들 수 있습니다. 이는 IoT 경고, 양식 제출, 다른 시스템의 서비스 요청 또는 관련 레코드 변경과 같은 외부 트리거를 기반으로 작업 주문을 만들어야 하는 경우에 유용합니다.
Power Automate 흐름은 Microsoft Dataverse 커넥터를 사용하여 필드 서비스 레코드와 상호 작용합니다. 코드를 통해 작업 주문을 만드는 방법에 대한 자세한 내용은 Dataverse Web API를 사용하여 작업 주문 만들기로 이동하세요.
필수 조건
- Power Automate 라이선스(대부분의 Dynamics 365 라이선스에 포함).
- 흐름의 연결 계정에 할당된 다음 Field Service 보안 역할 중 하나 이상이 필요합니다.
사용자 및 보안 역할 설정에 대해 자세히 알아보세요.
- Field Service - 담당자
- Field Service - 관리자
- 필요한 조회 필드에 대한 기존 레코드:
-
서비스 계정(
account엔터티) -
작업 지시 유형 (
msdyn_workordertype엔터티) -
가격표 (
pricelevel엔터티)
-
서비스 계정(
옵션 1: Dataverse 레코드가 변경되면 작업 순서 만들기
이 패턴을 사용하여 고객 자산의 상태가 변경되는 경우와 같이 다른 Dataverse 테이블의 변경에 대한 응답으로 작업 순서를 만듭니다.
트리거 설정
Power Automate에서 Create>를 선택합니다.
행을 추가, 수정 또는 삭제할 때(Microsoft Dataverse 커넥터)를 검색하여 선택합니다.
메시지가 표시되면 Dynamics 365 자격 증명을 사용하여 Microsoft Dataverse 커넥터에 로그인합니다. 사용자 환경에 이미 연결되어 있는 경우 드롭다운에서 선택합니다. 활성 연결이 설정될 때까지 트리거의 구성 필드가 채워지지 않습니다.
트리거를 구성합니다.
분야 Value 형식 변경 수정됨 테이블 이름 고객 자산 Scope 조직 실행 조건을 제한할 필터 행 조건을 필요에 따라 추가합니다. 예:
msdyn_operationalstatus eq 690970001(서비스 필요).
Tip
Dataverse 레코드를 변경하지 않고 작업 순서 만들기 단계를 테스트하려면 흐름의 복사본을 만들고 Dataverse 트리거를 수동으로 흐름 트리거로 바꿉니다. 흐름을 실행할 때 테스트 값을 전달할 수 있도록 입력 매개 변수(예: 서비스 계정 ID의 텍스트 입력, 작업 순서 유형 ID 및 가격표 ID)를 추가합니다. 작업 순서가 올바르게 생성되었는지 확인한 후 프로덕션 흐름에서 Dataverse 트리거로 다시 전환합니다.
작업 순서 만들기 작업 추가
+ 새 단계를 선택하고 새 행 추가(Microsoft Dataverse 커넥터)를 검색합니다.
트리거에 사용한 것과 동일한 Dataverse 연결을 선택합니다. 테이블 이름 필드는 연결을 선택한 후에만 나타납니다.
테이블 이름을작업 순서로 설정합니다.
필수 필드를 입력합니다.
분야 Value 작업 주문 번호 식을 guid()자리 표시자로 입력합니다. Dataverse 커넥터 UI에는 작업 순서 번호 필드가 필요하지만 필드 서비스의 일련 번호 플러그 인은 레코드가 저장되면 자동으로 올바른 순차 작업 순서 번호를 할당합니다. 식을 입력하려면 필드를 선택하고, 동적 콘텐츠 패널에서 식 탭으로 전환하고, 입력guid()하고, 확인을 선택합니다.서비스 계정 검색 필드를 사용하여 계정을 선택하거나, 하드 코딩된 또는 동적 GUID를 사용해야 하는 경우 concat('/accounts(', 'service-account-guid', ')')탭에 을 입력합니다. 이 항목을 찾는 방법은 아래를 참조하세요.작업 주문 유형 검색 필드를 사용하여 작업 순서 유형을 선택하거나, 하드 코딩된 GUID 또는 동적 GUID를 사용해야 하는 경우 concat('/msdyn_workordertypes(', 'work-order-type-guid', ')')탭에 식을 입력합니다. 이 항목을 찾는 방법은 아래를 참조하세요.가격표 검색 필드를 사용하여 가격표를 선택하거나, 하드 코딩된 GUID 또는 동적 GUID를 사용해야 하는 경우 concat('/pricelevels(', 'your-price-list-guid', ')')탭에 식을 입력합니다. 만약 For each 루프 내에서 행 나열 작업을 사용하여 가격표를 동적으로 검색해야 한다면,YourLoopName를 루프의 이름으로 교체하여concat('/pricelevels(', items('YourLoopName')?['pricelevelid'], ')')를 사용하십시오. 이 항목을 찾는 방법은 아래를 참조하세요.시스템 상태 690970000(예약되지 않음)과세 false지침 트리거의 동적 콘텐츠 사용(예: 자산 이름) 서비스 계정: 서비스 계정 필드에 직접 계정 이름을 입력하여 검색하고 선택합니다. 트리거가 고객 자산 변경이고 자산이 계정에 연결된 경우 동적 콘텐츠 패널에서 계정(고객 자산) 을 대신 선택할 수 있습니다. GUID를 직접 사용해야 하는 경우 필드 서비스의 서비스 영역 >고객>계정 으로 이동하고, 계정을 열고, 브라우저 URL에서 레코드 ID를 복사합니다(URL이 인코딩되지 않은 경우와 그 사이의
%7B%7D값 또는 일반 GUID).작업 순서 유형: 작업 순서 유형 필드에 직접 작업 순서 유형 이름을 입력하여 검색하여 선택합니다. GUID를 직접 사용해야 하는 경우 필드 서비스의 설정 영역 >작업 순서>작업 순서 유형 으로 이동하여 작업 순서 유형을 열고 브라우저 URL에서 레코드 ID를 복사합니다.
가격표: 가격표 필드에 직접 가격 표 이름을 입력하여 검색하여 선택합니다. GUID를 직접 사용해야 하는 경우 필드 서비스의 설정>일반>가격표 로 이동하여 가격표를 열고 브라우저 URL에서 레코드 ID를 복사합니다.
비고
Dataverse 커넥터는 일반 GUID가 아닌 OData 엔터티 참조 경로(예:
/accounts(guid))를 사용하려면 조회 필드가 필요합니다. '단독으로 GUID를 입력하면 런타임에ODataUnrecognizedPathException가 발생합니다.' 위의 식은concat올바른 경로 형식을 생성합니다.흐름을 저장하고 테스트합니다.
옵션 2: HTTP 요청에서 작업 순서 만들기
이 패턴을 사용하여 고객 포털, 티켓 시스템 또는 IoT 플랫폼과 같은 외부 시스템에서 작업 주문을 만듭니다.
트리거 설정
Power Automate에서 Create>즉시 클라우드 흐름을 선택합니다.
흐름 이름을 지정하고 HTTP 요청이 트리거로 수신될 때 를 선택합니다.
만들기를 선택합니다.
요청 본문 JSON 스키마 필드에 다음 스키마를 붙여넣습니다.
{ "type": "object", "properties": { "serviceAccountId": { "type": "string" }, "workOrderTypeId": { "type": "string" }, "priceListId": { "type": "string" }, "instructions": { "type": "string" } }, "required": ["serviceAccountId", "workOrderTypeId", "priceListId"] }흐름을 트리거할 수 있는 대상을 선택할 때 다음 옵션 중 하나를 선택합니다.
옵션 사용 시기 내 테넌트에 있는 사용자만 프로덕션에 권장합니다. 호출자는 Microsoft Entra ID 인증하고 유효한 OAuth 전달자 토큰을 제공해야 합니다. 내부 시스템 또는 신뢰할 수 있는 서비스 주체에 사용합니다. 모든 사용자 URL 자체는 자격 증명 역할을 하며 추가 인증 헤더는 필요하지 않습니다. 호출 시스템이 Entra ID 토큰을 가져올 수 없고 URL이 안전하게 저장되도록 할 수 있는 경우에만 사용합니다. HTTP 요청 트리거에 대한 OAuth 인증 추가에서 HTTP 트리거 흐름을 보호하는 방법에 대해 자세히 알아봅니다.
HTTP URL 필드는 읽기 전용이므로 입력하지 마세요. Power Automate는 흐름을 처음 저장할 때 관련 필드를 자동으로 채웁니다.
흐름을 저장합니다. 이제 HTTP URL 필드가 엔드포인트 URL로 채워집니다. 이 URL을 복사하여 외부 시스템을 구성하는 사람(예: 개발자 또는 시스템 관리자)에게 제공합니다. 외부 시스템은 정의한 스키마와 일치하는 JSON 본문을 사용하여 HTTP POST 요청을 이 URL로 전송하여 흐름을 트리거합니다. 다음은 그 예입니다.
POST <paste the HTTP URL here> Content-Type: application/json { "serviceAccountId": "<account record GUID>", "workOrderTypeId": "<work order type record GUID>", "priceListId": "<price list record GUID>", "instructions": "Reported issue: equipment not functioning" }외부 시스템에서 이 요청을 보낼 때마다 Power Automate 흐름을 실행하고 Field Service에서 작업 순서를 만듭니다.
작업 순서 만들기 작업 추가
+ 새 단계를 선택하고 새 행 추가(Microsoft Dataverse 커넥터)를 검색합니다.
Microsoft Dataverse 커넥터에 로그인하거나 기존 연결을 선택합니다. 테이블 이름 필드는 연결을 선택한 후에만 나타납니다.
테이블 이름을작업 순서로 설정합니다.
HTTP 요청 본문 필드를 작업 순서 필드에 매핑합니다.
작업 순서 필드 Value 작업 주문 번호 식을 guid()자리 표시자로 입력합니다. Dataverse 커넥터 UI에는 작업 순서 번호 필드가 필요하지만 필드 서비스의 일련 번호 플러그 인은 레코드가 저장되면 자동으로 올바른 순차 작업 순서 번호를 할당합니다. 식을 입력하려면 필드를 선택하고, 동적 콘텐츠 패널에서 식 탭으로 전환하고, 입력guid()하고, 확인을 선택합니다.서비스 계정 concat('/accounts(', triggerBody()?['serviceAccountId'], ')')작업 주문 유형 concat('/msdyn_workordertypes(', triggerBody()?['workOrderTypeId'], ')')가격표 concat('/pricelevels(', triggerBody()?['priceListId'], ')')시스템 상태 690970000(예약되지 않음)지침 @{triggerBody()?['instructions']}필요에 따라 응답 작업을 추가하여 호출 시스템에 새 작업 순서 ID를 반환합니다.
- + 새 단계를 선택하고 요청 커넥터에서 응답을 검색합니다.
-
상태 코드를
200로 설정합니다. - 본문 필드에서 동적 콘텐츠 아이콘을 선택하고 새 행 추가 단계에서 msdyn_workorderid 선택합니다. 방금 만든 작업 순서의 고유 ID입니다.
이 단계가 없으면 호출 시스템은 응답을 받지 않으며 대기 후 HTTP 요청 시간이 초과됩니다. 이 단계를 추가하면 호출 시스템은 흐름이 완료되는 즉시 작업 순서 ID가 포함된 응답을 받
200습니다.
시스템 상태 옵션 설정 값
흐름 또는 API 호출에서 시스템 상태를 설정할 때 이러한 정수 값을 사용합니다.
| 레이블 | Value |
|---|---|
| 예약 취소 | 690970000 |
| 예약됨 | 690970001 |
| 진행 중 | 690970002 |
| 완료됨 | 690970003 |
| 게시됨 | 690970004 |
| 취소됨 | 690970005 |
고려 사항
플로우 연결 계정 소유권
흐름에서 생성된 작업 지시서는 Dataverse 커넥터에 사용되는 연결 계정이 소유합니다. 이 계정에 올바른 보안 역할이 있고 흐름에서 만든 작업 주문이 예상 뷰 및 큐에 표시되는지 확인합니다.
자식 레코드
새 행 추가 작업은 작업 순서 헤더만 만듭니다. 작업 주문 제품, 서비스 또는 서비스 작업을 추가하려면, 각 자식 테이블 (, msdyn_workorderproduct, msdyn_workorderservice)에 대해 별도의 msdyn_workorderservicetask를 추가하고, 작업 지시서 조회 필드를 생성된 단계에서 반환된 ID로 설정합니다.
API 속도 제한
Power Automate 흐름에는 Dataverse API 제한이 적용됩니다. 대용량 시나리오의 경우 Dataverse Web API 일괄 처리 엔드포인트 를 사용하거나 일괄 처리와 함께 예약된 트리거를 사용하여 흐름 실행을 분산하는 것이 좋습니다.
중복 작업 주문 방지
흐름이 동일한 트리거에서 자주 실행되는 경우 새 트리거를 만들기 전에 작업 순서가 이미 있는지 확인하는 조건을 추가합니다. 원본 레코드 ID로 필터링된 행 나열 작업을 사용하여 기존 작업 순서를 확인합니다.
오류 처리
프로덕션 흐름의 경우 범위 작업에서 새 행 추가 단계를 래핑하고 실행이 실패하도록 구성된 병렬 분기를 추가합니다. 이 브랜치를 사용하여 오류를 기록하거나 알림을 보냅니다. HTTP 트리거 흐름의 경우 항상 응답 작업을 추가하여 호출 시스템이 타이밍 초과가 아닌 성공 또는 실패 상태 코드를 받도록 합니다.