Zoomed Image

Microsoft License Statement Import

Software Asset Management Guide
Importing Licenses

Microsoft License Statement Import

The Microsoft License Statement (MLS) is the file Microsoft sends after a true-up or as part of an Enterprise Agreement renewal, listing every license you are entitled to under that agreement. xAssets has a dedicated import path for MLS files that creates licenses, links them to an agreement, and stamps the source statement onto every record for audit traceability.

When To Use the MLS Import

Use this path when:

  • You have received an MLS file from Microsoft (typically an Excel or CSV from your account team or VLSC)
  • You want all licenses from that statement linked to a single agreement record
  • You need the source statement name preserved on every license for audit purposes

For Microsoft licenses purchased outside an MLS — perpetual boxed copies, retail purchases, OEM — use the Standard License Import instead.

What the MLS Import Does

The MLS import is a multi-step pipeline:

  1. Loads the statement file into a temp table
  2. Creates a parent Software License Agreement record for the statement
  3. Stamps the statement name onto each transaction row in the temp table
  4. Creates one license asset per transaction line, with SoftwareAgreement set to the parent agreement
  5. Updates location attributes on the license records based on agreement metadata

The result is an agreement record with the imported licenses as children, every license tagged with the source statement.

Workflow

  1. Save the MLS file in a tab-separated or pipe-separated format (the format Microsoft provides usually works directly; convert if needed).
  2. Navigate to Licensing → Import → MLS (or Admin → Transformations → Import MLS on older menus).
  3. Paste the statement contents or specify the file path.
  4. Run the import. It runs as a batch job — check progress in the batch jobs panel.
  5. Once complete:
    • Open Licensing → Software License Agreements to see the new parent agreement record.
    • Open the agreement to see the imported licenses as children.
    • Run Calculate Licensing Position to fold the new licenses into compliance.

Catalog Matching

Like the standard import, MLS rows must match catalog Product Codes. Microsoft product naming is verbose ("Office 365 Plan E3 Open Annual Government") and your catalog may not match exactly. Before importing:

  1. Open the MLS file and list the unique product names.
  2. Confirm each appears in the Software Catalog with the matching Product Code.
  3. Add or rename catalog entries as needed.

This is the same preparation step that the Standard License Import needs. See Preparing the Catalog.

Statement Name Tracking

Every license created from an MLS import gets the statement name written into a tracking field. This means:

  • You can list all licenses that came from a specific MLS file (useful when reconciling against the source)
  • During an audit, the lineage of every Microsoft license is traceable back to the statement
  • Re-importing the same MLS file is detectable

Re-Importing or Replacing a Statement

If you need to replace an existing statement (e.g., Microsoft sent a corrected version):

  1. Use Licensing → Software License Agreements to find the original agreement.
  2. Use the Delete MLS Statement transform to remove the old statement and its licenses.
  3. Import the new statement.

Alternatively, run the import again — if the statement name matches, existing records may update rather than duplicate. Test on a small file first to confirm the behavior on your system.

What If My Statement Format Is Different

The MLS pipeline expects a specific column shape. If Microsoft has changed the format or if you are working with a partner-supplied variation:

  1. Convert the file to the expected shape using a transform of your own (see How to Import CSV for transformation patterns).
  2. Or, fall back to Standard License Import by mapping the statement columns to the standard import column names.

After the Import

Run Calculate Licensing Position. Then:

  • Open Licensing → Licensing Position and verify the products in the statement now show the expected seat counts.
  • Spot-check a few imported licenses by opening them — confirm SoftwareCatalogEntry is populated correctly and SoftwareAgreement is set.
  • Open the parent agreement and confirm the seat counts roll up correctly.