Don’t flip the switch on your Sentinel migration until every detection rule you’re retiring has a working KQL twin that fires on the exact conditions its Splunk parent did. Skip that step and you inherit an unmonitored detection gap with your name on the postmortem: the finding that reads “coverage regressed during platform migration” lands on the engineer who approved the cutover, not the analyst who clicked enable on an untested rule template.
Every team that treats this as a straightforward platform swap discovers the truth mid-migration: the underlying data model, the query language, and the automation layer all change on you at once, and none of them warn you before they do.
Why This Is an Architecture Migration, Not a Software Swap
Calling this a SIEM swap hides the part of the project that actually costs you time: the data model and the query language underneath both platforms work on different principles, and every artifact you own inherits that difference.
How Splunk and Sentinel Store and Query Data Differently
Splunk indexes data and searches it with the Search Processing Language (SPL), where a query typically opens by naming an index and pipes results through a chain of commands. Microsoft Sentinel separates compute from storage instead: your logs land in an Azure Log Analytics workspace as structured tables, and you query them with Kusto Query Language (KQL), where every query has to name a specific table like SecurityEvent or SigninLogs before it filters or aggregates anything. Splunk’s design optimizes for flexible search across one proprietary index built for semi-structured data. Sentinel’s design optimizes for querying large, well-defined tables cheaply, and that difference is why moving between the two changes how your team reasons about a detection, not just which product window it types the query into.
Data normalization works differently too. Splunk teams commonly rely on the Common Information Model to make heterogeneous log sources look consistent to a search. Sentinel’s equivalent is the Advanced Security Information Model, and the two schemas don’t map field for field. That gap becomes relevant again later, once you’re deciding how much custom parsing your migrated data sources actually need.
What Actually Has to Be Rebuilt, Not Just Renamed
“We’re switching SIEMs” undersells the project, because every Splunk artifact you’ve built has a Sentinel equivalent with a different shape, not a different label. A saved search becomes an analytics rule. A dashboard becomes an Azure Monitor Workbook. A lookup table becomes a watchlist. A SOAR playbook becomes a Logic App tied to an automation rule. None of those are drag-and-drop conversions, and Sentinel’s own data connector catalog, more than 350 built-in connectors covering first-party and third-party sources, only tells you what you can ingest, not what already matches your Splunk data model.
Teams that treat this as a lift-and-shift end up with two failure modes at once. They either transfer years of noisy Splunk rules straight into Sentinel, carrying detection engineering debt into a platform that charges by the gigabyte, or they cut corners on translation and quietly lose coverage for edge-case detections nobody remembers writing. Both failures are avoidable if you audit before you translate, which is the next step. The diagram below contrasts how each platform stores and queries the same data.

Audit Your Splunk Environment Before You Plan Anything
Your Splunk environment already contains the answer to “how big is this project,” you just have to extract it. Before anyone opens the Sentinel migration tooling, inventory what you’re actually carrying forward, because the volume and age of that inventory determines your timeline more than any Microsoft feature does. Microsoft’s own migration process overview places this discovery work as the first tracked step for a reason: every later phase, translation, SOAR migration, historical data export, reads its priority order from what this audit surfaces.
Inventory Every Detection Rule, Dashboard, and Playbook
Pull a complete export of saved searches, correlation rules, dashboards, lookup tables, and SOAR playbooks. For each item, capture what it does, how often it fires, and who owns it. This isn’t busywork: it’s the input to every decision in the rest of this playbook, from which detections get translated first to which SOAR use cases are worth automating in the new platform.
-
Export title, search string, cron schedule, and alert threshold for every enabled saved search and correlation rule.
-
List each dashboard panel’s data source and the SPL query behind it, since these become Azure Monitor Workbook queries later.
-
For lookup tables, identify which ones are static reference data (these become watchlists cleanly) and which are populated dynamically via
outputlookup(these need an automation rule to replicate). -
Separate SOAR playbooks with binary, well-documented logic from ones that depend on tribal knowledge or undocumented edge cases.
-
Capture data sources and daily ingestion volume, since this becomes your Sentinel cost model input before you commit to a workspace design.
Flag the Detection Debt You Don’t Need to Carry Forward
Review rules that haven’t fired in the past six to twelve months and ask whether they still matter. A rule that’s gone silent is either watching for something that stopped happening or watching for something your current data sources no longer capture, and neither case justifies re-engineering it in KQL on day one. Migrating a rule you can’t explain the purpose of just moves the same noise into a platform where every gigabyte of query volume has a price tag attached.
The output of this audit is a prioritized list, not a full inventory dump into the migration tool. Business-critical detections and high-frequency dashboards go first. Everything else waits until you’ve proven the pattern works on rules that matter.
Choose a Migration Strategy: Phased, Parallel, or Big Bang
With the audit in hand, you have three honest options for how to cut over, and the choice depends on how much detection risk your SOC can absorb during the transition.
The Three Cutover Options
-
Phased migration moves detections in priority-ordered waves, typically by data source or threat category, enabling each Sentinel rule only after its Splunk equivalent has been retired. This spreads risk over time but means you’re operating two SIEMs for months, which doubles your licensing and analyst attention during the overlap.
-
Parallel (side-by-side) migration runs Splunk and Sentinel simultaneously against the same live data for a defined validation window, comparing alert output before retiring anything. This is the slowest option but the only one that gives you an apples-to-apples fidelity comparison instead of a testing assumption.
-
Big bang migration cuts over on a fixed date after offline validation against historical data. It’s fast and avoids the double-licensing period, but it bets the entire transition on your test data being representative of live traffic, which is a bet most enterprise SOCs lose on at least one edge-case rule.
Matching the Strategy to Your Risk Tolerance
For an enterprise environment with active detections protecting production systems, a phased rollout with parallel validation on the highest-priority rules is the strategy most migration guidance converges on, and it’s the one this playbook assumes from here forward. Microsoft’s own migration planning guidance backs the same posture: “Approach your migration as a gradual process. Be intentional and thoughtful about what you migrate first, what you deprioritize, and what doesn’t actually need to be migrated.” Reserve big bang cutover for genuinely low-stakes detections, dashboards nobody depends on for incident response, where a missed alert costs you a Slack message instead of an incident.
The size of your Splunk environment should weigh on this choice as much as risk tolerance does. A SOC migrating fifty detections can afford to run every rule through parallel validation before cutover. A SOC migrating five hundred detections across a dozen data sources needs the phased approach just to keep the validation workload from swallowing the project timeline, reserving true side-by-side comparison for the handful of rules that would hurt most if they silently failed. The chart that follows lines up all three cutover timelines against their risk and cost tradeoffs.

