Summary
Upgrade CKAN from version 2.9 to 2.11 to take advantage of latest features, security updates, and bug fixes.
Background
CKAN 2.11 includes significant improvements over 2.9, but also introduces breaking changes that require careful migration planning.
⚠️ Critical Breaking Changes
1. SECRET_KEY Configuration (Required)
- Breaking: CKAN 2.11 requires the
SECRET_KEY configuration option to start
- Action: Add
SECRET_KEY = your_secret_key_here to ckan.ini
- Generate with:
python -c "import secrets; print(secrets.token_urlsafe(20))"
2. Session Handling Refactored
- Breaking: Replaced Beaker sessions with Flask-Session
- Action: Update all session configuration keys in ckan.ini
- Users will be logged out when server sessions are cleared
3. Activity Plugin Extraction
- Breaking: Activities moved to separate plugin
- Action: Add
activity to plugins list: ckan.plugins = ... activity ...
4. Authentication Changes (Flask-Login)
- Breaking: Replaced repoze.who with Flask-Login
- Different session persistence behavior
5. Configuration Validation (Strict Mode)
- Breaking: Invalid config options will prevent CKAN from starting
- Action: Review and fix all configuration options
🔒 Security Changes
6. Upload Type Restrictions
- Breaking: File types for user/group images now restricted by default
- Action: Configure
ckan.upload.user.mimetypes if additional formats needed
7. Public Registration Disabled
- Breaking: User registration disabled by default
- Action: Set
ckan.auth.create_user_via_web = true to re-enable
8. API Token Authentication Required
- Breaking: Extensions require valid API tokens
- Action: Configure API tokens for DataPusher/Xloader
🗄️ Database & Infrastructure
9. Database Upgrade Required
- Run
ckan db upgrade and ckan datastore upgrade
- Minimum PostgreSQL version: 12
- Python 3.9-3.12 required
10. Tracking Extension
- Breaking: Tracking moved to core extension
- Action: Add
tracking to plugins list
🎨 UI Changes
11. Bootstrap 5 Migration
- Breaking: Default templates now use Bootstrap 5
- Fallback: Configure Bootstrap 3 templates if needed
🗑️ Removed Features
12. Recline View Plugins Removed
recline_view, recline_grid_view, recline_map_view no longer available
- Action: Use
datatables_view or community alternatives
13. Legacy API Keys Removed
- Only API tokens supported for authentication
Migration Tasks
Pre-Migration
Configuration Updates
Custom Extension Compatibility
Database Migration
Docker Configuration Updates
Post-Migration Testing
Documentation Updates
Considerations
- This is a major version upgrade with significant architectural changes
- Thorough testing is essential before deploying to production
- Session management behavior has changed - users may experience different logout behavior
- Some extensions may need updates to work with CKAN 2.11
- Allow adequate time for testing and validation
Acceptance Criteria
Resources
Summary
Upgrade CKAN from version 2.9 to 2.11 to take advantage of latest features, security updates, and bug fixes.
Background
CKAN 2.11 includes significant improvements over 2.9, but also introduces breaking changes that require careful migration planning.
1. SECRET_KEY Configuration (Required)
SECRET_KEYconfiguration option to startSECRET_KEY = your_secret_key_hereto ckan.inipython -c "import secrets; print(secrets.token_urlsafe(20))"2. Session Handling Refactored
3. Activity Plugin Extraction
activityto plugins list:ckan.plugins = ... activity ...4. Authentication Changes (Flask-Login)
5. Configuration Validation (Strict Mode)
🔒 Security Changes
6. Upload Type Restrictions
ckan.upload.user.mimetypesif additional formats needed7. Public Registration Disabled
ckan.auth.create_user_via_web = trueto re-enable8. API Token Authentication Required
🗄️ Database & Infrastructure
9. Database Upgrade Required
ckan db upgradeandckan datastore upgrade10. Tracking Extension
trackingto plugins list🎨 UI Changes
11. Bootstrap 5 Migration
🗑️ Removed Features
12. Recline View Plugins Removed
recline_view,recline_grid_view,recline_map_viewno longer availabledatatables_viewor community alternatives13. Legacy API Keys Removed
Migration Tasks
Pre-Migration
Configuration Updates
Custom Extension Compatibility
Test ckanext-tacc_theme compatibility
Test ckanext-dso_scheming compatibility
Test ckanext-tapisfilestore compatibility
Test ckanext-spatial compatibility
Test ckanext-ouath2 compatibility
Update any extensions using removed features
Database Migration
ckan db upgradeckan datastore upgradeDocker Configuration Updates
Post-Migration Testing
Documentation Updates
Considerations
Acceptance Criteria
Resources