https://github.com/club-innovate/sysaidado
DRAFT: This project synchronizes SysAid support tickets (Service Requests) into Azure DevOps (ADO) as Bugs
https://github.com/club-innovate/sysaidado
api-integration audit-trail automation azure-devops bug-tracking compliance delta-sync devops-tools hipaa issue-tracking logging phi-redaction pii-redaction python security service-desk spacy sysaid ticket-sync
Last synced: 4 months ago
JSON representation
DRAFT: This project synchronizes SysAid support tickets (Service Requests) into Azure DevOps (ADO) as Bugs
- Host: GitHub
- URL: https://github.com/club-innovate/sysaidado
- Owner: Club-Innovate
- License: other
- Created: 2025-05-08T20:35:27.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-05-20T02:34:21.000Z (about 1 year ago)
- Last Synced: 2025-06-14T23:04:33.884Z (about 1 year ago)
- Topics: api-integration, audit-trail, automation, azure-devops, bug-tracking, compliance, delta-sync, devops-tools, hipaa, issue-tracking, logging, phi-redaction, pii-redaction, python, security, service-desk, spacy, sysaid, ticket-sync
- Language: Python
- Homepage:
- Size: 23.4 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# ๐งฉ SysAid to Azure DevOps Bug Sync
This project synchronizes SysAid support tickets (Service Requests) into Azure DevOps (ADO) as **Bugs**, complete with:
- PII/PHI redaction
- Delta syncing
- Smart update detection
- Optional parent linking (to User Stories or Tasks)
- Full audit trail and logging
---
## ๐ Project Structure
```
sysaid_to_ado/
โโโ ado_api.py # ADO bug creation, update, and linking
โโโ main.py # Orchestrator: fetch, redact, sync
โโโ sensitive_data_detector.py # PII/PHI redaction logic
โโโ sysaid_api.py # Simulated + real SysAid API integration
โโโ utils.py # Logging & user identity helpers
โโโ .env or config.py # Secrets (not tracked in Git)
โโโ last_sync.json # Delta sync timestamp
โโโ logs/
โ โโโ sync.log # Audit trail
```
---
## ๐ Security & HIPAA Compliance
- Redacts fields using regex and SpaCy NER before syncing to ADO
- Logs each detection/redaction to 'logs/sync.log'
- Only '"description"' field is scanned and cleaned
- Supports detection of:
- SSN, DOB, phone numbers, email
- Rx numbers, medical billing info
- Names (via NLP)
- IP addresses and login data
---
## ๐ Sync Logic
### On each run:
1. Fetch **new or updated** SysAid tickets since last run
2. Redact sensitive '"description"' content
3. If the ticket already exists in ADO:
- Compare SysAid's 'update_time' to ADOโs 'System.ChangedDate'
- Skip if not newer
- Update otherwise (with re-redaction)
4. If it's new:
- Create as ADO **Bug**
- Optionally link to parent User Story or Task via 'parent_id'
---
## ๐ง Setup Instructions
### 1. Install Requirements
```bash
pip install -r requirements.txt
python -m spacy download en_core_web_sm
```
### 2. Create '.env'
```dotenv
# Azure DevOps
ADO_ORG=your-ado-org
ADO_PROJECT=your-ado-project
ADO_PAT=your-ado-personal-access-token
ADO_API_VERSION=7.0
# SysAid
SYSAID_API_TOKEN=your-sysaid-token
SYSAID_BASE_URL=https://yourcompany.sysaidit.com
```
> ๐ Keep this file out of version control.
### 3. Run the Sync
```bash
python main.py
```
Youโll get a summary like:
```
Sync complete.
Created: 3, Updated: 2, Failed: 0
```
---
## ๐งช Sample Ticket Input
Example of a SysAid ticket passed to ADO:
```python
{
"id": 101,
"title": "Email Service - login failure",
"description": "User John Smith (SSN: 123-45-6789)...",
"priority": "High",
"status": "Open",
"parent_id": 872, # Optional ADO User Story ID
"update_time": 1714458000000 # Epoch ms
}
```
---
## ๐ Parent Linking (Optional)
If 'ticket["parent_id"]' is provided:
- Bug will be linked to that work item
- Duplicate links are automatically avoided
- Uses 'System.LinkTypes.Hierarchy-Reverse'
---
## ๐ Logs and Auditing
- 'logs/sync.log' contains full run trace
- Every detection, failure, and update is logged
- Run identity is captured via 'get_current_user_identity()'
---
## ๐ก Best Practices Followed
- โ
Secrets kept in '.env' or config.py
- โ
Redaction applied before API submission
- โ
Updates only occur when needed
- โ
JSON Patch structure for ADO
- โ
Graceful exception handling
- โ
Configurable log file via 'utils.setup_logger()'
---
## ๐ค Contributions
You're welcome to extend this to:
- Bi-directional syncing
- Attachment uploads
- Field mapping UI
- Secure vault integration for secrets
---
## ๐
Created April 2025
Maintained by: **Hans Esquivel**
License: MIT (or internal)
---
## Contact
Please open an [issue](https://github.com/club-innovate/sysaidado/issues) or start a [discussion](https://github.com/club-innovate/sysaidado/discussions) if you want to get in touch.
---