Translate Detection Logic from SPL to KQL Without Losing Fidelity
The strategy you picked in the last section still runs into the same technical wall: SPL and KQL don’t map command-for-command, and the gap is exactly where detection fidelity goes to die if you rush it.
Where the SIEM Migration Experience Does the Heavy Lifting
Microsoft built the SIEM migration experience into the Defender portal specifically for this translation problem. You export your Splunk saved searches to CSV, upload the export, and the tool analyzes each rule’s underlying intent rather than its literal syntax, then recommends a matching out-of-the-box Sentinel analytics rule or a Defender XDR native detection. It also identifies which data connectors you need to activate each recommendation and tracks status per rule as you work through the list.
The tool runs on Security Copilot, but Microsoft’s own documentation confirms the migration workflow itself doesn’t consume Security Compute Units or generate SCU-based charges, so you can run the translation pass without a Copilot billing surprise. You still need Security Copilot enabled in your tenant with at least a workspace operator role assigned, and at least Microsoft Sentinel Contributor permissions in the target workspace to deploy the rules it recommends.
This playbook was verified against the SIEM migration experience running in the Microsoft Defender portal as of August 2026, the same portal Microsoft is moving every Sentinel customer to before the Azure portal version retires on March 31, 2027. If you’re still running Sentinel inside the Azure portal, budget time for that portal move too, because several of the menus this playbook references live in a different spot there.
Where Automated Translation Breaks Down
Simple filtering and aggregation queries translate well: Microsoft’s own Splunk-to-Kusto cheat sheet documents the direct command mappings the SIEM migration tool applies automatically. Automated translation breaks down on Splunk’s statistical and transactional commands, transaction, eventstats, streamstats, which don’t have a direct KQL counterpart because KQL’s window functions and join semantics solve the same problem differently. Translating these isn’t a syntax exercise. It requires a security engineer to re-derive the detection logic in KQL, not transliterate it.
A basic filtering query shows the syntax gap clearly. In Splunk, counting failed logins by user and source IP looks like this:
index=windows EventCode=4625 | stats count by user, src_ip | where count > 5
The KQL equivalent names its table explicitly and uses summarize instead of stats:
SecurityEvent | where EventID == 4625 | summarize FailedAttempts = count() by Account, IpAddress | where FailedAttempts > 5
The failed-login KQL query above is a clean translation. Anything built on transaction to correlate multi-event sequences, or streamstats to compute a running baseline, needs a human to rebuild the logic against KQL’s join, union, or window function operators, following the official rule-migration guidance rather than guessing at a literal command mapping. Budget engineering time for this tier of rules separately from the bulk of your rule count, because it’s where most of your translation hours actually go.
Validate Detection Parity Before You Trust the New Rules
A KQL query that compiles and runs isn’t the same as a KQL query that catches what its Splunk predecessor caught. Parity validation is where you find that out before an attacker does.
What Automated Tooling Doesn’t Guarantee
Run every translated rule against historical data and confirm it triggers under the same conditions the Splunk rule did, not just similar ones. Then check two things the translation tool doesn’t guarantee: entity mapping and incident grouping logic. Entity mapping tells Sentinel which fields represent users, hosts, IP addresses, or URLs, and it drives the investigation graph analysts rely on during a real incident. Microsoft’s own documentation for the feature states it plainly: “Entity mapping is an integral part of the configuration of scheduled analytics rules. It enriches the rules’ output (alerts and incidents) with essential information that serves as the building blocks of any investigative processes and remedial actions that follow.” A rule that fires correctly but maps no entities produces an alert with no investigative context attached, which is functionally worse than the alert not existing, because it looks like coverage while giving analysts nothing to work with. The SIEM migration tool can match a Splunk rule to an out-of-the-box template with the right trigger logic and still leave entity mapping unconfigured, since the template’s default mapping assumes a data schema your source might not populate the same way.
The Four-Point Validation Checklist
-
Test each translated rule against a sample of historical events that previously triggered the Splunk equivalent.
-
Confirm entity mapping populates users, hosts, IPs, or URLs correctly for the rule’s data source.
-
Verify incident creation and grouping matches your intended alert-fatigue reduction, not Sentinel’s default grouping window.
-
Set severity thresholds against your organization’s risk matrix, not the default the rule template ships with.
Run this checklist rule by rule, not as a spot check on a sample. A translation that passes on your ten highest-volume detections and fails silently on an obscure lateral-movement rule still leaves you with a real gap, and it’s exactly the kind of gap nobody notices until an incident review asks why a known technique didn’t trigger an alert.
Warning: A rule that fires without entity mapping isn’t a smaller version of the old detection. It’s a different detection that happens to share a name, and your analysts will trust it until an incident proves them wrong.
Once a rule clears all four checks, it’s genuinely migrated, not just enabled. Everything else, dashboards, watchlists, automation, depends on this validation step actually happening rule by rule instead of getting waved through because the tool marked it “matched.”
Migrate SOAR Automations Without Breaking Incident Response
Validated detections that trigger a broken response workflow still cost you an incident. Splunk SOAR playbooks are tightly coupled to the SPL queries and containers that trigger them, and when the SIEM underneath changes, those automation links break whether you planned for it or not.
Map Splunk SOAR Concepts to Sentinel Automation Rules and Logic Apps
Microsoft’s mapping guidance translates Splunk SOAR concepts into their nearest Sentinel and Azure Logic Apps equivalents: a Splunk playbook becomes an Azure Logic App built in the visual designer, a Splunk trigger becomes a Logic Apps trigger, and Splunk’s decision blocks become conditional controls inside the Logic App’s control flow. Sentinel automation rules then decide when a playbook runs, either in isolation or chained into an ordered sequence, so the automation rule is doing the orchestration job that Splunk SOAR’s case-and-container model handled internally.
Rebuild High-Risk Playbooks With a Human Checkpoint
Not every Splunk SOAR playbook deserves a straight rebuild. Prioritize automation candidates the same way Microsoft’s own guidance recommends: clearly defined procedures with minimal variation, binary decision criteria, and a low false-positive rate. Disabling accounts or isolating hosts counts as high-impact, and both should keep a human approval step in the Logic App rather than running unattended. So does blocking network ranges, because an automated response chain inherits every translation error from the detection layer that triggers it.
Test every migrated playbook against real incident scenarios before you retire its Splunk counterpart, the same discipline you applied to detection rules in the last section. A playbook that silently fails to isolate a compromised host is worse than no automation at all, because the SOC assumes containment happened.
Handle Historical Data and Compliance Retention During Cutover
Detection and response are running in Sentinel now, but your historical Splunk data still has to live somewhere, and dumping years of logs into your primary analytics tier is the fastest way to turn a migration project into a budget conversation with your CFO.
Matching Data to the Right Cost Tier
Microsoft Sentinel’s table plans give you three cost tiers for the same underlying data: Analytics, Basic, and Auxiliary. Analytics tables support real-time alerting and interactive Azure Monitor dashboards but cost the most per gigabyte. Basic tables cost less to ingest and still support Microsoft Sentinel, Workbook and Grafana dashboards, and simplified Simple Log Alerts, trading away full Analytics-tier query scope for a lower price on data you query occasionally. Auxiliary tables cost the least to ingest but drop built-in alerting entirely; you get search jobs against the data, nothing that fires on its own. All three tiers can retain data for up to 12 years total, with the first 90 days of ingestion into a Sentinel-enabled workspace included at no extra charge before standard retention pricing applies.
Assign the tier per data source, not per workspace. High-fidelity detection data your analytics rules query in real time belongs on the Analytics plan. Verbose, low-signal logs, endpoint telemetry you rarely query outside an active investigation, are exactly what Basic and Auxiliary tables exist for, and treating every source the same way is the single most common way teams blow their post-migration budget.
Meeting Compliance Retention Requirements
For genuinely cold historical data, the Microsoft Sentinel data lake gives you a lower-cost retention state built for exactly this scenario: preserving years of Splunk history for regulatory or investigative purposes without paying analytics-tier prices to keep it queryable in real time. Match your regulatory retention requirements, PCI-DSS, HIPAA, SOX, whichever framework applies to your environment, to a specific table plan per data type rather than defaulting everything to the most expensive tier out of caution. A framework that mandates seven years of retention doesn’t require seven years of analytics-tier pricing; it requires the data to be retrievable on demand, which the data lake and long-term retention tiers both satisfy at a fraction of the cost.
Microsoft’s own historical data export guidance walks through the ingestion tooling for moving that Splunk archive over without re-running it through your live detection pipeline. Export the compliance-mandated history first, separately from the operational data your active detections depend on, so a slow archive migration never blocks your cutover timeline for live detection coverage. The infographic here stacks the three table tiers by cost and capability.

