Repository navigation
Add ASIM EmailEvent parsers for Proofpoint TAP permitted clicks - #15483
Merged
nithil (nithillsethupathi) merged 9 commits intoOct 30, 2026
Merged
nithil (nithillsethupathi) merged 9 commits into
nithil (nithillsethupathi) merged 9 commits into
Conversation
nithil (nithillsethupathi)
pushed a commit
that referenced
this pull request
Oct 28, 2026
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 880d7e2b-26c6-46a3-8f1d-adfc0579f59e
nithil (nithillsethupathi)
marked this pull request as ready for review
October 28, 2026 22:51
Add parameterless and filtering parsers, unifying integration, changelogs, synthetic samples, and generated ARM templates. Record remaining validation limitations in the accompanying draft PR. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 880d7e2b-26c6-46a3-8f1d-adfc0579f59e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 880d7e2b-26c6-46a3-8f1d-adfc0579f59e
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 880d7e2b-26c6-46a3-8f1d-adfc0579f59e
Match all 17 connector columns and their types, retain Type metadata required by parser projections, and remove three message-only fields absent from the click-table schema. Both source parsers and both unifiers pass the existing scoped KQL tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 880d7e2b-26c6-46a3-8f1d-adfc0579f59e
Set Type to ProofPointTAPClicksPermittedV2_CL in all ten sample rows. Preserve all seventeen original source headers and values; leave ingestion-helper behavior unchanged as requested. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 880d7e2b-26c6-46a3-8f1d-adfc0579f59e
Extend the EmailEvent enum without removing existing values. Classify permitted clicks as EmailInteraction in both TAP parsers, advance them to 0.1.1, update paired changelogs, and regenerate ARM templates. Shared master-backed data validation remains pending the schema extension; no tester functions or ingestion-helper logic changed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 880d7e2b-26c6-46a3-8f1d-adfc0579f59e
Mark TimeGenerated, clickTime, and threatTime with the existing [UTC] sample convention so the unchanged CI converter infers datetime columns. Preserve all ten records, values, Type metadata, and logical source column names. No ingestion-helper or schema changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 880d7e2b-26c6-46a3-8f1d-adfc0579f59e
Use the existing POD MailLog optional-ID pattern in both TAP parsers: preserve a real source id when present and leave EventOriginalUid unset if the column is absent. Advance both parsers to 0.1.2, update paired changelogs, and regenerate ARM templates. Present, empty, and missing-ID runtime cases and all four existing local KQL cases pass. No ingestion-helper or schema changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 880d7e2b-26c6-46a3-8f1d-adfc0579f59e
nithil (nithillsethupathi)
force-pushed
the
asim/emailevent-proofpoint-tap-clicks-permitted
branch
from
October 29, 2026 21:58
64b25a9 to
af2b108
Compare
Condense both parser descriptions and describe TAP integration as interaction activity in the unifier changelogs. Run .script\kqlFuncYaml2Arm.ps1 to refresh generated documentation; ARM JSON and parser queries remain unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 880d7e2b-26c6-46a3-8f1d-adfc0579f59e
Derrick Lee (yummyblabla)
approved these changes
Oct 29, 2026
Derrick Lee (yummyblabla)
deleted the
asim/emailevent-proofpoint-tap-clicks-permitted
branch
October 30, 2026 00:09
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Required items, please complete
Change(s):
ProofPointTAPClicksPermittedV2_CL.EmailInteractionas an additional EmailEvent event type for interactions with email content, such as a permitted URL click. Preserve the existingEmailDeliveryandEmailInspectionenum values.EmailInteraction, retainclicksPermittedas the original event type, and do not infer email delivery or HTTP success.iddefensively usingtostring(column_ifexists("id", "")), matching the merged POD MailLog approach in ASIM: Add Proofpoint POD MailLog EmailEvent parsers #15410. Preserve real IDs when available and leaveEventOriginalUidempty when the column is absent; do not fabricate replacement identifiers.Typemetadata column; remove the stalethreatsInfoMap,messageParts, andsubjectdeclarations absent from this click-table schema.Reason for Change(s):
Version Updated:
0.1.2(initial version0.1.0;EmailInteractionadded in0.1.1).1.0.2to1.0.3.EmailEvent1.0.0.Testing Completed:
0.1.1only by replacing the unconditional ID rename with the defensive optional-ID mapping. Filtering and all other mappings are unchanged.idcolumn. Row counts andEmailInteractionclassification were preserved. No tables, DCRs, tester functions, or Azure resources were changed.EventTypeallow-list; both old values and the original CSV line endings are preserved.EventType=EmailInteractionandEventOriginalType=clicksPermitted. These were read-only queries; no tester functions or Azure resources were changed.| getschema | invoke ASimSchemaTester('EmailEvent')- no Error-level findings for either updated parser; the same 17 unavailable recommended-field warnings remain.| limit 1000 | invoke ASimDataTester('EmailEvent')- not passed for this revision: both existing helpers rejectEmailInteractionin all 727 inspected rows because they loadASimTester.csvfrommaster, where the proposed enum extension is not yet merged. The local branch's canonical allow-list includes the new value. The helpers and their schema URLs were not modified to bypass this pre-merge dependency.git -c core.whitespace=blank-at-eol,blank-at-eof,space-before-tab,cr-at-eol diff --check origin/master...HEAD- passed while preserving the canonical CSV's existing CRLF format.PRNUM=15483for PR-file discovery;<local-evidence-directory>replaces only the session-local TRX output path.Type. The fixture now matches the connector's column names and scalar types; no query mappings, validator logic, or skip lists were changed.6f95f74b3ff306af84b0b2164a047324707891f9. The hosted checks for the later optional-ID revision are rerunning and are not recorded as passed here.python -, with the stdin invocation below of the existingVerifyASimParserTemplate.extract_and_check_properties- passed, 15 checks per source parser against their unifying parsers. No validator implementation or exclusion was changed.git diff --cached --check- passed for the originally prepared package.pwsh -NoLogo -NoProfile -File .\.script\kqlFuncYaml2Arm.ps1- passed with the declared generator dependency available; generated only the EmailEvent package and retained every previously tracked ARM file. ARM templates were regenerated again when incorporating Microsoft Defender for Office 365 support.EmailInspectionandEventResult=NA.packforwarding behaved as expected.| getschema | invoke ASimSchemaTester('EmailEvent')- no Error-level findings for either parser; 17 unavailable recommended-field warnings remain.| limit 1000 | invoke ASimDataTester('EmailEvent')- no Error-level findings on the original sparse lab sample, which omitted recipient/IP/URL values and produced an empty-Dstwarning. With populated synthetic URLs, the unchanged tester reports anEmailUrlsarray-element-type error described below.asimFilterTest.ps1runner was attempted and exited withSchema: EmailEvent - Not supported by the validations script. Individual filter assertions were not executed; further filter testing was explicitly waived for this submission. This is not recorded as a passing filter suite.Checked that the validations are passing and have addressed any issues that are present:
master; it will continue rejecting the proposedEmailInteractionvalue until that schema extension is adopted. This PR includes the canonical enum change, not changes to validator code or its source URL.idin its reserved-column list, which can omit that legitimate Proofpoint field from an inferred custom-table schema. The parser now tolerates this optional-column absence, but hosted ingestion still does not exercise real ID preservation; that behavior was verified separately with the read-only functional fixtures above.ASimTester.csvdefinesEmailUrlsas an array without anArrayValuesType. The currentASimDataTesterconsequently rejects the nine valid string arrays in the populated sample because it expects an empty element type.EmailEventschema entry, as noted above.ProofPointTAPClicksPermittedV2_CLtable-schema JSON fixture and the explicitly proposed EmailEventEventTypeenum extension inASimTester.csv. KQL validator logic, skip lists, other canonical schema rows, filter-validator implementation, ingestion-helper logic, and workflow configuration are unchanged. The remaining issues above still require follow-up before claiming full CI readiness.