연동 / ERP / Microsoft Dynamics 365 Supply Chain Management
Dynamics 365 Supply Chain Management 연동 가이드 SkyPlanner APS를 활용한 생산 스케줄링
이 Dynamics 365 Supply Chain Management 연동 가이드는 파트너와 IT 팀을 대상으로 Microsoft Dynamics 365 Supply Chain Management를 SkyPlanner APS에 연결하는 방법을 설명합니다. SkyPlanner는 Dynamics 365 Supply Chain Management의 표준 데이터 엔터티를 사용해 양방향으로 연동합니다.
- 생산 주문, 경로 공정, 경로 작업, BOM 행, 자원, 달력, 릴리스된 제품, 보유 재고, 구매 주문 행을 가져옵니다.
- 스케줄링된 시작 및 종료 시간과 선택된 자원을 생산 주문 및 해당 경로 공정에 다시 기록합니다.
- 작업자의 작업 시간과 수량은 경로 카드 분개장을 통해 다시 전송됩니다.
- SkyPlanner 웹훅은 일정이 변경되는 즉시 변경 사항을 전송합니다.
SkyPlanner 팀은 온보딩 과정에서 고객의 Supply Chain Management 환경에 맞춰 연동을 설정하고, 운영 시작 후에도 지원합니다. 이 가이드는 연동 작업에 참여하거나 문서화된 SkyPlanner REST API(API 참조 문서)를 기반으로 직접 개발하려는 파트너와 개발자를 위한 문서입니다.
Dynamics 365 SCM 연동 옵션
Supply Chain Management는 데이터 엔터티를 통해 데이터를 제공합니다. 스케줄링에 필요한 주요 옵션은 네 가지입니다.
- OData v4 REST 엔드포인트.
[Your organization's root URL]/data는 IsPublic으로 표시된 모든 데이터 엔터티를 제공하며 생성, 읽기, 업데이트, 삭제를 모두 지원합니다.$filter,$count,$orderby,$skip,$top,$select및 첫 번째 수준의$expand를 지원합니다. 페이징은 서버에서 제어하며 최대 레코드 수는 10,000개입니다. 일괄 요청에서는 쓰기 작업을 변경 집합으로 묶을 수 있습니다. OData는 동기 방식으로 동작합니다. (출처) - 일괄 데이터 API. Data management package REST API와 반복 연동은 대용량 데이터를 비동기 방식으로 전송합니다. Microsoft는 다음과 같이 안내합니다. “If the volume is more than a few hundred thousand records, use the batch data API.”(데이터가 수십만 개의 레코드를 넘으면 일괄 데이터 API를 사용하세요.) 이 API는 온프레미스에서도 지원됩니다. (출처)
- 비즈니스 이벤트. Finance and operations 앱은 Azure Service Bus, Event Grid, HTTPS 엔드포인트 또는 Power Automate로 비즈니스 이벤트를 발행합니다. (출처)
- 사용자 지정 서비스와 OData 작업. X++ 사용자 지정 서비스와 바인딩된 OData 작업은 요청 시 비즈니스 로직을 실행합니다.
SkyPlanner 연동은 일상적인 데이터 교환에 OData 엔드포인트를 사용하고, 대용량 초기 적재에는 일괄 데이터 API를 사용합니다. Supply Chain Management에 별도로 설치하는 항목은 없습니다.
인증
Microsoft Entra ID에 애플리케이션을 등록합니다(서비스 주체). Supply Chain Management에서 이 애플리케이션을 연동에 필요한 보안 역할이 부여된 사용자와 매핑합니다. 연동은 생산, 자원, 재고 데이터를 읽고 생산 주문의 스케줄링 정보와 분개장을 기록합니다. 토큰은 클라이언트 자격 증명으로 Entra ID에 요청합니다.
연동에서 조회할 수 있는 데이터는 다음 두 가지 규칙에 따라 결정됩니다.
- 법인. 요청에
?cross-company=true를 추가하지 않으면 OData는 기본 회사의 데이터를 반환합니다. 여러 사이트를 운영하는 제조 환경에서는dataAreaId로 필터링합니다. - 공개 이름. 아래 엔터티 이름은 데이터 관리에 사용되는 이름입니다. 공개 OData 컬렉션 이름은 다를 수 있으므로 해당 환경의
/data/$metadata에서 확인하세요.
SkyPlanner 측 REST API는 API 토큰(SkyPlanner Settings > API)으로 인증하며, Swagger/OpenAPI 문서가 제공됩니다. 연동 튜토리얼에서 초기 API 호출 과정을 안내합니다.
데이터 매핑
| D365 SCM 엔터티 | SkyPlanner 객체 | 방향 | 주기 |
|---|---|---|---|
| 릴리스된 제품(ItemNumber) | 제품 및 자재 | SCM → SkyPlanner | 초기 적재 후 변경분 반영 |
| 생산 BOM 행(ProdProductionOrderBillOfMaterialsLineEntity), BOM 행 | 제품 구조, 주문별 자재 | SCM → SkyPlanner | 주문 동기화 시마다 |
| 경로, 경로 버전, 경로 공정, 공정 속성(RouteOperationPropertiesV2Entity) | 준비 시간과 실행 시간이 포함된 공정 단계 | SCM → SkyPlanner | 초기 적재 후 변경 시 |
| 자원(OpResOperationsResourceEntity), 자원 그룹, 수행 능력 | 작업장, 작업장 그룹, 효율 | SCM → SkyPlanner | 초기 적재 후에는 드물게 |
| 작업 시간 달력, 달력의 날짜 및 시간 구간, 달력 할당 | 교대 근무 | SCM → SkyPlanner | 매일 동기화하거나 SkyPlanner에서 교대 근무 관리 |
| 생산 주문 헤더(ProdProductionOrderHeaderEntity) | 납기와 상태가 포함된 주문 | SCM → SkyPlanner | 몇 분마다 또는 비즈니스 이벤트 발생 시 |
| 경로 공정(ProdProductionOrderRouteOperationEntity), 경로 작업(ProdProductionOrderRouteJobEntity) | 소요 시간과 자원 요구사항이 포함된 작업 | SCM → SkyPlanner | 주문 동기화 시마다 |
| 보유 재고 | 재고 잔량 | SCM → SkyPlanner | 매시간 또는 스케줄링 실행 시 |
| 납품일이 포함된 구매 주문 행 | 입고 예정 자재. 구매 주문이 Delivered로 표시되면 재고 갱신 | SCM → SkyPlanner | 매시간 또는 스케줄링 실행 시 |
| 각 경로 공정의 스케줄링된 시작·종료 일시 및 공정 자원 | 공정별 계획 시작·종료 시점 및 작업장 | SkyPlanner → SCM | 일정 변경 시 SkyPlanner 웹훅으로 전송 |
| 경로 카드 분개장(ProdRouteCardProductionJournalEntryEntity: RegisteredHours, ReportedGoodInventoryQuantity) | 작업 시간 기록 및 수량 | SkyPlanner → SCM | 선택한 경우 실적 확인 시마다 또는 교대별 |
| SkyPlanner 제약 조건 설정 | 준비·전환 시간 매트릭스, 수량이 제한된 자원으로 설정한 공구, 작업자 수, 대체 자원 | SkyPlanner에서 관리 | 온보딩 중 설정 |
연동 패턴
1. 기준정보 초기 적재. 자원, 자원 그룹, 달력, 릴리스된 제품, 경로, BOM을 적재합니다. 데이터가 수십만 개의 레코드에 달하면 일괄 데이터 API를 사용하고, 그 외에는 OData 페이징을 사용하세요. 각 SCM 자원을 SkyPlanner 작업장에 매핑합니다. 자원 그룹만 매핑해서는 안 됩니다. 공정 스케줄링은 그룹 단위로 예약하지만, 현장에서는 개별 자원으로 작업을 수행하기 때문입니다.
2. 주문 동기화. SkyPlanner가 관리하는 상태(일반적으로 Scheduled 및 Released)에 있는 확정된 생산 주문을 경로 공정, 경로 작업, BOM 행과 함께 읽어옵니다. 미결 구매 주문 행도 읽어옵니다. SkyPlanner는 발주된 자재를 구매 주문의 납품일부터 사용 가능한 것으로 처리하며, 구매 주문이 Delivered로 표시되면 재고를 갱신합니다.
계획 생산 주문은 범위에 명시적으로 포함된 경우가 아니면 제외하세요. Planning Optimization은 실행할 때마다 계획 생산 주문을 다시 생성합니다.
3. 스케줄링 결과 반영. SkyPlanner는 엔진이 배치하거나 이동한 모든 공정에 대해 스케줄링된 시작·종료 일시와 공정 자원을 해당 경로 공정에 기록합니다. 이때 해당 환경의 /data/$metadata에 있는 필드 이름을 사용합니다. 변경 사항은 OData 일괄 변경 집합으로 전송하므로 한 번의 스케줄링 실행 결과가 하나의 일관된 업데이트로 반영됩니다.
4. 현장 실적 확인. 작업자는 SkyPlanner Mobile Confirmations 또는 Production Timer로 작업을 기록하며, 이 작업 시간 기록을 바탕으로 일정이 최신 상태로 유지됩니다. 작업 시간과 양품 수량은 경로 카드 분개장 행으로 다시 전송할 수 있습니다. Report as finished는 현재 사용 중인 SCM 또는 Production floor execution에서 그대로 처리합니다.
각 전기 항목은 하나의 채널에서만 처리하세요. 동일한 작업 시간을 SkyPlanner와 Production floor execution 양쪽에서 등록하면 중복됩니다.
5. 관리 주체와 충돌 처리 규칙. 운영 시작 전에 다음 사항을 문서화하세요.
| 데이터 | 관리 주체 |
|---|---|
| 제품, BOM, 경로, 수량, 주문 상태, 원가 계산 | Supply Chain Management |
| 계획 생산 주문 | Planning Optimization |
| 공정 순서, 스케줄링된 시작·종료 시점, 자원 할당 | SkyPlanner |
| 준비·전환 시간 매트릭스, 공구, 작업자 수, 대체 자원 | SkyPlanner |
| 교대 근무 및 부재 | 범위 산정 시 선택한 하나의 시스템 |
| 작업 시간 및 생산 실적 전기 | Supply Chain Management. 선택한 경우 SkyPlanner 작업 시간 기록을 사용 |
충돌의 주된 원인은 SCM 자체 작업 스케줄링입니다. 계획 담당자가 SCM에서 주문 일정을 다시 잡으면 SkyPlanner가 설정한 날짜를 덮어씁니다. SkyPlanner가 관리하는 주문은 생산 주문 헤더의 IsProductionOrderSchedulingLocked를 사용하세요. SCM에서 변경된 주문은 새 버전으로 취급하고 다시 동기화하세요. 생산에 변화가 생기면 Autopilot이 자동으로 일정을 다시 조정합니다.
프로젝트에 포함되는 작업
구현은 일반적으로 온보딩 시작 후 몇 주 안에 완료됩니다. 그에 앞서 자사 데이터로 30일 무료 체험을 진행합니다. 데이터 관리 내보내기 프로젝트나 Excel 추가 기능으로 자원, 공정 경로, 미결 생산 주문을 내보낸 다음, CSV 또는 Excel 파일로 가져와 일정을 검증하세요.
- 범위 산정. 매핑 테이블, SkyPlanner가 관리할 상태, 동기화 주기, 전기 채널을 확정합니다.
- 접근 권한. Entra ID 애플리케이션을 등록하고 최소 권한 역할을 가진 SCM 사용자에 매핑한 뒤,
/data/$metadata에서 공개 엔터티 이름을 확인합니다. 샌드박스에서 먼저 진행한 다음 운영 환경에 적용합니다. - 초기 데이터 적재. 자원, 달력, 릴리스된 제품, 공정 경로, BOM을 적재합니다.
- 주문 및 구매 주문 동기화.
$filter로 변경된 레코드를 폴링하고, 카탈로그에서 제공하는 경우 비즈니스 이벤트도 활용합니다. - SkyPlanner 제약 조건 설정. 준비 시간 매트릭스, 공구, 작업자 수, 대체 설비 또는 인력을 설정합니다.
- 스케줄링 결과 반영. 경로 공정을 일괄 업데이트하고, SkyPlanner가 관리하는 주문에는 스케줄링 잠금을 설정합니다.
- 병행 테스트. 기존 계획과 SkyPlanner를 병행 운영하면서 날짜를 비교하고 기준정보를 수정합니다.
- 정식 가동. 데이터가 일치하면 스케줄링 결과 반영 기능을 활성화합니다.
Dynamics 365 SCM 연동 시 고려할 사항
- 효율 중복 반영. SCM은 “Scheduling time = Time x 100 / Efficiency percentage.”(효율 백분율을 기준으로 스케줄링 시간을 계산합니다.)라는 계산식을 적용합니다. 효율은 SkyPlanner 작업장 효율에 한 번만 매핑하고, 이미 조정된 시간에 다시 적용하지 마세요.
- 자원 그룹에 할당된 달력. 자원 그룹별, 자원별 달력 할당 정보를 읽어 와야 합니다. 그렇지 않으면 생산능력에 오차가 생깁니다.
- 공정 스케줄링과 작업 스케줄링의 차이. 공정 스케줄링으로 일정을 잡은 주문에는 시작·종료 시각이 없고 특정 자원도 지정되지 않습니다. 날짜뿐 아니라 공정 경로의 공정과 자원 요구사항도 동기화하세요.
- 유한 생산능력 플래그. Finite capacity가 No로 설정된 자원에는 SCM에서 생산능력을 초과하는 작업이 배정될 수 있습니다. SkyPlanner에서는 실제 제약 조건을 모두 반영해 자원별 가용 한도를 설정하세요.
- 공정당 자원 32개 제한. SCM의 작업 스케줄링에서는 공정당 자원을 최대 32개까지 사용할 수 있습니다. SkyPlanner에서는 작업장 그룹과 대체 작업장으로 대안을 구성합니다.
- 페이징과 데이터 규모. OData는 페이지당 10,000개 레코드를 반환하며, 관련 데이터 확장은 한 단계까지 지원합니다. 대규모 초기 데이터 적재에는 배치 데이터 API를 사용하세요.
- 법인. 여러 법인에 걸쳐 운영되는 공장에서
cross-company=true와dataAreaId필터를 사용하지 않으면 기본 회사의 데이터만 동기화됩니다.
연동 설정은 누가 담당하나요?
연동 작업에는 자사의 공정 경로, 자원, SCM 설정에 맞춘 매핑과 SkyPlanner의 제약 조건 설정이 포함됩니다. 제약 조건으로는 준비 시간 매트릭스, 공구, 작업자 수, 대체 자원을 설정합니다.
- SkyPlanner 팀이 온보딩 중에 연동을 설정하고 정식 가동 후에도 지원합니다. 지원 범위는 SkyPlanner 측과 사전에 합의한 SCM 데이터 엔터티입니다. 공장마다 D365 SCM 운영 방식이 다르므로, 이러한 운영 노하우를 이 단계에 반영합니다.
- 기존 Dynamics 파트너도 참여할 수 있습니다. 파트너는 고객사의 구성, 확장 기능, 보안 역할을 잘 알고 있으며, Entra ID 애플리케이션과 엔터티 접근 권한을 설정할 수 있습니다. SkyPlanner는 REST API, Swagger/OpenAPI 문서, 웹훅을 제공합니다.
- 사내 개발팀이 직접 개발할 수도 있습니다. 동일한 문서화된 REST API에 API 토큰으로 접근하면 됩니다. API 토큰만 있으면 시작할 수 있으며, 필요할 때 SkyPlanner 팀이 지원합니다.
연동이 완료되면 Arcturus 엔진이 SCM의 실시간 생산 주문을 바탕으로 일정을 수립하고, 산출된 날짜를 공정 경로의 공정에 반영합니다. SkyPlanner는 작업장 5개를 포함해 월 199 €부터 시작하며 매월 청구됩니다. 고객사의 프로세스와 요구사항에 맞춘 연동 견적을 이용 요금제와 함께 사전에 제공하므로, 시작 전에 전체 비용을 확인할 수 있습니다.
SCM 자체 계획 기능과의 차이는 Dynamics 365 SCM 생산 스케줄링에서 확인하세요. 전체 개요는 Dynamics 365 SCM 페이지에, 다른 ERP와의 연동 정보는 ERP 연동 허브에 있습니다.
제조업 고객의 SkyPlanner 사용 후기
2시간매주 절약
“SkyPlanner 덕분에 Excel 스프레드시트로 생산 계획을 세우던 방식에서 실시간으로 생산을 최적화하는 방식으로 전환했습니다.”
Kalle Kalliomäki, 공급망 전문가
UTU · 배전반 및 개폐 장치
생산 계획에 드는 업무 시간이 매주 2시간 줄었으며, 새로운 작업 대기열은 몇 초 만에 생산 라인에 전달됩니다.
+90%생산 효율
“생산 효율이 90% 향상되었습니다.”
Abdul Rucyinga, IT 총괄
Laboratory & Allied · 의약품 제조
생산 효율이 90% 향상되었으며, 모든 작업장을 대상으로 석 달간의 최적화된 계획을 수립하는 데 30분도 걸리지 않습니다.
100%2021년부터 유지한 납기 준수율
“SkyPlanner로 생산능력을 한눈에 파악하고 예측 가능한 계획을 세울 수 있습니다.”
Dan Berglund, COO/CFO
Opes Corporation · 화학 및 식품 제조
SkyPlanner를 도입한 2021년부터 지금까지 납기 준수율 100%를 유지하고 있습니다.
1,000s작업 지시 일정 자동 수립
“생산을 관리하는 방식이 달라졌고, 생산능력에 대한 이해도 완전히 다른 수준에 도달했습니다.”
Hannu Ryynänen, 대표이사
Mamec · 산업용 믹서, 펌프 및 첨단 위탁 제조
수천 건의 작업 지시 일정이 자동으로 수립되며, 조직 전체가 생산 현황을 실시간으로 확인할 수 있습니다.
자주 묻는 질문
연동에는 어떤 D365 SCM API를 사용하나요?
/data의 OData v4 REST 엔드포인트를 사용합니다. 이 엔드포인트는 모든 공개 데이터 엔터티에 대해 생성, 읽기, 업데이트, 삭제 기능을 제공합니다. 대규모 초기 데이터 적재에는 배치 데이터 API를 사용합니다. 카탈로그에서 비즈니스 이벤트를 제공하는 경우, 이를 통해 준실시간 트리거를 추가합니다.
Supply Chain Management에 별도로 설치해야 하는 것이 있나요?
아니요. OData를 통해 표준 데이터 엔터티를 사용합니다. 관리자가 Microsoft Entra ID 애플리케이션을 등록하고 필요한 역할을 가진 SCM 사용자에 매핑하면 됩니다.
수립된 일정은 Supply Chain Management에 어떻게 반영되나요?
SkyPlanner는 OData 배치 변경 집합을 통해 예정된 시작·종료 날짜와 시각, 공정 자원을 생산 주문의 공정 경로 내 공정에 기록합니다. SkyPlanner가 관리하는 주문은 IsProductionOrderSchedulingLocked로 보호합니다.
SCM 작업 스케줄링을 조정하는 대신 SkyPlanner를 연동하는 이유는 무엇인가요?
Planning Optimization은 유한 생산능력 적용 기간 내에서만 생산능력 한도를 고려하며, 그 이후에는 생산능력이 무한하다고 가정해 계획합니다(출처). SCM 작업 스케줄링은 이미 예약된 생산능력을 피해 생산 주문을 하나씩 배치하고 준비 시간을 공정 시간으로 반영합니다(출처). 또한 Microsoft는 교대 근무에 따라 생산능력이 달라지는 경우 유한 생산능력을 고려한 기준 계획을 권장하지 않습니다(출처). SkyPlanner는 준비 시간 매트릭스를 활용해 모든 확정 주문의 일정을 함께 수립하며, Autopilot은 유의미한 변경이 발생할 때마다 자동으로 일정을 다시 수립합니다. SkyPlanner 팀이 양방향 연동을 설정하고 지원하며, Dynamics 파트너가 SCM 측을 담당할 수 있습니다.
계획 생산 주문도 SkyPlanner에서 일정을 수립해야 하나요?
일반적으로는 아닙니다. Planning Optimization은 실행할 때마다 계획 생산 주문을 다시 생성합니다. SkyPlanner는 범위 산정 단계에서 합의한 상태의 확정 생산 주문을 대상으로 일정을 수립합니다.
온프레미스 Supply Chain Management에서도 연동할 수 있나요?
온프레미스 배포에서는 Microsoft가 해당 환경에서 지원하는 배치 데이터 API로 연동합니다. 어느 환경이든 SkyPlanner 측에서는 동일한 REST API를 사용하며, 연동 방식은 범위 산정 단계에서 확정합니다.