Assign Migration Ownership and Train Your SOC Team
Every phase up to this point assumed someone specific is accountable for it, and that assumption breaks down the moment two people think the other one owns rule validation. Before training starts, write down who owns what.
Build the Ownership Model First
Build a simple ownership model across the roles this migration actually touches: who audits and prioritizes Splunk rules, who translates and validates KQL, who tests SOAR playbooks, who signs off on cutover for each wave, and who owns the eventual Splunk decommission decision. Assign Microsoft Sentinel Contributor and workspace-operator permissions to match that ownership model rather than granting broad access to everyone touching the project, since onboarding Sentinel in the Defender portal is itself a permissioned action you don’t want six different people attempting independently. Write the ownership model down somewhere the whole team can see it, a shared doc, a wiki page, whatever your team already checks daily, because an ownership model that lives only in the project lead’s head stops working the first week that person is out sick during a validation deadline.
Split Training by Role
-
SOC analysts need KQL query fundamentals and how the new investigation graph surfaces entity relationships they used to get from Splunk’s correlation searches.
-
Detection engineers need the SIEM migration tool’s manual-edit workflow and enough ASIM familiarity to normalize custom data sources that don’t map to an out-of-the-box schema.
-
SOC managers need the migration tracking workbook so status reporting doesn’t depend on someone manually compiling a spreadsheet every week.
Track migration progress against that same workbook so status conversations run off shared data instead of competing verbal updates from whoever spoke to leadership last.
Build a Rollback Plan Before You Retire Splunk
Everything so far has been about moving forward. The last piece of the plan is deciding, in advance, what happens if a wave of migrated detections doesn’t hold up in production, because that decision is much worse to make under incident pressure than on a whiteboard.
Keep Splunk Alive Until Every Wave Proves Itself
Keep Splunk in a read-only state rather than decommissioning it the moment Sentinel’s equivalent rules go live. A read-only instance still lets you compare alert output, pull historical context during an active investigation, and revert a specific detection wave to its Splunk original if the Sentinel translation is producing false negatives you didn’t catch in validation. Retire it in the same priority order you migrated: low-risk waves first, business-critical detections last, after they’ve proven stable across at least one full audit and billing cycle.
Reality Check: The rollback plan you never use is cheap insurance. The one you need and don’t have is a second incident stacked on top of the first one.
Define the specific trigger conditions that pause a migration wave, a spike in false negatives, a detection that stops firing entirely, an entity mapping failure discovered mid-investigation, and write down who has authority to invoke rollback for that wave. Reviewing which tables and detections you can still manage from the Defender portal during this window keeps the rollback decision fast instead of turning into an afternoon of figuring out where a specific rule’s configuration actually lives.
A rollback decision made under incident pressure is a worse decision than the same choice made in advance, because the person making it is also trying to contain whatever the missed detection let through. Write the trigger conditions and the decision owner into the same document as your ownership model, so the answer to “who decides” doesn’t have to get relitigated in the middle of the incident that made rollback necessary.
Where the Migration Actually Ends
The migration is done when your SOC operates on Sentinel without mentally translating back to Splunk first, and that point arrives later than most project plans assume. Detection parity validated wave by wave, SOAR playbooks tested against real scenarios, historical data sitting in the right cost tier, and a rollback plan nobody had to invoke, that combination is what “migrated” actually means, not the day the last Splunk license lapsed.
Update your ongoing SOC processes once the technical migration settles, since alert triage, escalation paths, and on-call runbooks written for Splunk’s terminology and tooling need the same translation pass your detections got. Microsoft’s guidance on updating SOC processes and the ASIM normalization model are the two references worth keeping open during that final pass, because they define the shared data language your team will be working in long after this playbook is closed.