Features
The EventCatalog Azure Schema Registry plugin provides a comprehensive set of features to help you document and visualize your Azure Event Hubs architecture.
Schema Import and Synchronization
Import Schemas from Azure Schema Registry
The plugin connects to your Azure Schema Registry and imports schemas based on your configuration. Unlike some other registries, Azure Schema Registry requires explicit schema definitions since it doesn't provide a "list all schemas" API.
{
schemaRegistryUrl: 'https://your-namespace.servicebus.windows.net',
services: [
{
id: 'orders-service',
version: '1.0.0',
sends: [
{ id: 'order-created', schemaGroup: 'com.example.orders' },
],
},
],
}
Automatic Multi-Version Support
The plugin automatically fetches and documents the latest 5 versions of each schema from Azure Schema Registry. This happens automatically without any configuration needed.
How it works:
- Plugin fetches up to 5 most recent versions of each configured schema
- Latest version is written to the root directory (e.g.,
/events/order-created/) - Older versions are stored in versioned folders (e.g.,
/events/order-created/versioned/1/) - Custom documentation (markdown, badges, owners) is persisted between versions
Example:
If your order-created schema has versions 1, 2, 3, and 4:
- Version 4 (latest) →
/events/order-created/(root) - Version 3 →
/events/order-created/versioned/3/ - Version 2 →
/events/order-created/versioned/2/ - Version 1 →
/events/order-created/versioned/1/
Benefits:
- Complete version history without extra configuration
- See how schemas evolved over time
- Compare different versions side-by-side
- Understand breaking vs non-breaking changes
- Teams can reference specific versions they're using
This ensures your documentation stays in sync with your schemas while preserving the semantic meaning you've added across all versions.
Multiple Schema Formats
The plugin supports both schema formats available in Azure Schema Registry:
- Avro - Binary serialization format with compact data representation
- JSON Schema - JSON-based schema definition for flexible data structures
The plugin automatically detects the format and displays it correctly in your catalog.
Message Type Classification
Events, Commands, and Queries
Document your messages using different types to better represent your architecture:
sends: [
{
id: 'order-created',
schemaGroup: 'com.example.orders',
messageType: 'event', // Something that happened
},
{
id: 'create-order',
schemaGroup: 'com.example.orders',
messageType: 'command', // Request to do something
},
],
receives: [
{
id: 'get-order',
schemaGroup: 'com.example.orders',
messageType: 'query', // Request for information
},
]
Benefits:
- Clear architectural patterns in your documentation
- Better understanding of message flow and intent
- Improved discoverability for teams
Custom Schema Names
User-Friendly Display Names
Provide readable names for technical schema identifiers:
{
id: 'app.orders.created.v2.avro',
schemaGroup: 'com.company.orders',
name: 'Order Created Event', // User-friendly name
}
Benefits:
- Technical schema IDs preserved in the catalog
- User-friendly names for documentation
- Better search and discovery for non-technical users
Multi-Registry Support
Fetch from Multiple Azure Schema Registries
Override the registry URL per schema to fetch from multiple registries:
{
schemaRegistryUrl: 'https://primary-namespace.servicebus.windows.net',
services: [
{
id: 'orders-service',
version: '1.0.0',
sends: [
{
id: 'order-created',
schemaGroup: 'com.example.orders',
// Uses default registry
},
{
id: 'order-shipped',
schemaGroup: 'com.example.shipping',
schemaRegistryUrl: 'https://shipping-namespace.servicebus.windows.net',
// Uses different registry
},
],
},
],
}
Use Cases:
- Multi-region deployments
- Separate registries for different business units
- Development/staging/production registries
- Legacy and new registry migrations
Domain-Driven Documentation
Organize Services into Domains
Group related services into domains for better organization:
{
domain: {
id: 'orders-domain',
name: 'Orders Domain',
version: '1.0.0',
},
services: [
{ id: 'orders-service', version: '1.0.0', /* ... */ },
{ id: 'inventory-service', version: '1.0.0', /* ... */ },
],
}
Benefits:
- Logical grouping of related services
- Better navigation for large architectures
- Align with domain-driven design principles
- Visualize domain boundaries
Flexible Authentication
REST API with Bearer Token
The plugin uses Azure's REST API with Bearer token authentication for maximum compatibility and flexibility.
Getting an Access Token
For Local Development:
export AZURE_SCHEMA_REGISTRY_TOKEN=$(az account get-access-token --resource https://eventhubs.azure.net --query accessToken -o tsv)
For CI/CD:
# Using service principal
export AZURE_SCHEMA_REGISTRY_TOKEN=$(az login --service-principal \
--username $AZURE_CLIENT_ID \
--password $AZURE_CLIENT_SECRET \
--tenant $AZURE_TENANT_ID && \
az account get-access-token --resource https://eventhubs.azure.net --query accessToken -o tsv)
Benefits:
- Works across all environments
- No Azure SDK packages required
- Simple Bearer token authentication
- Easy to integrate with CI/CD pipelines
- Compatible with any Azure authentication method
Azure access tokens typically expire after 1 hour. For long-running processes, you may need to refresh the token periodically.
Metadata Persistence
Preserve Custom Documentation
When schemas are versioned, the plugin preserves:
- Custom markdown - Your detailed documentation
- Badges - Visual indicators and labels
- Owners - Team and individual assignments
- Attachments - Related files and links
- Repository links - Source code references
Example:
# Order Created Event
This event is emitted when a new order is successfully placed in the system.
## Business Rules
- Only emitted after payment is confirmed
- Includes customer and line item details
- Triggers inventory reservation
## Related Documentation
- [Order Processing Guide](link)
- [Payment Integration](link)
This markdown persists when the schema is updated to version 2, 3, etc.
Service Documentation
Document Producers and Consumers
Clearly define which services send and receive which messages:
{
id: 'orders-service',
version: '1.0.0',
sends: [
{ id: 'order-created', schemaGroup: 'com.example.orders' },
],
receives: [
{ id: 'payment-received', schemaGroup: 'com.example.payments' },
],
}
In EventCatalog, you can see:
- All messages a service produces
- All messages a service consumes
- Service dependencies
- Message flow visualization
Search and Discovery
Find Schemas Easily
EventCatalog provides powerful search capabilities:
- Search by schema name
- Filter by domain
- Filter by service
- Filter by message type (event/command/query)
- Full-text search across documentation
Versioning and History
Track Schema Evolution
The plugin automatically imports the latest 5 versions of each schema, giving you complete visibility into schema evolution:
Features:
- Automatic version import - No configuration needed, fetches latest 5 versions
- Version timeline - See all versions of each schema
- Side-by-side comparison - Compare versions to understand changes
- Latest in root - Current version easily accessible, older versions organized in versioned folders
- Breaking change detection - Understand impact of schema changes
- Version-specific references - Teams can reference the exact version they're using
Example Structure:
/events/order-created/ ← Latest version (v4)
/events/order-created/versioned/1/ ← Older version
/events/order-created/versioned/2/ ← Older version
/events/order-created/versioned/3/ ← Older version
This comprehensive versioning support helps teams understand how schemas have evolved and make informed decisions about upgrades.
Data Store Integration
Document Data Dependencies
Link services to their data stores:
{
id: 'orders-service',
version: '1.0.0',
writesTo: [
{ id: 'orders-database', version: '1.0.0' },
],
readsFrom: [
{ id: 'customer-cache', version: '1.0.0' },
],
}
Configuration Validation
Catch Errors Early
The plugin validates your configuration and provides helpful error messages:
- Missing required fields
- Invalid schema group references
- Authentication issues
- Registry connectivity problems
Need a Feature?
Have a feature request? Let us know: