Product

Gain Clarity and Prevent Attacks with the Microsoft Activity Pack

Process API logs from Office 365 and Azure for more impactful insights and stronger protection. 
Kevin Smith
Senior Technical Content Writer
Mar 6, 2025
6 minutes
Subscribe to Our Newsletter
Get weekly product updates and industry news.
Share

See Edge Delta in Action

Analyzing Office 365 and Azure logs is crucial for understanding user actions, resolving issues, and maintaining security and compliance.

To enhance this process, the Edge Delta Microsoft Activity Pack processes API logs from Office 365 activity and Azure events, and returns sharper and more impactful insights for stronger visibility and protection against threats. 

What is the Microsoft Activity Pack and How Does It Work?

Designed for use with Edge Delta’s Security Data Pipelines, this pack contains three processors  specifically designed to parse, optimize, and transform your Microsoft data. Afterwards, the improved logs can be shipped to any security platform for deeper analysis and/or to archival storage for later retrieval. 

Below we’ll walk through each processing step within the Microsoft Activity Pack, and what to expect once it’s up and running.

Processing Pathway: Source Extraction 

After Microsoft logs begin flowing in the Edge Delta {Source} node, they get pushed into the Extract source node. Within this OpenTelemetry Transform Language (OTTL) node, each log’s  source is then extracted from the log body via a regex command to help expedite downstream analysis. 

More specifically, the process for ascribing a new identifier to the log source involves pulling in part of the collector’s name — found by applying  the $(?<source_collector>audit_[^$]*)$ regex pattern to the log body — and linking it to the end of the “o365:api” string.

- name: Extract source
 type: ottl_transform
 statements: |-
   set(attributes["audit"], ExtractPatterns(Decode(body, "utf-8"), "$(?<source_collector>audit_[^$]*)$"))
   set(attributes["source"], Concat(["o365:api", attributes["audit"]["source_collector"]], ":")) where attributes["audit"]["source_collector"] != nil
   delete_key(attributes, "audit")

 

Processing Pathway: Set Index and Sourcetype

Next, the Set index and sourcetype node focuses on efficiency via log categorization. Through utilization of OTTL’s  set function, the node assigns the string value "o365" to the attribute attributes["index"]. As part of this process, the node makes use of two other functions:

Concat - links strings together

ConvertCase - changes the case of a string

In this case, the ConvertCase function is applied to resource["service.name"], converting its value to lowercase by specifying "lower" as the case type. Then, the Concat function joins two strings: "o365:activity" and the result of the ConvertCase function. 

Finally, the set function assigns the concatenated result to attributes["sourcetype"]. The end result creates a consistent index and sourcetype attributes to improve log classification.

- name: Set index and sourcetype
 type: ottl_transform
 statements: |-
   set(attributes["index"], "o365")
   set(attributes["sourcetype"], Concat(["o365:activity", ConvertCase(resource["service.name"], "lower")], ":"))

Processing Pathway: Reserialize Body

Next, the {Reserialize body} node parses the Microsoft logs into a more structured format while removing any extraneous elements, so only the most essential information moves forward in the pipeline. Here’s how that happens through four separate, sequential functions:

set — the first of two set statements, this one decodes the body from a byte array to a UTF-8 encoded string and parses the decoded string into a JSON object, which is assigned to attributes["parsed_body"].

edx_delete_empty_values — deletes keys from the aforementioned attributes["parsed_body"] if the values are empty strings or nulls, which effectively removes any superfluous values from the parsed JSON object.

set — this second set statement uses the EDXEncode custom function to convert attributes["parsed_body"] back into a byte array encoded as UTF-8, leaving the body field with the newly-encoded data.

delete_key — eliminates the temporary attributes["parsed_body"] field from attributes after it has been used and encoded back into the body field.

- name: Reserialize body
 type: ottl_transform
 statements: |-
   set(attributes["parsed_body"], ParseJSON(Decode(body, "utf-8")))
   edx_delete_empty_values(attributes["parsed_body"], [], [""], ["deleteNull"])
   set(body, EDXEncode(attributes["parsed_body"], "utf-8", true))
   delete_key(attributes, "parsed_body")


After exiting the Reserialize body node, the Microsoft logs flow to the Processed pack output. From there, logs can be shipped to any SIEM or storage destination. You can also send a full copy of all raw log data to efficient object storage like Amazon S3 for compliance or future review.

Microsoft Activity Pack in Action

To begin using the Microsoft Activity Pack, you’ll first need an existing pipeline in Edge Delta.

For those who haven’t set up a pipeline yet, go to Pipelines, click New Fleet, and choose between Edge Fleet or Cloud Fleet, depending on your hosting environment. Then, follow the setup instructions to complete the configuration.

Once your pipeline is running, open the Pipelines menu, select Knowledge, then navigate to Packs. Scroll down to locate the Microsoft Activity Pack and hit Add Pack. This will relocate the pack to your library, which you can access any time from the Pipelines menu under Packs.

To install the pack into an existing pipeline, return to your Pipelines dashboard, choose the pipeline where you want to apply the Microsoft Activity Pack, enter Edit Mode, and configure it using the Visual Pipelines builder. While in the pipeline’s Edit Mode, click Add Processor, go to Packs, and select the Microsoft Activity Pack.

You’ll then have the option to rename the pack from “Microsoft Activity Pack” to anything you’d prefer instead. Once ready, click Save Changes to apply the pack to your pipeline. Then, head back to the Visual Pipelines builder and drag and drop the initial connection from your Microsoft logs source into the pack.

To finalize the process, you’ll need to add some destinations. Edge Delta Security Data Pipelines allow you to ship your processed Microsoft logs to any SIEM — such as Splunk, Microsoft Sentinel, CrowdStrike Falcon, or others — or storage platform.

Getting Going with the Microsoft Activity Pack

Ready to see Edge Delta’s Microsoft Activity Pack in action? Check out our packs list and add the Microsoft Activity Pack to any running pipeline. New to Edge Delta? Visit our Playground to get a feel for how we can provide a stronger foundation for your security data.

Stay in Touch

Sign up for our newsletter to be the first to know about new articles.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.