A big change is happening to Microsoft Syntex in that pay as you go (PAYG) is coming and this usage will be billed though a Microsoft Azure Subscription. This is currently in a FREE public preview and only initially for Syntex unstructured document processing (document understanding) and prebuilt document processing. I will setup Syntex pay as you go in my M365 tenant and Azure subscription and provide my thoughts.

The idea of this public preview is to get organisations used to the PAYG model, to understand their typical usage and estimate costs for the future consumption model. During the preview you will not pay for any documents processed using unstructured & prebuilt document processing models. Other Syntex document processing models such as Freeform or Structured document processing are not supported for PAYG at present.

Only pages processed will be recorded and no costings (even estimates) will be reported. Pricing for Syntex PAYG is expected to be released February 2023 onwards – I’m very interested to see the prices!

By adding a pay as you go model to Syntex this will allow more users to use Syntex and not have the handbrake of requiring a Syntex per user licence to use any Syntex features. Some users may for example very infrequently add a file to a Syntex enabled library for processing so it might be hard to justify buying Syntex licences for all in case they need to use Syntex. It will also help organisations not sure about Syntex to experiment with it without committing to user licences so will also drive adoption there.

It’s also great that it billing is handled through Azure so Azure Cost Management (ACM) can be used which has lots of inbuilt tools for reporting monitoring or alerting. Alerts can be setup to monitor usage and spending with usage thresholds. As this is all done in Azure Cost Management there is no need to do big data analysis of CSVs generated, API calls or even build your own usage monitor application for example.

Setting up Syntex PAYG

As previously mentioned to use Syntex pay as you go you will need:

  • An Azure subscription
  • An Azure resource group in that subscription
  • An Azure storage account in that subscription if you want to create usage reports.

I followed the Microsoft instructions here but a step that is not mentioned is that the Azure subscription needs to be in the same tenant as your M365 tenant. Otherwise you will get the message below:

You don’t have access to an Azure subscription. Create an Azure subscription and resource group or check your access and try again.

My Azure subscription was previously linked to old M365 tenant where I dont use Syntex so I had to go into my Azure subscription and use the change directory function to change to my Syntex tenant. I’m not going to blog about the process but I did find this blog article by Laura Kokkarinen very useful for transferring my Azure subscription.

M365 Tenant Setup for Microsoft Syntex

Once the subscription was transferred I created a Resource Group in Azure named Syntex-PAYG as I would then need this to link Microsoft Syntex to Azure. I then went into the M365 admin centre then to the Setup menu, Files and content section, selected Use Content AI with Microsoft Syntex and then clicked on the Set up billing button. Then I was able to select my Azure Subscription, Resource Group, Region from the drop down menus and then select Save,

That’s all from the M365 admin side and there is no further configuration in M365 needed!

Azure Cost Management Setup

Now that Syntex is linked to Azure you will now need to go to your Azure Subscription and configure Azure Cost Management. A recurring task called Exports will need to be created that automatically export your Cost Management report data into Azure Blob Storage on a scheduled basis. The exported data is in CSV format and contains all the cost and usage information collected by Cost Management. This CSV can the be filtered by consumedService = Microsoft.Syntex. to display only Syntex entries. In the Azure Cost Management page for your subscription go to the Settings section on the left hand navigation then select Exports.

Then create the export specifying the name, export type (daily, weekly, monthly or one-time) and start date. Along with either linking the export to use an existing storage acount or creating a new storage account to store the export blobs (CSVs).

Once created the Export task will show as Active and clicking on the task will provide information of any previous runs.

I then went into my M365 tenant and performed lots of Syntex activities in libraries where Syntex unstructured and pre-built models are enabled. The idea to create some Syntex usage activity for Azure to record – I did this by emptying my demo libraries and then re-adding the files so Syntex processed them again.

I then ran the Export task manually in Azure cost management and the report took about an hour to run.

I then browsed the Azure Storage account I created and navigated to the report in the Container directory

The report however was empty.

The scheduled 12:15am report (4 hours later) was also empty so it appears to take some time to start reporting. When the next 12:15am scheduled export ran 24 hours later it had now collected some Syntex data – so be prepared to wait a little while!

Here is the generated CSV – you can see there is other non-Syntex event also listed.

Generated Report Analysis

Here it is filtered by consumedService = Microsoft.Syntex

Finally I’ve tidied it up to reflect the relevant Syntex fields I think you will need. It is split into an entry per Syntex library.

The key Syntex fields are:

  • MeterCategory (Syntex)
  • MeterSubCategory (Can see this being useful for filtering when more Syntex features come to PAYG i.e. Content Assembly)
  • MeterName (As Above)
  • UsageQuantity (Quantify Syntex usage in this case individual pages processed by Syntex per library).
  • ResourceRate (Assume when Syntex PAYG is GA this will display the cost per page).
  • PreTaxCost (Assume this will be the UsageQuantity * ResourceRate to work out the total cost per library)
  • ConsumedService (filter this by “Microsoft.Syntex)
  • ResourceType (Can see this being useful for filtering when more Syntex features come to PAYG i.e. Content Assembly)
  • Tags (See below)

The Tags column of the report deserves a special mention – as mentioned previously that in the report there is a line entry for each library for Syntex activity. The Tags column is populated with JSON representing the Site URL and library internal name (see below). You would then use this to filter the CSV further to only show costs for a certain library etc.

Azure Cost Management: Cost Alerts & Cost Analysis

Although there is no costings available for Microsoft Syntex PAYG in Microsoft Azure I wanted to investigate whether I could create a cost alert to a particular library using the information in the Tags attribute.

It pleased me that I was able to create a budget and go into the filters and select the Site Syntex and library aviationincidentreport. I could then use this for example to send alerts/trigger an action if there is a large amount of usage in that department’s site or library to help prevent a large Azure bill.

As there is no costings populated in Azure the Cost Analysis section shows <£0.01 but I can see this being very useful in the future as it also allows you to drill down using the Tags attribute so you could filter by Syntex usage in a Site or Library etc.

Feedback

  • Tags is currently in my opinion under utilised – it should display information about the name of the model used, number of files (not pages) processed etc
  • This suggestion might generate some HUGE reporting blobs but can see some merit to allow more granularity in the reporting i.e. instead of reporting at the library level provide the option to report on each file processed – filename, number of pages, who uploaded the document, model triggered, file processed by Syntex but no model triggered etc.
    • Would be great to give admins the choice to do reporting on all events to a granular level, which would aid cross billing and investigative work i.e. in the future who keeps creating eSignature requests and burning through the Azure budget!
  • It would be great to before public preview ends replace all references to Document Understanding with the new name unstructured document processing.
  • I also see large multi-national companies which share the same M365 tenant wanting to use seperate Azure Subscriptions. So I hope in the future there is the ability to assign multiple Azure subscriptions to Microsoft Syntex so for example different Sites/Libraries or even models use different Azure subscriptions.

Summary

I can really see the benefits of Syntex pay as you go and it opening Syntex up for all users in an organisation rather than them needing a Syntex licence each. This should really help to drive Syntex adoption and give the whole organisation a chance to benefit from Syntex especially with the new Microsoft Syntex features announced at Ignite such as eSignature!

Hopefully the pricing model and guidance is on point when it is released so IT admin’s who usually control the Azure subscriptions/budgets will allow Syntex to be linked to Azure and not be a road-blocker! There needs to be good guidance regarding calculators for usage, accessing reporting, implementing spending thresholds etc so admins can control costs/monitor usage. Fortunately in Azure Cost Management this is all built in and organisations won’t have to build their own monitoring applications – it should all be there in ACM but may need a little configuring!

Let me know how you get on with Microsoft Syntex pay as you go and linking it to Azure? It will be interesting in your tenant to see how Syntex usage is and will hopefully give you a typical baseline of Syntex usage in preparation for a future consumption model. I’m looking forward to seeing how the PAYG story develops as more workloads/features come onboard eSignature etc.

Leave a Reply