<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How to get SharePoint online list data to Splunk Enterprise? in Splunk Enterprise</title>
    <link>https://community.splunk.com/t5/Splunk-Enterprise/How-to-get-SharePoint-online-list-data-to-Splunk-Enterprise/m-p/688580#M19448</link>
    <description>&lt;P&gt;How can organizations efficiently handle and extract relevant data, such as &lt;A href="https://webcammictest.io/" target="_self"&gt;webcam&lt;/A&gt; activity, from Office 365 audit logs, particularly when leveraging tools like the "Splunk Add-on for Microsoft Office 365"?&lt;/P&gt;</description>
    <pubDate>Fri, 24 May 2024 07:32:30 GMT</pubDate>
    <dc:creator>vanre</dc:creator>
    <dc:date>2024-05-24T07:32:30Z</dc:date>
    <item>
      <title>How to get SharePoint online list data to Splunk Enterprise?</title>
      <link>https://community.splunk.com/t5/Splunk-Enterprise/How-to-get-SharePoint-online-list-data-to-Splunk-Enterprise/m-p/629083#M15274</link>
      <description>&lt;P&gt;&lt;SPAN&gt;can anyone share me how to get data from SharePoint Online List to Splunk Enterprise.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I have to get user custom actions details from SharePoint&amp;nbsp;application to Splunk Enterprise.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Please give me the code and samples too if it available&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 01 Feb 2023 15:28:37 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Enterprise/How-to-get-SharePoint-online-list-data-to-Splunk-Enterprise/m-p/629083#M15274</guid>
      <dc:creator>Fingent</dc:creator>
      <dc:date>2023-02-01T15:28:37Z</dc:date>
    </item>
    <item>
      <title>Re: How to get SharePoint online list data to Splunk Enterprise?</title>
      <link>https://community.splunk.com/t5/Splunk-Enterprise/How-to-get-SharePoint-online-list-data-to-Splunk-Enterprise/m-p/629199#M15283</link>
      <description>&lt;P&gt;Audit logs in 0365 contains the data that you seek. You can use the add-on "Splunk Add-on for Microsoft Office 365" to get the audit logs, which contains sharepoint online activity, but it will also get you logs that you may not want like&amp;nbsp;&lt;SPAN&gt;Azure Active Directory and Exchange Online. However, the additional data can be easily filtered using props and transforms conf , if the sharepoint data can be identified using a regex.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://splunkbase.splunk.com/app/4055" target="_blank"&gt;https://splunkbase.splunk.com/app/4055&lt;/A&gt;&lt;/P&gt;&lt;P&gt;++If this helps, please consider accepting as an answer++&lt;/P&gt;</description>
      <pubDate>Wed, 01 Feb 2023 18:08:49 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Enterprise/How-to-get-SharePoint-online-list-data-to-Splunk-Enterprise/m-p/629199#M15283</guid>
      <dc:creator>shivanshu1593</dc:creator>
      <dc:date>2023-02-01T18:08:49Z</dc:date>
    </item>
    <item>
      <title>Re: How to get SharePoint online list data to Splunk Enterprise?</title>
      <link>https://community.splunk.com/t5/Splunk-Enterprise/How-to-get-SharePoint-online-list-data-to-Splunk-Enterprise/m-p/688580#M19448</link>
      <description>&lt;P&gt;How can organizations efficiently handle and extract relevant data, such as &lt;A href="https://webcammictest.io/" target="_self"&gt;webcam&lt;/A&gt; activity, from Office 365 audit logs, particularly when leveraging tools like the "Splunk Add-on for Microsoft Office 365"?&lt;/P&gt;</description>
      <pubDate>Fri, 24 May 2024 07:32:30 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Enterprise/How-to-get-SharePoint-online-list-data-to-Splunk-Enterprise/m-p/688580#M19448</guid>
      <dc:creator>vanre</dc:creator>
      <dc:date>2024-05-24T07:32:30Z</dc:date>
    </item>
    <item>
      <title>Re: How to get SharePoint online list data to Splunk Enterprise?</title>
      <link>https://community.splunk.com/t5/Splunk-Enterprise/How-to-get-SharePoint-online-list-data-to-Splunk-Enterprise/m-p/754751#M23327</link>
      <description>&lt;P class=""&gt;&lt;SPAN&gt;Integrating SharePoint Online data with Splunk is a powerful way to gain operational insights. The most robust and scalable method is to use a scripted input that leverages the Microsoft Graph API. Below is a detailed, step-by-step guide.&lt;/SPAN&gt;&lt;/P&gt;&lt;H4&gt;&lt;STRONG&gt;&lt;SPAN&gt;Solution Architecture Overview&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H4&gt;&lt;P class=""&gt;&lt;SPAN&gt;The recommended approach involves three key components:&lt;/SPAN&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Microsoft Azure App Registration:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;To authenticate and authorize Splunk to access SharePoint data.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Python Script (Using the&amp;nbsp;&lt;/SPAN&gt;msal&lt;SPAN&gt;&amp;nbsp;library):&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;To handle authentication and fetch data from the Microsoft Graph API.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Splunk Scripted Input:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;To execute the Python script on a schedule and ingest the data.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;HR /&gt;&lt;H3&gt;&lt;STRONG&gt;&lt;SPAN&gt;Step 1: Set Up an Azure AD Application&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H3&gt;&lt;P class=""&gt;&lt;SPAN&gt;This creates an identity for your Splunk instance in Azure AD.&lt;/SPAN&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P class="" data-unlink="true"&gt;&lt;SPAN&gt;Go to the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Azure Portal&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;SPAN&gt;Navigate to&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Azure Active Directory&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;App registrations&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;New registration&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;SPAN&gt;Give your application a name (e.g., "Splunk-SharePoint-Ingestion").&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;SPAN&gt;Under&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Supported account types&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;, select "Accounts in this organizational directory only".&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;SPAN&gt;Leave the "Redirect URI" blank for now.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;SPAN&gt;Note down the&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Application (client) ID&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;and&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Directory (tenant) ID&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Configure API Permissions:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;SPAN&gt;In your new App Registration, go to&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;API permissions&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Add a permission&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;SPAN&gt;Select&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Microsoft Graph&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Application permissions&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;SPAN&gt;Add the&amp;nbsp;&lt;/SPAN&gt;Sites.Read.All&lt;SPAN&gt;&amp;nbsp;permission (this is sufficient for reading list data from all sites).&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Click "Grant admin consent"&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;to approve these permissions.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Create a Client Secret:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;SPAN&gt;Go to&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Certificates &amp;amp; secrets&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Client secrets&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;New client secret&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;SPAN&gt;Add a description and select an expiry duration.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Crucially, copy the Secret's Value immediately&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;—you won't be able to see it again.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P class=""&gt;&lt;SPAN&gt;You now have three vital pieces of information:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P class=""&gt;TENANT_ID&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;CLIENT_ID&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;CLIENT_SECRET&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;HR /&gt;&lt;H3&gt;&lt;STRONG&gt;&lt;SPAN&gt;Step 2: The Python Script to Fetch Data&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H3&gt;&lt;P class=""&gt;&lt;SPAN&gt;This script will handle the OAuth 2.0 client credentials flow and call the Microsoft Graph API. You must install the&amp;nbsp;&lt;/SPAN&gt;msal&lt;SPAN&gt;&amp;nbsp;library first:&amp;nbsp;&lt;/SPAN&gt;pip install msal&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Script:&amp;nbsp;&lt;/SPAN&gt;sharepoint_to_splunk.py&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;python&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;Copy&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;Download&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;#!/usr/bin/env python3&lt;/SPAN&gt;
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; msal
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; requests
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; json
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; sys
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; os
&lt;SPAN class=""&gt;from&lt;/SPAN&gt; datetime &lt;SPAN class=""&gt;import&lt;/SPAN&gt; datetime&lt;SPAN class=""&gt;,&lt;/SPAN&gt; timezone

