Office 365 라이선스 현황 메일링 - Power Automate 를 활용하여 라이선스 현황 자동 메일링 / Use Power Automate to keep an eye on your licenses
IT민들레
2021. 12. 18. 17:40
728x90
반응형
Power Automate 를 활용하면 매일 정해진 시간에 O365 라이선스 현황(잔여수량/할당수량/구매수량 등) 을 정기적으로 이메일로 리포팅 받는 흐름(Flow)을 만들 수 있습니다. Microsoft Admin Center 에서 라이선스 현황을 수동으로 확인하지 않아도 되는 장점이 있습니다.
전체적인 단계는 아래와 같습니다.
Azure AD 에 새로운 App 등록 - Graph API 호출에 필요한 권한
Power Automate 에서 새로운 흐름(Flow) 생성
Microsoft Graph API 로 라이선스 현황 가져오기
API로 받은 결과를 Parsing
가져온 배열 데이터에서 필요한 라이선스만 필터링
Excel Online 에 라이선스 수량 업데이트
Excel Online 을 읽어서 HTML 생성
HTML 을 이메일로 보내기
Power Automate 에 이 단계들을 완성된 Flow 로 보면 다음과 같습니다. 위의 1번 단계는 API 호출을 위해 설정하는 별도의 단계입니다.
API permission 등록 - API permission 메뉴를 선택하고, Add a permission 을 클릭합니다.
Microsoft Graph API 클릭
Organization.Read.All 로 검색하여 선택 후 저장
Organization.Read.All 이 추가되면 "Grant admin consent for ..." 를 클릭하여 적용하세요.
Certificates & secrets 메뉴에서 Client secret 을 등록합니다. 만료기한은 24개월이 최대입니다. 주의!Secret ID 및 Value 는 자동으로 마스킹처리가 되어 나중에는 확인할 수 없으니 반드시 복사해서 별도로 저장해 두시기 바랍니다.
Overview 의 Tenant ID, Client ID 를 확인합니다. 이 ID들과 Secret value 를 Power Automate 에서 API 호출을 위해 사용하게 됩니다.
API를 통해 데이터를 가져오기 위한 App 등록이 완료되었으니 이제 Power Automate 에서 데이터를 가져오고 메일을 보내는 흐름을 만듭니다.
Power Automate 에서 새로운흐름(Flow) 생성
Power Automate 에 접속하여 New flow > Scheduled cloud flow 를 선택합니다. 정해진 시간 또는 반복적으로 라이선스 현황을 이메일로 보내기 위한 유형입니다.
평일 오전10시 마다 동작하도록 설정합니다.
New step 을 클릭합니다.
MS Graph API 호출을 위하여 HTTP 를 추가하고 아래와 같이 입력합니다. 2번 : https://graph.microsoft.com/v1.0/subscribedSkus 4번 : Tenant ID, 6번 : Client ID, 7번 : Secret value 를 입력하면 됩니다. 5번은 https://graph.microsoft.com 를 입력하세요.
하나의 Step 이 완료되면 Save & Test 를 통해서 현재까지의 흐름에 오류는 없는지 테스트 결과를 확인합니다. 테스트 결과에는 실제 동작 단계별로 데이터도 확인할 수 있습니다. 아래는 HTTP 단계까지 테스트를 실행한 결과입니다. 아래와 같이 오류없이 결과가 출력되면 정상인 것입니다.
HTTP로 https://graph.microsoft.com/v1.0/subscribedSkus 로 호출한 결과를 Parsing 하기 위하여 Parse JSON 단계를 추가합니다.
Schema는 이전 단계의 테스트결과를 복사하여 "Generate from sample" 을 클릭하고 열리는 창에 붙여넣기하면 위와같이 설정됩니다. 또는 아래 코드를 복사&붙여넣기 하세요.
필요한 라이선스만 필터링하기 위하여 Filter array 단계를 추가합니다. Edit in advanced mode 를 클릭 후 아래 코드를 넣습니다. 이 예제는 2개의 라이선스코드만 필터링합니다. @or(contains(item()?['skuPartNumber'], 'DEVELOPERPACK_E5'),contains(item()?['skuPartNumber'], 'FLOW_FREE')) (*FLOW_FREE 는 "MICROSOFT FLOW FREE" 라이선스이고, DEVELOPERPACK_E5 는 "OFFICE 365 E5" 입니다. 라이선스 코드와 일반적인 제품명은 Product names and service plan identifiers for licensing 를 참고하세요.)
데이터를 저장할 Excel Online 파일을 준비합니다. OneDrive 또는 SharePoint 에 Excel 파일을 만들고 Table 지정을 하면 해당 Table 의 데이터를 업데이트할 수 있습니다. 라이선스 수량이 변화되므로 항시 업데이트가 되어야 합니다. Excel Online 에서 Insert > Table 을 클릭하고, Header 포함 옵션을 선택한 후 OK 합니다. Header는 skuPartNumber, enabled, consumedUnits 3개로 설정하고, 위에 설명한 skuPartNumber 에 라이선스코드를 기재합니다. (*이 값이 Key 가 되어 나머지 컬럼을 업데이트하게 됩니다.)
결과를 반복문으로 돌면서 업데이트 하기 위하여 Apply to each 를 선택하고, Update a row(Excel Online Business) 을 선택 후 아래와 같이 설정합니다. 동적 변수의 값은 항목 부분을 클릭 시 우측에서 선택하여 클릭하면 됩니다.
이제 Test 를 다시 진행해서 Excel 에 업데이트가 잘 되는지 확인합니다. 잘 동작된다면 아래처럼 각 컬럼의 숫자가 업데이트 됩니다. 이어서 이 Excel 에 저장된 데이터를 불러와서 HTML 포맷으로 만든 후 이메일을 전송할 것입니다.
Excel Online 데이터를 읽어오기 위하여 List rows present in a table 단계를 추가한 후 해당 Excel 의 위치와 Table 을 설정합니다.
읽어온 데이터를 HTML 로 구성하기 위하여 Create HTML table 단계를 추가하고 아래처럼 표 형태를 설정합니다. Show advanced option 선택 후 Custom 모드로 각 컬럼을 지정할 수 있습니다. Test 를 실행하면 아래와 같은 Output 확인이 가능합니다. 이제 이것을 이메일로 전송하면 성공입니다.
Send an email 단계를 추가하고, 수신받을 이메일주소 및 제목, 본문을 설정합니다. 제목에 현재 날짜를 동적으로 추가하려면 formatDateTime(utcNow(),'yyyy-MM-dd') 를 동적변수 부분에서 설정합니다.
이제 최종 Test 를 수행하여 이메일로 도착하는 결과를 확인해 보세요. 아래와 같은 결과를 확인할 수 있습니다.