Skip to content

Update Cisco ETD connector to use the new Message Event Logs - #14005

Closed
sepinto2020 wants to merge 3 commits into
Azure:masterfrom
sepinto2020:update/cisco-etd-update
Closed

Update Cisco ETD connector to use the new Message Event Logs #14005
sepinto2020 wants to merge 3 commits into
Azure:masterfrom
sepinto2020:update/cisco-etd-update

Conversation

@sepinto2020

Copy link
Copy Markdown

Change(s):

  • Updated the entire connector to use the Message Event Logs REST API

Reason for Change(s):

  • Use the new Cisco ETD Rest API
  • This API provides much more information include the entire message site rather than the convicted messages

Version updated:

  • Yes

Testing Completed:

  • Yes. This was tested on a Sentinel lab with the support from the Microsoft Team(Robert Moriarty)

Checked that the validations are passing and have addressed any issues that are present:

  • Yes

@sepinto2020
sepinto2020 requested review from a team as code owners April 7, 2026 10:51
@v-maheshbh v-maheshbh (v-maheshbh) added the Solution Solution specialty review needed label Apr 7, 2026
@sepinto2020

sepinto2020 commented Apr 7, 2026 via email

Copy link
Copy Markdown
Author

@sepinto2020 sepinto2020 closed this Apr 9, 2026
@sepinto2020 sepinto2020 reopened this Apr 9, 2026
@v-shukore
v-shukore requested a review from Copilot April 10, 2026 07:12

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Updates the Cisco ETD Microsoft Sentinel solution to align with the new Message Event Logs REST API–based ingestion and refreshes solution artifacts accordingly.

Changes:

  • Replaced the legacy workbook with a new Messages-focused workbook built around the message dynamic payload.
  • Updated solution metadata/data and release notes to reflect the new content and versioning.
  • Transitioned solution packaging artifacts away from the legacy Function App connector toward a CCP/RestApiPoller-based approach (packaging files not reviewed here per repo policy).

Reviewed changes