&lt;SPAN class=""&gt;# 1. Configuration - Fill in these details&lt;/SPAN&gt;
config &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;"authority"&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"https://login.microsoftonline.com/&amp;lt;YOUR_TENANT_ID&amp;gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;"client_id"&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"&amp;lt;YOUR_CLIENT_ID&amp;gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;"client_secret"&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"&amp;lt;YOUR_CLIENT_SECRET&amp;gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;"scope"&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;[&lt;/SPAN&gt;&lt;SPAN class=""&gt;"https://graph.microsoft.com/.default"&lt;/SPAN&gt;&lt;SPAN class=""&gt;]&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;"site_id"&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"&amp;lt;YOUR_SITE_ID&amp;gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;# e.g., "contoso.sharepoint.com,&amp;lt;SITE_GUID&amp;gt;,&amp;lt;WEB_GUID&amp;gt;"&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;"list_name"&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"&amp;lt;YOUR_LIST_NAME&amp;gt;"&lt;/SPAN&gt; &lt;SPAN class=""&gt;# The internal name of your list&lt;/SPAN&gt;
&lt;SPAN class=""&gt;}&lt;/SPAN&gt;

&lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;get_access_token&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;config&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
    app &lt;SPAN class=""&gt;=&lt;/SPAN&gt; msal&lt;SPAN class=""&gt;.&lt;/SPAN&gt;ConfidentialClientApplication&lt;SPAN class=""&gt;(&lt;/SPAN&gt;
        config&lt;SPAN class=""&gt;[&lt;/SPAN&gt;&lt;SPAN class=""&gt;"client_id"&lt;/SPAN&gt;&lt;SPAN class=""&gt;]&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
        authority&lt;SPAN class=""&gt;=&lt;/SPAN&gt;config&lt;SPAN class=""&gt;[&lt;/SPAN&gt;&lt;SPAN class=""&gt;"authority"&lt;/SPAN&gt;&lt;SPAN class=""&gt;]&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
        client_credential&lt;SPAN class=""&gt;=&lt;/SPAN&gt;config&lt;SPAN class=""&gt;[&lt;/SPAN&gt;&lt;SPAN class=""&gt;"client_secret"&lt;/SPAN&gt;&lt;SPAN class=""&gt;]&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    result &lt;SPAN class=""&gt;=&lt;/SPAN&gt; app&lt;SPAN class=""&gt;.&lt;/SPAN&gt;acquire_token_for_client&lt;SPAN class=""&gt;(&lt;/SPAN&gt;scopes&lt;SPAN class=""&gt;=&lt;/SPAN&gt;config&lt;SPAN class=""&gt;[&lt;/SPAN&gt;&lt;SPAN class=""&gt;"scope"&lt;/SPAN&gt;&lt;SPAN class=""&gt;]&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;"access_token"&lt;/SPAN&gt; &lt;SPAN class=""&gt;in&lt;/SPAN&gt; result&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;return&lt;/SPAN&gt; result&lt;SPAN class=""&gt;[&lt;/SPAN&gt;&lt;SPAN class=""&gt;"access_token"&lt;/SPAN&gt;&lt;SPAN class=""&gt;]&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;else&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;print&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;f"Error acquiring token: &lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;result&lt;SPAN class=""&gt;.&lt;/SPAN&gt;get&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;'error_description'&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;file&lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;sys&lt;SPAN class=""&gt;.&lt;/SPAN&gt;stderr&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
        sys&lt;SPAN class=""&gt;.&lt;/SPAN&gt;exit&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;1&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;

&lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;get_list_items&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;access_token&lt;SPAN class=""&gt;,&lt;/SPAN&gt; site_id&lt;SPAN class=""&gt;,&lt;/SPAN&gt; list_name&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
    url &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;&lt;SPAN class=""&gt;f"https://graph.microsoft.com/v1.0/sites/&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;site_id&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;/lists/&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;list_name&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;/items?expand=fields"&lt;/SPAN&gt;&lt;/SPAN&gt;
    headers &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;&lt;SPAN class=""&gt;'Authorization'&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;'Bearer '&lt;/SPAN&gt; &lt;SPAN class=""&gt;+&lt;/SPAN&gt; access_token&lt;SPAN class=""&gt;}&lt;/SPAN&gt;
    response &lt;SPAN class=""&gt;=&lt;/SPAN&gt; requests&lt;SPAN class=""&gt;.&lt;/SPAN&gt;get&lt;SPAN class=""&gt;(&lt;/SPAN&gt;url&lt;SPAN class=""&gt;,&lt;/SPAN&gt; headers&lt;SPAN class=""&gt;=&lt;/SPAN&gt;headers&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;if&lt;/SPAN&gt; response&lt;SPAN class=""&gt;.&lt;/SPAN&gt;status_code &lt;SPAN class=""&gt;==&lt;/SPAN&gt; &lt;SPAN class=""&gt;200&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;return&lt;/SPAN&gt; response&lt;SPAN class=""&gt;.&lt;/SPAN&gt;json&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;else&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;print&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;f"Error fetching list items: &lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;response&lt;SPAN class=""&gt;.&lt;/SPAN&gt;status_code&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt; - &lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;{&lt;/SPAN&gt;response&lt;SPAN class=""&gt;.&lt;/SPAN&gt;text&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;file&lt;/SPAN&gt;&lt;SPAN class=""&gt;=&lt;/SPAN&gt;sys&lt;SPAN class=""&gt;.&lt;/SPAN&gt;stderr&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
        sys&lt;SPAN class=""&gt;.&lt;/SPAN&gt;exit&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;1&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;

&lt;SPAN class=""&gt;if&lt;/SPAN&gt; __name__ &lt;SPAN class=""&gt;==&lt;/SPAN&gt; &lt;SPAN class=""&gt;"__main__"&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;# 2. Authenticate and get data&lt;/SPAN&gt;
    access_token &lt;SPAN class=""&gt;=&lt;/SPAN&gt; get_access_token&lt;SPAN class=""&gt;(&lt;/SPAN&gt;config&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    data &lt;SPAN class=""&gt;=&lt;/SPAN&gt; get_list_items&lt;SPAN class=""&gt;(&lt;/SPAN&gt;access_token&lt;SPAN class=""&gt;,&lt;/SPAN&gt; config&lt;SPAN class=""&gt;[&lt;/SPAN&gt;&lt;SPAN class=""&gt;"site_id"&lt;/SPAN&gt;&lt;SPAN class=""&gt;]&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; config&lt;SPAN class=""&gt;[&lt;/SPAN&gt;&lt;SPAN class=""&gt;"list_name"&lt;/SPAN&gt;&lt;SPAN class=""&gt;]&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    
    &lt;SPAN class=""&gt;# 3. Output to STDOUT for Splunk to ingest&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;# Each list item is printed as a JSON string, one per line.&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;'value'&lt;/SPAN&gt; &lt;SPAN class=""&gt;in&lt;/SPAN&gt; data&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;for&lt;/SPAN&gt; item &lt;SPAN class=""&gt;in&lt;/SPAN&gt; data&lt;SPAN class=""&gt;[&lt;/SPAN&gt;&lt;SPAN class=""&gt;'value'&lt;/SPAN&gt;&lt;SPAN class=""&gt;]&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;# Add a timestamp for Splunk parsing&lt;/SPAN&gt;
            item&lt;SPAN class=""&gt;[&lt;/SPAN&gt;&lt;SPAN class=""&gt;'_splunk_ingest_time'&lt;/SPAN&gt;&lt;SPAN class=""&gt;]&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; datetime&lt;SPAN class=""&gt;.&lt;/SPAN&gt;now&lt;SPAN class=""&gt;(&lt;/SPAN&gt;timezone&lt;SPAN class=""&gt;.&lt;/SPAN&gt;utc&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;isoformat&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
            &lt;SPAN class=""&gt;print&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;json&lt;SPAN class=""&gt;.&lt;/SPAN&gt;dumps&lt;SPAN class=""&gt;(&lt;/SPAN&gt;item&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;How to find your&amp;nbsp;&lt;/SPAN&gt;site_id&lt;SPAN&gt;&amp;nbsp;and&amp;nbsp;&lt;/SPAN&gt;list_name&lt;SPAN&gt;:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Site ID:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;Use the Graph Explorer tool to query&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://graph.microsoft.com/v1.0/sites/root" target="_blank" rel="noopener"&gt;https://graph.microsoft.com/v1.0/sites/root&lt;/A&gt;&lt;SPAN&gt;. The&amp;nbsp;&lt;/SPAN&gt;id&lt;SPAN&gt;&amp;nbsp;field of your target site is the&amp;nbsp;&lt;/SPAN&gt;site_id&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;List Name:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;Go to your SharePoint list, click on Settings &amp;gt; List Settings. The URL in your browser's address bar will contain a parameter like&amp;nbsp;&lt;/SPAN&gt;List=%7B...%7D&lt;SPAN&gt;. The value after&amp;nbsp;&lt;/SPAN&gt;List=&lt;SPAN&gt;&amp;nbsp;is your list's GUID (the&amp;nbsp;&lt;/SPAN&gt;list_name&lt;SPAN&gt;).&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;HR /&gt;&lt;H3&gt;&lt;STRONG&gt;&lt;SPAN&gt;Step 3: Configure the Splunk Scripted Input&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H3&gt;&lt;OL&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Place the Script:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;Save the Python script on your Splunk Heavy Forwarder or Indexer (e.g., in&amp;nbsp;&lt;/SPAN&gt;$SPLUNK_HOME/bin/scripts&lt;SPAN&gt;).&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Create the Input:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;SPAN&gt;Navigate to&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Settings&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Data inputs&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Scripts&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;SPAN&gt;Click&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;New Local Script&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;SPAN&gt;Provide the full path to your Python script.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;SPAN&gt;Set the&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Source type&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;(e.g.,&amp;nbsp;&lt;/SPAN&gt;_json&lt;SPAN&gt;) and&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Index&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;SPAN&gt;Configure the&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Schedule&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;(e.g., run every 5 minutes).&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Set Permissions and Environment:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;SPAN&gt;Ensure the&amp;nbsp;&lt;/SPAN&gt;msal&lt;SPAN&gt;&amp;nbsp;library is installed in the Python environment that the Splunk user has access to.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;SPAN&gt;Ensure the script is executable.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;HR /&gt;&lt;H3&gt;&lt;STRONG&gt;&lt;SPAN&gt;A Note on Data Format and Search&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H3&gt;&lt;P class=""&gt;&lt;SPAN&gt;This script outputs each list item as a JSON object. Splunk will automatically extract the fields, making them instantly searchable. You can then create alerts, dashboards, and reports based on your SharePoint list data.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;For a quick data validation test&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;before full Splunk integration, you can run your script manually and check its JSON output. A tool like&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;JSON Format &amp;amp; Validate&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;can be helpful for this initial check. You can find a simple one at&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;A href="https://michigancountymap.com/" target="_blank" rel="noopener noreferrer"&gt;Michigan County Map&lt;/A&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;This method is scalable, secure, and leverages modern APIs, providing a solid foundation for your monitoring and analytics needs.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 25 Oct 2025 12:10:19 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-Enterprise/How-to-get-SharePoint-online-list-data-to-Splunk-Enterprise/m-p/754751#M23327</guid>
      <dc:creator>michaelmyk</dc:creator>
      <dc:date>2025-10-25T12:10:19Z</dc:date>
    </item>
  </channel>
</rss>

