This document covers the current features and capabilities of the Jira Importer Toolkit.
- Interactive credential setup: Use
--credentials runto set up authentication - Credential viewing: Use
--credentials showto view current credentials - Credential clearing: Use
--credentials clearto remove stored credentials - Credential test: Use
--credentials testto verify connection to Jira without running an import - Keyring integration: Secure credential storage using OS keychain
- Environment variable support: Use
JIRA_EMAILandJIRA_API_TOKENenvironment variables
- Basic Authentication: Email + API token (fully implemented and currently the only supported method)
- OAuth 2.0: Scaffolded for future implementation (not functional - skeleton code only)
- Credential resolution order: Keyring → Environment → Config → Prompt
-
Structured configuration tables: Use Excel tables for assignees, sprints, components
-
Automatic table detection: Reads configuration tables from sheets prefixed
config*orcfg*(case-insensitive) -
Fail-fast config validation: Missing required config tables stop initialization before dataset processing
-
Table types supported:
CfgAssignees: User mapping (name → ID)CfgSprints: Sprint configurationCfgFixVersions: Fix version mappingCfgComponents: Component mappingCfgIssueTypes: Issue type hierarchyCfgIgnoreList: Row skipping rulesCfgPriorities: Priority mappingCfgBasic: Everyday Name/Value settings (e.g.jira.project.key, site address)CfgAdvanced: Advanced Name/Value settings (e.g.app.import.auto_open_page)CfgSettings: Table-driven singleton/system settings (Name,Value, optionalType)CfgAutofieldValues: Auto-populated field valuesCfgCustomFields: Custom field configuration (name, id, type)CfgTeams: Team mapping (name → ID)
-
Required tables:
CfgAssignees,CfgIssueTypes,CfgIgnoreList,CfgPriorities,CfgAutofieldValues -
Optional tables:
CfgSprints,CfgFixVersions,CfgComponents,CfgTeams,CfgCustomFields,CfgBasic,CfgAdvanced,CfgSettings -
Settings precedence (later wins): legacy
Configkey/value sheet →CfgBasic→CfgAdvanced→CfgSettings -
Compatibility note:
CfgAutofieldValuesremains supported for dataset/runtime auto field behavior;metadata.versionmay still fall back from it when missing elsewhere
--credentials [ACTION](-creds): Manage Jira API credentials (run,show,clear,test)--auto-fix(-af): Enable automatic fixing of validation issues--fix-cloud-estimates(-fce): Apply Jira Cloud ×60 estimate quirk in the Cloud sink--quiet(-q): Minimal output (errors, warnings, and one outcome line)--output PATH(-o): Output CSV path (default:<input>_jira_ready.csv)--cloud(-cl): Create issues in Jira Cloud--cloud-debug-payloads(-cld): Write Cloud API payloads to JSON (incompatible with--dry-run)--auto-yes(-y) /--auto-no(-n): Auto-answer confirmation prompts--data-sheet NAME(-ds): Excel data sheet tab name (default: Dataset; must match the workbook exactly)--dry-run(-dr): Process data without writing output--show-config(-sc): Show configuration without requiring input file--debug(-d): Verbose troubleshooting output--version(-v): Version information
Hidden/experimental flags (omitted from --help) are not listed here.
-ce, --config-excel: Use Excel file as configuration source-ci, --config-input: Use config file next to input file-c, --config FILE: Use specific configuration file
- Text fields: Any string value (no validation)
- Number fields: Must be parseable as integer or float
- Date fields: Must match supported date formats (YYYY-MM-DD, MM/DD/YYYY, DD/MM/YYYY)
- Select fields: Any string value (validation against allowed values coming soon)
- Any fields: Any value type (no validation or transformation, passed through as-is)
- JSON configuration: Define custom fields in
jira.custom_fieldsarray - Excel table configuration: Use
CfgCustomFieldstable in aconfig*/cfg*sheet (case-insensitive) - Automatic validation: Values are validated based on field type
- Error reporting: Clear error messages with field name, expected format, and row number
- Type-based validation: Automatic validation based on configured field type
- Flexible configuration: Support for both JSON and Excel-based configuration
- Cloud import support: Custom fields are included in direct Jira Cloud imports
- CSV export support: Custom fields are included in CSV exports for manual import
The toolkit includes 7 built-in auto-fixers that automatically resolve common validation issues:
-
PriorityNormalizeFixer
- Problem codes:
priority.invalid,priority.missing - Functionality: Normalizes priority values to canonical labels (case-insensitive matching, numeric mapping)
- Configuration:
jira.prioritieslist,validation.priority.number_mapboolean
- Problem codes:
-
EstimateNormalizeFixer
- Problem codes:
estimate.invalid_format - Functionality: Parses human-friendly estimates (e.g., "2h", "1w 2d 3h 30m") and normalizes to seconds or minutes
- Configuration:
validation.estimate.accept_integers_as,output.estimate.unit,time.h_per_day,time.wd_per_week
- Problem codes:
-
ProjectKeyFixer
- Problem codes:
project_key.missing,project_key.mismatch - Functionality: Sets or corrects project key from configuration
- Configuration:
jira.project.key
- Problem codes:
-
AssignIssueIdFixer
- Problem codes:
issueid.missing,issueid.invalid - Functionality: Assigns unique sequential Issue IDs when missing or invalid
- Configuration:
issueid.prefix,issueid.width
- Problem codes:
-
AssigneeResolverFixer
- Problem codes:
assignee.display_name,assignee.empty_with_name - Functionality: Resolves assignee display names to Jira account IDs using CfgAssignees table
- Configuration:
CfgAssigneesExcel table with Name → Account ID mapping
- Problem codes:
-
ReporterResolverFixer
- Problem codes:
reporter.display_name,reporter.empty_with_name - Functionality: Resolves reporter display names to Jira account IDs using CfgAssignees table
- Configuration:
CfgAssigneesExcel table with Name → Account ID mapping
- Problem codes:
-
TeamResolverFixer
- Problem codes:
team.display_name,team.empty_with_name - Functionality: Resolves team display names to Jira account IDs using CfgTeams table
- Configuration:
CfgTeamsExcel table with Name → Team ID mapping
- Problem codes:
Enable auto-fix with the --auto-fix flag:
jira-importer.exe your-data.xlsx --auto-fix
jira-importer.exe your-data.xlsx --cloud --auto-fixFixers are registered by problem code in the FixRegistry. The system automatically applies fixes when:
- Auto-fix is enabled (
--auto-fixflag or configuration) - A problem code has a registered fixer
- The fixer determines the fix is safe to apply
- Level 1 (Initiative): Highest level, can parent all others
- Level 2 (Epic): Can parent levels 3 and 4
- Level 3 (Story/Task/Bug): Can parent level 4
- Level 4 (Sub-Task): Cannot parent, must have parent
{
"jira": {
"issuetypes": [
{"name": "Initiative", "level": 1},
{"name": "Epic", "level": 2},
{"name": "Story", "level": 3},
{"name": "Task", "level": 3},
{"name": "Bug", "level": 3},
{"name": "Sub-Task", "level": 4}
]
}
}- Batch size: 50 issues per batch (code constant; not a config key)
- Processing order: Epics → Stories/Tasks → Sub-tasks
- Parent resolution: Automatic parent-child relationship handling
- Error handling: Comprehensive error reporting per batch
- Metadata caching: Reduced API calls for project/field metadata
- Batch optimization: Efficient handling of large imports
- Rate limiting: Built-in handling of API rate limits
- ASCII Control Character Limits: Prevents paths with control characters (ASCII 0-31)
- Maximum Path Length: Enforces 4096 character limit for relative paths
- Path Sanitization: Automatic sanitization of file paths to prevent security issues
- Automatic Redaction: Sensitive terms are automatically redacted from logs
- Redacted Terms: password, api_token, token, secret, client_secret, access_token
- Log Safety: Prevents accidental exposure of credentials in log files
- Phased Error Handling: Custom exceptions for better error management
- Safe Excel Writing: Safer Excel metadata writing with proper error handling
- Improved Error Messages: Better error logging with specific guidance
config/config_factory.py: Unified configuration loadingconfig/config_models.py: Typed configuration modelsconfig/excel_config.py: Excel-based configurationconfig/models/issuetypes.py: Issue type hierarchy models
excel/excel_io.py: Enhanced Excel workbook managementexcel/excel_table_reader.py: Structured table configuration reader
import_pipeline/cloud/auth.py: Authentication providersimport_pipeline/cloud/client.py: HTTP client wrapperimport_pipeline/cloud/credential_manager.py: Credential managementimport_pipeline/cloud/secrets.py: Secrets resolutionimport_pipeline/cloud/mappers.py: Data mapping to Jira formatimport_pipeline/cloud/metadata.py: Jira metadata cachingimport_pipeline/cloud/bulk.py: Batch processing utilities
# Test credential setup
python -m jira_importer --credentials run
# Test credential viewing
python -m jira_importer --credentials show
# Test credential clearing
python -m jira_importer --credentials clear
# Verify credentials / Jira connectivity
python -m jira_importer --credentials test# Test Excel-based configuration
python -m jira_importer your-data.xlsx -ce
# Test with custom data sheet
python -m jira_importer your-data.xlsx --data-sheet "MyData" -ce# Test cloud import
python -m jira_importer your-data.xlsx --cloud
# Test with auto-fix
python -m jira_importer your-data.xlsx --cloud --auto-fix
# Test with cloud estimates fix
python -m jira_importer your-data.xlsx --cloud --fix-cloud-estimates# Test dry-run mode (new)
python -m jira_importer your-data.xlsx --dry-run
# Test configuration display (new)
python -m jira_importer --show-config
# Test with enhanced error handling
python -m jira_importer your-data.xlsx --debug- DEV.md: Quick start and overview
- ARCHITECTURE.md: Technical architecture details
- CONTRIBUTING.md: Development workflow and contribution guidelines
- CONFIG.md: Configuration options
- CLOUD.md: Cloud integration technical details
- FEATURES.md: This file - comprehensive feature guide
- Python 3.12+ required
- Update virtual environment if needed
- New issue type format: Use hierarchical configuration
- Excel table configuration: Move to structured tables
- Credential management: Use new credential system
- New flags: Familiarize with available command line options
- Configuration precedence: Understand config loading order
- Poetry: Project uses Poetry for dependency management
- Enhanced cloud libraries: New authentication and HTTP client libraries
- Modular configuration: Configuration split into multiple modules
- Cloud integration: New cloud-specific modules
- Excel processing: Enhanced Excel handling capabilities
- OAuth 2.0 completion: Full OAuth 2.0 implementation
- Advanced Excel rules: More sophisticated Excel-based validation
- Import templates: Ready-made templates for common project types
- Multi-file processing: Process multiple Excel files simultaneously
- Plugin system: Extensible authentication and validation plugins
- Webhook support: Real-time import status updates
- Progress tracking: Enhanced progress reporting for large imports
Note: This document reflects the current feature set. For release-specific details, see GitHub Releases.
:GeneratedFile