The answer is that the KQL extract function’s case sensitivity caused the query to return no results. The `extract` function in KQL is case-sensitive by default, so when the pattern in the query expects the VM name in the ResourceId to be lowercase, but the actual ResourceId contains the VM name in uppercase, the pattern fails to match—even though the VMs exist and were recently modified. On the Microsoft Azure Solutions Architect Expert AZ-305 exam, this scenario tests your understanding of KQL string parsing nuances within Microsoft Sentinel, often appearing as a trap where candidates overlook case sensitivity and assume the query logic is otherwise correct. A common memory tip is to remember that KQL treats text like a fingerprint: every character case matters, so always verify the exact casing in your source data before relying on `extract`.
AZ-305 Practice Question: Design identity, governance, and monitoring solutions
This AZ-305 practice question tests your understanding of design identity, governance, and monitoring solutions. The scenario asks you to isolate a root cause — eliminate options that address a different problem before choosing. After answering, compare your reasoning against the explanation and wrong-answer breakdown below. Once you have made your selection, read the full explanation to reinforce the concept and understand why each distractor is designed to mislead on exam day.
Exhibit
Refer to the exhibit.
```kusto
// KQL query used in a Microsoft Sentinel analytics rule
let VMList = dynamic(["vm-web-prod-01", "vm-web-prod-02"]);
AzureActivity
| where OperationNameValue == "MICROSOFT.COMPUTE/VIRTUALMACHINES/WRITE"
| where ResourceId contains "virtualMachines/"
| extend VMName = extract("virtualMachines/([^/]+)", 1, ResourceId)
| where VMName in (VMList)
| where ActivityStatusValue == "Success"
| project TimeGenerated, VMName, Caller, ResourceGroup
```
You are investigating a security incident where an unauthorized user may have modified a production VM. You run the KQL query shown in the exhibit in Microsoft Sentinel, but it returns no results. The VMs are present and have been modified recently. What is the most likely reason for no results?
Clue words in this question
Noticing these words before you look at the options changes how you read each choice.
Clue: "most likely"
Why it matters: Probability qualifier — the question wants the most probable cause or outcome, not a guaranteed one. Eliminate low-probability options.
Refer to the exhibit.
```kusto
// KQL query used in a Microsoft Sentinel analytics rule
let VMList = dynamic(["vm-web-prod-01", "vm-web-prod-02"]);
AzureActivity
| where OperationNameValue == "MICROSOFT.COMPUTE/VIRTUALMACHINES/WRITE"
| where ResourceId contains "virtualMachines/"
| extend VMName = extract("virtualMachines/([^/]+)", 1, ResourceId)
| where VMName in (VMList)
| where ActivityStatusValue == "Success"
| project TimeGenerated, VMName, Caller, ResourceGroup
```
A
The query does not filter by a time range, so it may be returning old data.
Why wrong: The query returns all times by default; if modifications happened recently, they should appear.
B
The Caller field is not included in the output, so the query cannot identify unauthorized users.
Why wrong: The query projects Caller, so it is included; the issue is with the VM name extraction.
C
The OperationNameValue is incorrect; the correct value is 'MICROSOFT.COMPUTE/VIRTUALMACHINES/WRITE' in uppercase.
Why wrong: The operation name is correct; it is case-sensitive and matches the Azure Activity log.
D
The ResourceId contains the VM name in lowercase, but the extract pattern is case-sensitive.
The ResourceId uses lowercase 'virtualmachines', while the extract pattern uses 'virtualMachines' with capital M, causing no match.
Answer the question above first, then reveal the full breakdown to understand why each option is right or wrong.
Correct answer & explanation
✓
The ResourceId contains the VM name in lowercase, but the extract pattern is case-sensitive.
Option D is correct because the KQL query uses the `extract` function with a pattern that expects the VM name in the ResourceId to be in lowercase, but the actual ResourceId contains the VM name in uppercase. The `extract` function in KQL is case-sensitive by default, so the pattern fails to match, returning no results. Even though the VMs have been modified, the query cannot parse the ResourceId correctly, leading to zero output.
Key principle: Answer the scenario, not the keyword: identify the specific constraint before choosing the most familiar-sounding option.
Answer analysis
Option-by-option breakdown
For each option: why learners choose it and why it is or isn't the right answer here.
✗
The query does not filter by a time range, so it may be returning old data.
Why it's wrong here
The query returns all times by default; if modifications happened recently, they should appear.
✗
The Caller field is not included in the output, so the query cannot identify unauthorized users.
Why it's wrong here
The query projects Caller, so it is included; the issue is with the VM name extraction.
✗
The OperationNameValue is incorrect; the correct value is 'MICROSOFT.COMPUTE/VIRTUALMACHINES/WRITE' in uppercase.
Why it's wrong here
The operation name is correct; it is case-sensitive and matches the Azure Activity log.
✓
The ResourceId contains the VM name in lowercase, but the extract pattern is case-sensitive.
Why this is correct
The ResourceId uses lowercase 'virtualmachines', while the extract pattern uses 'virtualMachines' with capital M, causing no match.
Clue confirmation
The clue word "most likely" in the question point toward this answer.
Related concept
Read the scenario before looking for a memorised answer.
Common exam traps
Common exam trap: answer the scenario, not the keyword
The trap here is that candidates assume the query logic is correct and focus on missing filters or incorrect field names, but the real issue is the case sensitivity of the `extract` function in KQL when parsing the ResourceId, which is a subtle but critical detail in Azure Sentinel queries.
Detailed technical explanation
How to think about this question
In Azure Resource Manager, the ResourceId for a VM follows the format `/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Compute/virtualMachines/{vmName}`, where the VM name is case-preserving but case-insensitive for operations. The KQL `extract` function uses regex patterns that are case-sensitive by default, so a pattern like `@'virtualMachines/([^/]+)'` will fail if the actual ResourceId contains 'virtualMachines' with different casing (e.g., 'VirtualMachines'). This is a common pitfall when parsing Azure activity logs, as the casing in ResourceId can vary depending on how the resource was created or modified.
KKey Concepts to Remember
Read the scenario before looking for a memorised answer.
Find the constraint that changes the correct option.
Eliminate answers that are true in general but not in this case.
TExam Day Tips
→Watch for words such as best, first, most likely and least administrative effort.
→Review why wrong options are wrong, not only why the correct option is correct.
Key takeaway
Answer the scenario, not the keyword: identify the specific constraint before choosing the most familiar-sounding option.
Real-world example
How this comes up in practice
An e-commerce site experiences heavy traffic on Black Friday and near-zero traffic during off-peak weeks. Rather than provisioning permanent large VMs, the team uses auto-scaling groups that add capacity automatically under load and reduce it overnight. Questions like this test whether you understand elasticity, availability zones, and cloud compute scaling patterns.
Related glossary terms
Concepts from this question explained
These glossary pages explain the core terms tested in this AZ-305 question in full detail.
Design identity, governance, and monitoring solutions — This question tests Design identity, governance, and monitoring solutions — Read the scenario before looking for a memorised answer..
What is the correct answer to this question?
The correct answer is: The ResourceId contains the VM name in lowercase, but the extract pattern is case-sensitive. — Option D is correct because the KQL query uses the `extract` function with a pattern that expects the VM name in the ResourceId to be in lowercase, but the actual ResourceId contains the VM name in uppercase. The `extract` function in KQL is case-sensitive by default, so the pattern fails to match, returning no results. Even though the VMs have been modified, the query cannot parse the ResourceId correctly, leading to zero output.
What should I do if I get this AZ-305 question wrong?
Identify which exam domain this question belongs to, review the core concept, then practise similar questions from the same domain.
Are there clue words in this question I should notice?
Yes — watch for: "most likely". Probability qualifier — the question wants the most probable cause or outcome, not a guaranteed one. Eliminate low-probability options.
What is the key concept behind this question?
Read the scenario before looking for a memorised answer.
About these practice questions
Courseiva creates original exam-style practice questions with explanations and wrong-answer analysis. It does not publish real exam questions, exam dumps, or protected exam content. Learn why practice questions differ from exam dumps →
Share a tip, memory trick, or ask about the reasoning behind this question. Do not post real exam questions, leaked content, braindumps, or copyrighted exam material. Comments are moderated and may be removed without notice.
This AZ-305 practice question is part of Courseiva's free Microsoft certification practice question bank. Courseiva provides original exam-style practice questions with explanations, topic-based practice, mock exams, readiness tracking, and study analytics to help learners prepare for the AZ-305 exam.
Question Discussion
Share a tip, memory trick, or ask about the reasoning behind this question. Do not post real exam questions, leaked content, braindumps, or copyrighted exam material. Comments are moderated and may be removed without notice.
Sign in to join the discussion.