{"id":11212,"date":"2022-09-04T13:40:26","date_gmt":"2022-09-04T11:40:26","guid":{"rendered":"https:\/\/www.saasweb.agency\/blog\/the-karlsruhe-pass-a-practical-example-of-successful-software-modernization\/"},"modified":"2026-10-27T08:16:46","modified_gmt":"2026-10-27T07:16:46","slug":"the-karlsruhe-pass-a-practical-example-of-successful-software-modernization","status":"publish","type":"post","link":"https:\/\/www.saasweb.agency\/en\/blog\/the-karlsruhe-pass-a-practical-example-of-successful-software-modernization\/","title":{"rendered":"The Karlsruhe Pass \u2013 A Practical Example of Successful Software Modernization"},"content":{"rendered":"\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"heading-wrap\">\n<h2 class=\"wp-block-heading\">Executive Summary<\/h2>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">In 2020, together with jfbw (Jugendfreizeit- und Bildungswerk Karlsruhe), we designed and offered a web-based application for managing the Karlsruhe Pass and the Karlsruhe Children&#8217;s Pass. It was intended as a successor solution for an existing Access database that could no longer be effectively developed. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The focus was on clear management of family and personal data, support for central workflows in issuing and renewing passes, creation of PDF documents, issuance of vouchers, differentiated statistical evaluations, and role and rights management.<\/p>\n<\/div>\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"heading-wrap\">\n<h2 class=\"wp-block-heading\">1. Initial Situation &amp; Goals<\/h2>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">1.1 Program Context<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The <strong>Karlsruhe Pass<\/strong> enables people with low incomes, as well as children and families, to participate in<strong> <\/strong>offers in areas such as leisure, culture, education, and mobility (e.g., KVV discounts, zoo, pools, courses) with reductions or, in some cases, complete cost reimbursement. The pass is generally valid for twelve months and can be renewed annually; the <strong>Children&#8217;s Pass<\/strong> addresses children and young people with specific benefits and rules.<br\/>Current information (e.g., on the Deutschlandticket with a discount for pass holders) is available at <a href=\"https:\/\/www.karlsruher-pass.de\" target=\"_blank\" rel=\"noopener\">karlsruher-pass.de<\/a>. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.2 Problem Statement<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Legacy Microsoft Access system, no longer maintainable due to OS updates.<\/li>\n\n\n\n<li>Need for role-based, internal web access for jfbw employees.<\/li>\n\n\n\n<li>Secure, audit-proof processes for pass\/voucher issuance and statistical reports.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">1.3 Target Vision (Initial Implementation 2020)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Web application<\/strong> exclusively for internal employees.<\/li>\n\n\n\n<li><strong>Family management<\/strong> as the central entry point.<\/li>\n\n\n\n<li><strong>Pass issuance\/renewal<\/strong>, <strong>voucher issuance<\/strong>, <strong>statistics<\/strong>, <strong>employee management<\/strong>.<\/li>\n<\/ul>\n<\/div>\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"heading-wrap\">\n<h2 class=\"wp-block-heading\">2. Solution Design \u2013 Functional &amp; Technical<\/h2>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">2.1 Family-Centric Data Model<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Family<\/strong> as an organizational anchor:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Individuals belong to exactly one family (single individuals = 1-person family).<\/li>\n\n\n\n<li>Duplicate cleansing (person merging) with validation.<\/li>\n\n\n\n<li>Family operations: splitting, merging, moving individuals.<\/li>\n\n\n\n<li>Search\/filter functions by family ID, person, last name.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Added Value:<\/strong> The model maps real-world case constellations (patchwork, changing households) without over-engineering, keeps the data clean, and supports future statistical dimensions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.2 Pass Lifecycle<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">New issuance &amp; renewal with system-predefined start\/end dates and rules:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Automatic pass type (Karlsruhe Pass vs. Children&#8217;s Pass) via date of birth.<\/li>\n\n\n\n<li>Unique pass number (validation).<\/li>\n\n\n\n<li>Validity logic (no overlapping active passes, defined special cases for the Children&#8217;s Pass).<\/li>\n\n\n\n<li>Proof upload (PDF)<\/li>\n\n\n\n<li>Printing of forms via direct print button (requires local print server)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Added Value:<\/strong> Smooth processing, consistent validities, and printable output without media disruption.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.3 Statistics<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Time-period-related sums of active passes by type, postal code, eligibility basis.<\/li>\n\n\n\n<li>Definition: A pass counts if its validity and the evaluation period overlap.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Added Value:<\/strong> Reliable key figures for reporting and budget\/offer management.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.4 Employees &amp; Governance<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Role\/rights management<\/strong>, activate\/deactivate\/delete.<\/li>\n\n\n\n<li><strong>Audit<\/strong>: Creator \/ creation date, last change (person\/date) for family\/person\/pass\/voucher.<\/li>\n\n\n\n<li><strong>Reassign<\/strong> deleted accounts \u2192 Pseudo-employee &#8220;Deleted Employee&#8221;.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Added Value:<\/strong> Traceability and operational security during personnel changes.<\/p>\n<\/div>\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"heading-wrap\">\n<h2 class=\"wp-block-heading\">3. Enhancements 2022 \u2013 Data Governance, Data Quality &amp; Operations<\/h2>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">3.1 Automatic Deletion (GDPR Compliance)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Documents<\/strong>: Deletion 10 years after upload.<\/li>\n\n\n\n<li><strong>Passes &amp; Vouchers<\/strong>: Deletion 10 years after validity end.<\/li>\n\n\n\n<li><strong>Applications<\/strong>: Deletion 10 years after creation.<\/li>\n\n\n\n<li><strong>Persons\/Families<\/strong>: Family-wise deletion if no passes\/applications exist and &gt;3 months since creation; empty families daily.<\/li>\n\n\n\n<li><strong>Nightly job<\/strong>, statistical history remains stable (months\/years are not retrospectively &#8220;rewritten&#8221;).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Added Value:<\/strong> Legal certainty, storage hygiene, and predictable data retention cycles.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.2 District Enrichment via ArcGIS (Karlsruhe City Geo-Portal)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Auto-recognition<\/strong> of district, postal code, city based on street + house number (pre-fill, manually editable).<\/li>\n\n\n\n<li><strong>One-time mass enrichment<\/strong> of existing data (&gt; 50,000 records).<\/li>\n\n\n\n<li><strong>Catalog<\/strong>: 27 Karlsruhe districts.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Added Value:<\/strong> Geographical precision for planning &amp; statistics \u2013 without manual maintenance.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.3 Statistics <strong>2.0<\/strong> \u2013 Multidimensional &amp; Pivot-Ready<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Evaluations for a freely selectable period (start\/end month) and up to 5 criteria simultaneously, including:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Type, benefit (eligibility basis), age cohorts (0\u20135, 6\u201317, 18\u201359, 60+),<\/li>\n\n\n\n<li>Gender (f\/m\/d\/unknown), nationality, districts,<\/li>\n\n\n\n<li>New vs. renewal, number of guardians\/children\/family members.<br\/>Export as Excel with 3 sheets: <em>Summary<\/em>, <em>By Years<\/em>, <em>By Months<\/em>; monthly closings automatically freeze key figures after 6 months.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Added Value:<\/strong> In-depth professional insight and pivot capability for ad-hoc analyses.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.4 &#8220;Extras&#8221; (Additional Services)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creation of active\/inactive extras with variants (e.g., &#8220;Das Fest: Fri\/Sat\/Sun&#8221;), free-text notes.<\/li>\n\n\n\n<li>Mass assignment to family members with an active pass; duplicate protection per person.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Added Value:<\/strong> Fast, traceable allocation of additional entitlements.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.5 Direct Pass &amp; Voucher Printing (Komdruck IDP 2103)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Web2Print\/VM configuration<\/strong> including exact dimensions\/orientation. <\/li>\n\n\n\n<li>Drivers set to correctly use black IR-readable security ink.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Added Value:<\/strong> Minimize media disruptions, reduce misprints, save time.<\/p>\n<\/div>\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"heading-wrap\">\n<h2 class=\"wp-block-heading\">4. Architectural Principles &amp; &#8220;State of the Art&#8221;<\/h2>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Web-Only, Role-Based Access<\/strong>: internal use, password forgotten, secure session handling.<\/li>\n\n\n\n<li><strong>Transparent History<\/strong>: who\/what\/when changed \u2013 essential for administration &amp; audit.<\/li>\n\n\n\n<li><strong>Collision Protection<\/strong>: no simultaneous valid passes per person; uniqueness of pass\/voucher numbers.<\/li>\n\n\n\n<li><strong>Batch Jobs<\/strong>: <strong>nightly<\/strong> auto-deletion, monthly closings.<\/li>\n\n\n\n<li><strong>Data Quality<\/strong>: duplicate rules, ArcGIS-supported address normalization.<\/li>\n\n\n\n<li><strong>Reporting-Ready<\/strong>: Excel exports specifically pivot-capable.<\/li>\n\n\n\n<li><strong>Integration Capability<\/strong>: REST interfaces (digital pass), QR workflows; connectable to the Karlsruhe.App ecosystem idea.<\/li>\n\n\n\n<li><strong>Operational Clarity<\/strong>: Deliberate delimitations (no scanner\/special printer auto-binding in the browser, no cash book) to avoid <strong>complexity<\/strong> \u2013 and to specifically deepen where it adds value (direct printing, geocoding, statistics).<\/li>\n<\/ul>\n<\/div>\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"heading-wrap\">\n<h2 class=\"wp-block-heading\">5. Processes &amp; UX \u2013 &#8220;Thinking Ahead in the Interface&#8221;<\/h2>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Pre-selections<\/strong> (e.g., start\/end, address\/last name for family creation) speed up processing.<\/li>\n\n\n\n<li><strong>Error prevention through product rules<\/strong> instead of a &#8220;flood of error messages&#8221;.<\/li>\n\n\n\n<li><strong>Consistent simplicity<\/strong>: Families as a structure \u2013 without redundant master data.<\/li>\n\n\n\n<li><strong>PDF outputs<\/strong> for passes\/vouchers precisely fitted for forms.<\/li>\n\n\n\n<li><strong>Quick search<\/strong> by family ID, person name, numbers.<\/li>\n<\/ul>\n<\/div>\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"heading-wrap\">\n<h2 class=\"wp-block-heading\">6. Data Protection, Security &amp; Compliance<\/h2>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Minimal Principle<\/strong>: only required attributes, no mandatory gender field in the basic system (later optional for Statistics 2.0).<\/li>\n\n\n\n<li><strong>Retention &amp; Deletion Concept<\/strong>: automated, auditable, documentable.<\/li>\n\n\n\n<li><strong>Transparency<\/strong> through change logs, rights management.<\/li>\n\n\n\n<li><strong>Data Transfer<\/strong> (digital passes): interface hardening, one-time QRs, automatic expiration.<\/li>\n\n\n\n<li><strong>Operating Model<\/strong>: external, secured web application, no access to Windows shares \u2192 upload as a copy (conscious decision in favor of security &amp; traceability).<\/li>\n<\/ul>\n<\/div>\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"heading-wrap\">\n<h2 class=\"wp-block-heading\">7. Results &amp; Value Proposition<\/h2>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Productivity<\/strong>: significantly faster processing, fewer media disruptions.<\/li>\n\n\n\n<li><strong>Data Quality<\/strong>: fewer duplicates, valid validities, complete address records with district.<\/li>\n\n\n\n<li><strong>Reporting<\/strong>: Pivot-capable exports<\/li>\n\n\n\n<li><strong>Governance<\/strong>: clear responsibilities, rights, history; audit-proof.<\/li>\n\n\n\n<li><strong>Future-Proofing<\/strong>: API-First thinking and app integration as a perspective.<\/li>\n<\/ul>\n<\/div>\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"heading-wrap\">\n<h2 class=\"wp-block-heading\">Why SaaS Web?<\/h2>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Conception &amp; Foresight<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">We translate business logic into robust, maintainable software: simple where possible \u2013 specific where necessary. Family-centricity, pass rules, extras: all designed from operational needs. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Solution-Oriented<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Instead of all-capable monoliths: conscious delimitations and targeted deepening where it brings benefits (direct printing, geo-enrichment).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">State of the Art<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Secure web architecture<\/strong>, role-based, automated jobs.<\/li>\n\n\n\n<li><strong>Interface design<\/strong> (digital pass, QR flows) connectable to the Karlsruhe.App strategy.<\/li>\n\n\n\n<li><strong>Data Governance<\/strong> (deletion routines) as built-in compliance.<\/li>\n\n\n\n<li><strong>Analysis-First<\/strong>: Excel exports that truly enable reporting.<\/li>\n<\/ul>\n<\/div>\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n<p class=\"blog-angebot wp-block-paragraph\"><strong>Do you want to digitally grant discounts?<\/strong>  Our discount program makes the application easy for citizens.  <a href=\"https:\/\/www.saasweb.agency\/en\/software\/software-for-municipalities\/citizen-discount-program\/\">More about the discount program<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In 2020, together with jfbw (Jugendfreizeit- und Bildungswerk Karlsruhe), we designed and offered a web-based application for managing the Karlsruhe Pass and the Karlsruhe Children&#8217;s Pass. It was intended as a successor solution for an existing Access database that could no longer be effectively developed. The focus was on clear management of family and personal \u2026<\/p>\n","protected":false},"author":1,"featured_media":11213,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1884,815,981,877],"tags":[1766],"class_list":["post-11212","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-showcase","category-hosting","category-programming","category-saas-web-info","tag-ruby-on-rails"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.saasweb.agency\/en\/wp-json\/wp\/v2\/posts\/11212","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.saasweb.agency\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.saasweb.agency\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.saasweb.agency\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.saasweb.agency\/en\/wp-json\/wp\/v2\/comments?post=11212"}],"version-history":[{"count":1,"href":"https:\/\/www.saasweb.agency\/en\/wp-json\/wp\/v2\/posts\/11212\/revisions"}],"predecessor-version":[{"id":11214,"href":"https:\/\/www.saasweb.agency\/en\/wp-json\/wp\/v2\/posts\/11212\/revisions\/11214"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.saasweb.agency\/en\/wp-json\/wp\/v2\/media\/11213"}],"wp:attachment":[{"href":"https:\/\/www.saasweb.agency\/en\/wp-json\/wp\/v2\/media?parent=11212"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.saasweb.agency\/en\/wp-json\/wp\/v2\/categories?post=11212"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.saasweb.agency\/en\/wp-json\/wp\/v2\/tags?post=11212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}