Copilot reviewed 18 out of 24 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
Solutions/Cisco ETD/Workbooks/CiscoETDMessages.json Adds a new workbook targeting message event logs and richer message fields.
Solutions/Cisco ETD/Workbooks/CiscoETD.json Removes the legacy workbook that relied on old table fields.
Solutions/Cisco ETD/SolutionMetadata.json Updates marketplace metadata (offerId, publish date, categories, support).
Solutions/Cisco ETD/ReleaseNotes.md Adds a new release entry for the message event logs update.
Solutions/Cisco ETD/Package/testParameters.json Updates ARM test parameters (not reviewed; ignored path).
Solutions/Cisco ETD/Package/mainTemplate.json Updates packaging template for new connector approach (not reviewed; ignored path).
Solutions/Cisco ETD/Package/createUiDefinition.json Updates installer UI text/links (not reviewed; ignored path).
Solutions/Cisco ETD/Data/Solution_CiscoETD.json Updates solution manifest (workbook reference, connector reference, version/meta fields).
Solutions/Cisco ETD/Data Connectors/requirements.txt Removes Function App requirements (not reviewed; ignored path).
Solutions/Cisco ETD/Data Connectors/azuredeploy_CiscoETD_API_FunctionApp.json Removes legacy Function App deployment template (not reviewed; ignored path).
Solutions/Cisco ETD/Data Connectors/CiscoETD_ccp/CiscoETD_connectorDefinition.json Adds connector definition (not reviewed; ignored path).
Solutions/Cisco ETD/Data Connectors/CiscoETD_ccp/CiscoETD_Table.json Adds table schema definition (not reviewed; ignored path).
Solutions/Cisco ETD/Data Connectors/CiscoETD_ccp/CiscoETD_PollerConfig.json Adds poller configuration (not reviewed; ignored path).
Solutions/Cisco ETD/Data Connectors/CiscoETD_ccp/CiscoETD_DCR.json Adds DCR definition (not reviewed; ignored path).
Solutions/Cisco ETD/Data Connectors/CiscoETD_API_FunctionApp.json Removes legacy connector definition (not reviewed; ignored path).
Solutions/Cisco ETD/Data Connectors/CiscoETDAzureSentinelConnector/* Removes legacy Azure Function implementation (not reviewed; ignored path).

Comment on lines +40 to +45
"type": 1,
"content": {
"json": "## Cisco Email Threat Defense\nThis workbook uses the **CiscoETDMessages** parser to visualize email threat data from the Cisco ETD connector. Data is sourced from the `message` dynamic column — all fields are parsed at query time. Use the time range filter above to scope all tiles.\n\n> **Note:** Verdict analysis excludes `update` events (re-remediation records that carry no sender/verdict data)."
},
"name": "header-text"
},

Copilot AI Apr 10, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workbook assumes a CiscoETDMessages parser/function exists (and that it projects columns like Verdict, Sender, Recipient, etc.). In the updated solution manifest, Parsers is empty, so unless this parser is created elsewhere during deployment, all workbook queries will fail with “failed to resolve table or column expression”. Either (mandatory) include the parser KQL function in Solutions/Cisco ETD/Parsers/ and reference it in Data/Solution_CiscoETD.json, or (alternative) rewrite the workbook queries to use CiscoETD_CL directly and parse message inline within each query.

Copilot uses AI. Check for mistakes.
Comment on lines +56 to +58
"version": "KqlItem/1.0",
"query": "CiscoETDMessages\n| extend EventType = tostring(message['eventType'])\n| extend Folder = tostring(message['action']['folder'])\n| summarize\n ['Total Events'] = count(),\n ['New Messages'] = countif(EventType =~ 'create'),\n ['Remediation Updates']= countif(EventType =~ 'update'),\n Phishing = countif(Verdict =~ 'phishing'),\n Malicious = countif(Verdict =~ 'malicious'),\n BEC = countif(Verdict =~ 'bec'),\n Graymail = countif(Verdict =~ 'graymail'),\n Spam = countif(Verdict =~ 'spam'),\n Scam = countif(Verdict =~ 'scam'),\n Quarantined = countif(Folder =~ 'quarantine'),\n ['Sent to Junk'] = countif(Folder =~ 'junk')",
"size": 4,

Copilot AI Apr 10, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workbook assumes a CiscoETDMessages parser/function exists (and that it projects columns like Verdict, Sender, Recipient, etc.). In the updated solution manifest, Parsers is empty, so unless this parser is created elsewhere during deployment, all workbook queries will fail with “failed to resolve table or column expression”. Either (mandatory) include the parser KQL function in Solutions/Cisco ETD/Parsers/ and reference it in Data/Solution_CiscoETD.json, or (alternative) rewrite the workbook queries to use CiscoETD_CL directly and parse message inline within each query.

Copilot uses AI. Check for mistakes.
{
"publisherId": "cisco",
"offerId": "azure-sentinel-solution-cisco-etd",
"firstPublishDate": "2026-02-04",

Copilot AI Apr 10, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

firstPublishDate represents the initial publish date of the solution, not the date of this update. This PR changes it from 2024 to 2026, which will misrepresent the solution’s history and can cause downstream catalog/upgrade issues. Revert firstPublishDate to the original first publish date (or the actual first publication date if 2024-03-04 was incorrect).

Suggested change
"firstPublishDate": "2026-02-04",
"firstPublishDate": "2024-03-04",

Copilot uses AI. Check for mistakes.
Comment on lines +11 to +12
],
"verticals": []

Copilot AI Apr 10, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

categories.verticals is optional; when not applicable it should be omitted rather than set to an empty array. Dropping the empty verticals improves metadata cleanliness and avoids failing stricter validators that treat empty optional arrays as invalid.

Suggested change
],
"verticals": []
]

Copilot uses AI. Check for mistakes.
Comment thread Solutions/Cisco ETD/ReleaseNotes.md Outdated
Comment on lines +1 to +4
| **Version** | **Date Modified (DD-MM-YYYY)** | **Change History** |
|-------------|--------------------------------|---------------------------------------------|
| 3.0.0 | 11-02-2024 | Initial Solution Release | No newline at end of file
| 3.0.0 | 11-02-2024 | Initial Solution Release |
| 3.0.1 | 06-04-2026 | Update with Messsage Events Logs | No newline at end of file

Copilot AI Apr 10, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The release notes table does not follow the required conventions: (1) versions must be in descending order (so 3.0.1 should appear above 3.0.0), and (2) fix the spelling in the change description (“Messsage”). Please also ensure the table formatting is consistent (single | delimiters, no extra spacing) to avoid markdown/table validation failures.

Suggested change
| **Version** | **Date Modified (DD-MM-YYYY)** | **Change History** |
|-------------|--------------------------------|---------------------------------------------|
| 3.0.0 | 11-02-2024 | Initial Solution Release |
\ No newline at end of file
| 3.0.0 | 11-02-2024 | Initial Solution Release |
| 3.0.1 | 06-04-2026 | Update with Messsage Events Logs |
| **Version** | **Date Modified (DD-MM-YYYY)** | **Change History** |
|---|---|---|
| 3.0.1 | 06-04-2026 | Update with Message Events Logs |
| 3.0.0 | 11-02-2024 | Initial Solution Release |

Copilot uses AI. Check for mistakes.
Comment on lines +2 to +8
"Name": "CiscoETD",
"Author": "Cisco",
"Logo": "<img src=\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Logos/cisco-logo-transparent.svg\" width=\"75px\" height=\"75px\">",
"Description": "The Cisco Email Threat Defense (ETD) solution for Microsoft Sentinel enables you to ingest message events and threat data from Cisco ETD into Microsoft Sentinel using the Log Export API with nested polling.",
"Workbooks": [
"Workbooks/CiscoETDMessages.json"
],

Copilot AI Apr 10, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Solution_CiscoETD.json violates the solution-manifest requirements and is likely to fail solution validation/packaging: (mandatory) Author must include contact info in the form {Org} - {email}; (mandatory) Is1PConnector (boolean) is missing; (mandatory) Name should align with folder naming conventions (the folder is Cisco ETD, but Name is CiscoETD), and BasePath points to a different directory (...\\CiscoETDv5) rather than the actual solution folder; (mandatory) Version (1.0.2) does not align with the release notes (3.0.1). Align Name/BasePath/Version, add Is1PConnector, and use the required Author format so the solution can pass repo validators.

Copilot uses AI. Check for mistakes.
Comment on lines +13 to +22
"Data Connectors": [
"Data Connectors/CiscoETD_ccp/CiscoETD_connectorDefinition.json"
],
"Watchlists": [],
"dependentDomainSolutionIds": [],
"BasePath": "C:\\GitHub\\Azure-Sentinel\\Solutions\\CiscoETDv5",
"Version": "1.0.2",
"Metadata": "SolutionMetadata.json",
"TemplateSpec": true,
"StaticDataConnectorIds": []

Copilot AI Apr 10, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Solution_CiscoETD.json violates the solution-manifest requirements and is likely to fail solution validation/packaging: (mandatory) Author must include contact info in the form {Org} - {email}; (mandatory) Is1PConnector (boolean) is missing; (mandatory) Name should align with folder naming conventions (the folder is Cisco ETD, but Name is CiscoETD), and BasePath points to a different directory (...\\CiscoETDv5) rather than the actual solution folder; (mandatory) Version (1.0.2) does not align with the release notes (3.0.1). Align Name/BasePath/Version, add Is1PConnector, and use the required Author format so the solution can pass repo validators.

Copilot uses AI. Check for mistakes.
@v-shukore

Copy link
Copy Markdown
Contributor

Hi sepinto2020, please check copilot suggestions and update it and commit the changes. Thanks!

@sepinto2020

sepinto2020 commented Apr 21, 2026 via email

Copy link
Copy Markdown
Author

@sepinto2020
sepinto2020 requested a review from a team as a code owner April 21, 2026 15:43
@sepinto2020

sepinto2020 commented Apr 21, 2026 via email

Copy link
Copy Markdown
Author

@sepinto2020 sepinto2020 left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed error. Asking for a review

@v-shukore

Copy link
Copy Markdown
Contributor

Hi sepinto2020, don't modify existing zip 3.0.0 uncommit that change and keep only latest zip which created with version 3.0.1.
please resolve kql validation failure causing due to below highlighted error and also create stepId variable in maintemplate.
image

@sepinto2020
sepinto2020 force-pushed the update/cisco-etd-update branch from c61baf4 to 94a05b8 Compare May 5, 2026 09:23
@sepinto2020

Copy link
Copy Markdown
Author

New commit to fix the previous PR errors.

@v-shukore

Copy link
Copy Markdown
Contributor

Hi sepinto2020, please resolve branch conflicts. Thanks!

@v-shukore

Copy link
Copy Markdown
Contributor

Hi sepinto2020, do not to delete 3.0.0 zip package. Instead, uncommit that change and remove it from this PR, keeping only the newly created zip package. If the old package is deleted, it could affect other customers since that package is currently live.

@robertmoriarty12

Robert Moriarty (robertmoriarty12) commented May 14, 2026

Copy link
Copy Markdown
Contributor

if the ISV removes their function app solution from data connectors completely from content hub, would that also impact existing customers?

current customers with function apps deployed are calling this.zip file I believe?
image

@sepinto2020

Copy link
Copy Markdown
Author

Closing the PR as per MS suggestion. Will open a new one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Solution Solution specialty review needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants