[{"data":1,"prerenderedAt":754},["ShallowReactive",2],{"/de-de/blog/categories/engineering":3,"navigation-de-de":20,"banner-de-de":424,"footer-de-de":434,"engineering-category-page-total-items-de-de":639,"engineering-category-page-featured-de-de":640,"engineering-category-page-1-de-de":671},{"id":4,"title":5,"body":6,"category":6,"config":7,"content":11,"description":6,"extension":12,"meta":13,"navigation":14,"path":15,"seo":16,"slug":6,"stem":18,"testContent":6,"type":6,"__hash__":19},"blogCategories/de-de/blog/categories/engineering.yml","Engineering",null,{"template":8,"slug":9,"hide":10},"BlogCategory","engineering",false,{"name":5},"yml",{},true,"/de-de/blog/categories/engineering",{"title":5,"description":17},"Browse articles related to Engineering on the GitLab Blog","de-de/blog/categories/engineering","2aDT2ddISb3_jPr0pKFELw8NlkxcUsQZ7Dd93XB3ya8",{"data":21},{"logo":22,"freeTrial":27,"sales":32,"login":37,"items":42,"search":351,"minimal":386,"duo":404,"pricingDeployment":414},{"config":23},{"href":24,"dataGaName":25,"dataGaLocation":26},"/de-de/","gitlab logo","header",{"text":28,"config":29},"Kostenlose Testversion anfordern",{"href":30,"dataGaName":31,"dataGaLocation":26},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":33,"config":34},"Vertrieb kontaktieren",{"href":35,"dataGaName":36,"dataGaLocation":26},"/de-de/sales/","sales",{"text":38,"config":39},"Anmelden",{"href":40,"dataGaName":41,"dataGaLocation":26},"https://gitlab.com/users/sign_in/","sign in",[43,70,166,171,272,332],{"text":44,"config":45,"cards":47},"Plattform",{"dataNavLevelOne":46},"platform",[48,54,62],{"title":44,"description":49,"link":50},"Die intelligente Orchestrierungsplattform für DevSecOps",{"text":51,"config":52},"Erkunde unsere Plattform",{"href":53,"dataGaName":46,"dataGaLocation":26},"/de-de/platform/",{"title":55,"description":56,"link":57},"GitLab Duo Agent Platform","Agentische KI für den gesamten Softwareentwicklungszyklus",{"text":58,"config":59},"Lerne GitLab Duo kennen",{"href":60,"dataGaName":61,"dataGaLocation":26},"/de-de/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":63,"description":64,"link":65},"Gründe, die für GitLab sprechen","Erfahre, warum Unternehmen auf GitLab setzen",{"text":66,"config":67},"Mehr erfahren",{"href":68,"dataGaName":69,"dataGaLocation":26},"/de-de/why-gitlab/","why gitlab",{"text":71,"left":14,"config":72,"link":74,"lists":78,"footer":148},"Produkt",{"dataNavLevelOne":73},"solutions",{"text":75,"config":76},"Alle Lösungen anzeigen",{"href":77,"dataGaName":73,"dataGaLocation":26},"/de-de/solutions/",[79,104,126],{"title":80,"description":81,"link":82,"items":87},"Automatisierung","CI/CD und Automatisierung zur Beschleunigung der Bereitstellung",{"config":83},{"icon":84,"href":85,"dataGaName":86,"dataGaLocation":26},"AutomatedCodeAlt","/de-de/solutions/delivery-automation/","automated software delivery",[88,92,95,100],{"text":89,"config":90},"CI/CD",{"href":91,"dataGaLocation":26,"dataGaName":89},"/de-de/solutions/continuous-integration/",{"text":55,"config":93},{"href":60,"dataGaLocation":26,"dataGaName":94},"gitlab duo agent platform - product menu",{"text":96,"config":97},"Quellcodeverwaltung",{"href":98,"dataGaLocation":26,"dataGaName":99},"/de-de/solutions/source-code-management/","Source Code Management",{"text":101,"config":102},"Automatisierte Softwarebereitstellung",{"href":85,"dataGaLocation":26,"dataGaName":103},"Automated software delivery",{"title":105,"description":106,"link":107,"items":112},"Sicherheit","Entwickle schneller, ohne die Sicherheit zu gefährden",{"config":108},{"href":109,"dataGaName":110,"dataGaLocation":26,"icon":111},"/de-de/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[113,117,122],{"text":114,"config":115},"Application Security Testing",{"href":109,"dataGaName":116,"dataGaLocation":26},"Application security testing",{"text":118,"config":119},"Schutz der Software-Lieferkette",{"href":120,"dataGaLocation":26,"dataGaName":121},"/de-de/solutions/supply-chain/","Software supply chain security",{"text":123,"config":124},"Software Compliance",{"href":125,"dataGaName":123,"dataGaLocation":26},"/de-de/solutions/software-compliance/",{"title":127,"link":128,"items":133},"Bewertung",{"config":129},{"icon":130,"href":131,"dataGaName":132,"dataGaLocation":26},"DigitalTransformation","/de-de/solutions/visibility-measurement/","visibility and measurement",[134,138,143],{"text":135,"config":136},"Sichtbarkeit und Bewertung",{"href":131,"dataGaLocation":26,"dataGaName":137},"Visibility and Measurement",{"text":139,"config":140},"Wertstrommanagement",{"href":141,"dataGaLocation":26,"dataGaName":142},"/de-de/solutions/value-stream-management/","Value Stream Management",{"text":144,"config":145},"Analysen und Einblicke",{"href":146,"dataGaLocation":26,"dataGaName":147},"/de-de/solutions/analytics-and-insights/","Analytics and insights",{"title":149,"items":150},"GitLab für",[151,156,161],{"text":152,"config":153},"Enterprise",{"href":154,"dataGaLocation":26,"dataGaName":155},"/de-de/enterprise/","enterprise",{"text":157,"config":158},"Kleinunternehmen",{"href":159,"dataGaLocation":26,"dataGaName":160},"/de-de/small-business/","small business",{"text":162,"config":163},"den öffentlichen Sektor",{"href":164,"dataGaLocation":26,"dataGaName":165},"/de-de/solutions/public-sector/","public sector",{"text":167,"config":168},"Preise",{"href":169,"dataGaName":170,"dataGaLocation":26,"dataNavLevelOne":170},"/de-de/pricing/","pricing",{"text":172,"config":173,"link":175,"lists":179,"feature":259},"Ressourcen",{"dataNavLevelOne":174},"resources",{"text":176,"config":177},"Alle Ressourcen anzeigen",{"href":178,"dataGaName":174,"dataGaLocation":26},"/de-de/resources/",[180,213,231],{"title":181,"items":182},"Erste Schritte",[183,188,193,198,203,208],{"text":184,"config":185},"Installieren",{"href":186,"dataGaName":187,"dataGaLocation":26},"/de-de/install/","install",{"text":189,"config":190},"Kurzanleitungen",{"href":191,"dataGaName":192,"dataGaLocation":26},"/de-de/get-started/","quick setup checklists",{"text":194,"config":195},"Lernen",{"href":196,"dataGaLocation":26,"dataGaName":197},"https://university.gitlab.com/","learn",{"text":199,"config":200},"Produktdokumentation",{"href":201,"dataGaName":202,"dataGaLocation":26},"https://docs.gitlab.com/","product documentation",{"text":204,"config":205},"Best-Practice-Videos",{"href":206,"dataGaName":207,"dataGaLocation":26},"/de-de/getting-started-videos/","best practice videos",{"text":209,"config":210},"Integrationen",{"href":211,"dataGaName":212,"dataGaLocation":26},"/de-de/integrations/","integrations",{"title":214,"items":215},"Entdecken",[216,221,226],{"text":217,"config":218},"Kundenerfolge",{"href":219,"dataGaName":220,"dataGaLocation":26},"/de-de/customers/","customer success stories",{"text":222,"config":223},"Blog",{"href":224,"dataGaName":225,"dataGaLocation":26},"/de-de/blog/","blog",{"text":227,"config":228},"Remote",{"href":229,"dataGaName":230,"dataGaLocation":26},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":232,"items":233},"Vernetzen",[234,239,244,249,254],{"text":235,"config":236},"GitLab-Services",{"href":237,"dataGaName":238,"dataGaLocation":26},"/de-de/services/","services",{"text":240,"config":241},"Community",{"href":242,"dataGaName":243,"dataGaLocation":26},"/community/","community",{"text":245,"config":246},"Forum",{"href":247,"dataGaName":248,"dataGaLocation":26},"https://forum.gitlab.com/","forum",{"text":250,"config":251},"Veranstaltungen",{"href":252,"dataGaName":253,"dataGaLocation":26},"/events/","events",{"text":255,"config":256},"Partner",{"href":257,"dataGaName":258,"dataGaLocation":26},"/de-de/partners/","partners",{"backgroundColor":260,"textColor":261,"text":262,"image":263,"link":267},"#2f2a6b","#fff","Perspektiven für die Softwareentwicklung der Zukunft",{"altText":264,"config":265},"the source promo card",{"src":266},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":268,"config":269},"Lies die News",{"href":270,"dataGaName":271,"dataGaLocation":26},"/de-de/the-source/","the source",{"text":273,"config":274,"lists":276},"Unternehmen",{"dataNavLevelOne":275},"company",[277],{"items":278},[279,284,290,292,297,302,307,312,317,322,327],{"text":280,"config":281},"Über",{"href":282,"dataGaName":283,"dataGaLocation":26},"/de-de/company/","about",{"text":285,"config":286,"footerGa":289},"Karriere",{"href":287,"dataGaName":288,"dataGaLocation":26},"/jobs/","jobs",{"dataGaName":288},{"text":250,"config":291},{"href":252,"dataGaName":253,"dataGaLocation":26},{"text":293,"config":294},"Geschäftsführung",{"href":295,"dataGaName":296,"dataGaLocation":26},"/company/team/e-group/","leadership",{"text":298,"config":299},"Team",{"href":300,"dataGaName":301,"dataGaLocation":26},"/company/team/","team",{"text":303,"config":304},"Handbuch",{"href":305,"dataGaName":306,"dataGaLocation":26},"https://handbook.gitlab.com/","handbook",{"text":308,"config":309},"Investor Relations",{"href":310,"dataGaName":311,"dataGaLocation":26},"https://ir.gitlab.com/","investor relations",{"text":313,"config":314},"Trust Center",{"href":315,"dataGaName":316,"dataGaLocation":26},"/de-de/security/","trust center",{"text":318,"config":319},"AI Transparency Center",{"href":320,"dataGaName":321,"dataGaLocation":26},"/de-de/ai-transparency-center/","ai transparency center",{"text":323,"config":324},"Newsletter",{"href":325,"dataGaName":326,"dataGaLocation":26},"/company/contact/#contact-forms","newsletter",{"text":328,"config":329},"Presse",{"href":330,"dataGaName":331,"dataGaLocation":26},"/press/","press",{"text":333,"config":334,"lists":335},"Kontakt",{"dataNavLevelOne":275},[336],{"items":337},[338,341,346],{"text":33,"config":339},{"href":35,"dataGaName":340,"dataGaLocation":26},"talk to sales",{"text":342,"config":343},"Support-Portal",{"href":344,"dataGaName":345,"dataGaLocation":26},"https://support.gitlab.com","support portal",{"text":347,"config":348},"Kundenportal",{"href":349,"dataGaName":350,"dataGaLocation":26},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":352,"login":353,"suggestions":360},"Schließen",{"text":354,"link":355},"Um Repositories und Projekte zu durchsuchen, melde dich an bei",{"text":356,"config":357},"gitlab.com",{"href":40,"dataGaName":358,"dataGaLocation":359},"search login","search",{"text":361,"default":362},"Vorschläge",[363,365,370,372,377,382],{"text":55,"config":364},{"href":60,"dataGaName":55,"dataGaLocation":359},{"text":366,"config":367},"Code Suggestions (KI)",{"href":368,"dataGaName":369,"dataGaLocation":359},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":89,"config":371},{"href":91,"dataGaName":89,"dataGaLocation":359},{"text":373,"config":374},"GitLab auf AWS",{"href":375,"dataGaName":376,"dataGaLocation":359},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":378,"config":379},"GitLab auf Google Cloud",{"href":380,"dataGaName":381,"dataGaLocation":359},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":383,"config":384},"Warum GitLab?",{"href":68,"dataGaName":385,"dataGaLocation":359},"Why GitLab?",{"freeTrial":387,"mobileIcon":392,"desktopIcon":397,"secondaryButton":400},{"text":388,"config":389},"Kostenlos testen",{"href":390,"dataGaName":31,"dataGaLocation":391},"https://gitlab.com/-/trials/new/","nav",{"altText":393,"config":394},"GitLab-Symbol",{"src":395,"dataGaName":396,"dataGaLocation":391},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":393,"config":398},{"src":399,"dataGaName":396,"dataGaLocation":391},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":181,"config":401},{"href":402,"dataGaName":403,"dataGaLocation":391},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de/compare/gitlab-vs-github/","get started",{"freeTrial":405,"mobileIcon":410,"desktopIcon":412},{"text":406,"config":407},"Erfahre mehr über GitLab Duo",{"href":408,"dataGaName":409,"dataGaLocation":391},"/de-de/gitlab-duo/","gitlab duo",{"altText":393,"config":411},{"src":395,"dataGaName":396,"dataGaLocation":391},{"altText":393,"config":413},{"src":399,"dataGaName":396,"dataGaLocation":391},{"freeTrial":415,"mobileIcon":420,"desktopIcon":422},{"text":416,"config":417},"Zurück zur Preisübersicht",{"href":169,"dataGaName":418,"dataGaLocation":391,"icon":419},"back to pricing","GoBack",{"altText":393,"config":421},{"src":395,"dataGaName":396,"dataGaLocation":391},{"altText":393,"config":423},{"src":399,"dataGaName":396,"dataGaLocation":391},{"title":425,"button":426,"config":431},"Sieh dir an, wie agentische KI die Softwarebereitstellung transformiert",{"text":427,"config":428},"GitLab Transcend jetzt ansehen",{"href":429,"dataGaName":430,"dataGaLocation":26},"/de-de/events/transcend/virtual/","transcend event",{"layout":432,"icon":433},"release","AiStar",{"data":435},{"text":436,"source":437,"edit":443,"contribute":448,"config":453,"items":458,"minimal":631},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":438,"config":439},"Quelltext der Seite anzeigen",{"href":440,"dataGaName":441,"dataGaLocation":442},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":444,"config":445},"Diese Seite bearbeiten",{"href":446,"dataGaName":447,"dataGaLocation":442},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":449,"config":450},"Beteilige dich",{"href":451,"dataGaName":452,"dataGaLocation":442},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":454,"facebook":455,"youtube":456,"linkedin":457},"https://x.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[459,482,537,564,598],{"title":44,"links":460,"subMenu":465},[461],{"text":462,"config":463},"DevSecOps-Plattform",{"href":53,"dataGaName":464,"dataGaLocation":442},"devsecops platform",[466],{"title":167,"links":467},[468,472,477],{"text":469,"config":470},"Tarife anzeigen",{"href":169,"dataGaName":471,"dataGaLocation":442},"view plans",{"text":473,"config":474},"Vorteile von Premium",{"href":475,"dataGaName":476,"dataGaLocation":442},"/de-de/pricing/premium/","why premium",{"text":478,"config":479},"Vorteile von Ultimate",{"href":480,"dataGaName":481,"dataGaLocation":442},"/de-de/pricing/ultimate/","why ultimate",{"title":483,"links":484},"Lösungen",[485,490,493,495,500,505,509,512,515,520,522,524,527,532],{"text":486,"config":487},"Digitale Transformation",{"href":488,"dataGaName":489,"dataGaLocation":442},"/de-de/topics/digital-transformation/","digital transformation",{"text":491,"config":492},"Sicherheit und Compliance",{"href":109,"dataGaName":116,"dataGaLocation":442},{"text":101,"config":494},{"href":85,"dataGaName":86,"dataGaLocation":442},{"text":496,"config":497},"Agile Entwicklung",{"href":498,"dataGaName":499,"dataGaLocation":442},"/de-de/solutions/agile-delivery/","agile delivery",{"text":501,"config":502},"Cloud-Transformation",{"href":503,"dataGaName":504,"dataGaLocation":442},"/de-de/topics/cloud-native/","cloud transformation",{"text":506,"config":507},"SCM",{"href":98,"dataGaName":508,"dataGaLocation":442},"source code management",{"text":89,"config":510},{"href":91,"dataGaName":511,"dataGaLocation":442},"continuous integration & delivery",{"text":139,"config":513},{"href":141,"dataGaName":514,"dataGaLocation":442},"value stream management",{"text":516,"config":517},"GitOps",{"href":518,"dataGaName":519,"dataGaLocation":442},"/de-de/solutions/gitops/","gitops",{"text":152,"config":521},{"href":154,"dataGaName":155,"dataGaLocation":442},{"text":157,"config":523},{"href":159,"dataGaName":160,"dataGaLocation":442},{"text":525,"config":526},"Öffentlicher Sektor",{"href":164,"dataGaName":165,"dataGaLocation":442},{"text":528,"config":529},"Bildungswesen",{"href":530,"dataGaName":531,"dataGaLocation":442},"/de-de/solutions/education/","education",{"text":533,"config":534},"Finanzdienstleistungen",{"href":535,"dataGaName":536,"dataGaLocation":442},"/de-de/solutions/finance/","financial services",{"title":172,"links":538},[539,541,543,545,548,550,552,554,556,558,560,562],{"text":184,"config":540},{"href":186,"dataGaName":187,"dataGaLocation":442},{"text":189,"config":542},{"href":191,"dataGaName":192,"dataGaLocation":442},{"text":194,"config":544},{"href":196,"dataGaName":197,"dataGaLocation":442},{"text":199,"config":546},{"href":201,"dataGaName":547,"dataGaLocation":442},"docs",{"text":222,"config":549},{"href":224,"dataGaName":225,"dataGaLocation":442},{"text":217,"config":551},{"href":219,"dataGaName":220,"dataGaLocation":442},{"text":227,"config":553},{"href":229,"dataGaName":230,"dataGaLocation":442},{"text":235,"config":555},{"href":237,"dataGaName":238,"dataGaLocation":442},{"text":240,"config":557},{"href":242,"dataGaName":243,"dataGaLocation":442},{"text":245,"config":559},{"href":247,"dataGaName":248,"dataGaLocation":442},{"text":250,"config":561},{"href":252,"dataGaName":253,"dataGaLocation":442},{"text":255,"config":563},{"href":257,"dataGaName":258,"dataGaLocation":442},{"title":273,"links":565},[566,568,570,572,574,576,578,582,587,589,591,593],{"text":280,"config":567},{"href":282,"dataGaName":275,"dataGaLocation":442},{"text":285,"config":569},{"href":287,"dataGaName":288,"dataGaLocation":442},{"text":293,"config":571},{"href":295,"dataGaName":296,"dataGaLocation":442},{"text":298,"config":573},{"href":300,"dataGaName":301,"dataGaLocation":442},{"text":303,"config":575},{"href":305,"dataGaName":306,"dataGaLocation":442},{"text":308,"config":577},{"href":310,"dataGaName":311,"dataGaLocation":442},{"text":579,"config":580},"Sustainability",{"href":581,"dataGaName":579,"dataGaLocation":442},"/sustainability/",{"text":583,"config":584},"Vielfalt, Inklusion und Zugehörigkeit",{"href":585,"dataGaName":586,"dataGaLocation":442},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":313,"config":588},{"href":315,"dataGaName":316,"dataGaLocation":442},{"text":323,"config":590},{"href":325,"dataGaName":326,"dataGaLocation":442},{"text":328,"config":592},{"href":330,"dataGaName":331,"dataGaLocation":442},{"text":594,"config":595},"Transparenzerklärung zu moderner Sklaverei",{"href":596,"dataGaName":597,"dataGaLocation":442},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":599,"links":600},"Nimm Kontakt auf",[601,604,609,611,616,621,626],{"text":602,"config":603},"Sprich mit einem Experten/einer Expertin",{"href":35,"dataGaName":36,"dataGaLocation":442},{"text":605,"config":606},"Support",{"href":607,"dataGaName":608,"dataGaLocation":442},"/support/","get help",{"text":347,"config":610},{"href":349,"dataGaName":350,"dataGaLocation":442},{"text":612,"config":613},"Status",{"href":614,"dataGaName":615,"dataGaLocation":442},"https://status.gitlab.com/","status",{"text":617,"config":618},"Nutzungsbedingungen",{"href":619,"dataGaName":620,"dataGaLocation":442},"/terms/","terms of use",{"text":622,"config":623},"Datenschutzerklärung",{"href":624,"dataGaName":625,"dataGaLocation":442},"/de-de/privacy/","privacy statement",{"text":627,"config":628},"Cookie-Einstellungen",{"dataGaName":629,"dataGaLocation":442,"id":630,"isOneTrustButton":14},"cookie preferences","ot-sdk-btn",{"items":632},[633,635,637],{"text":617,"config":634},{"href":619,"dataGaName":620,"dataGaLocation":442},{"text":622,"config":636},{"href":624,"dataGaName":625,"dataGaLocation":442},{"text":627,"config":638},{"dataGaName":629,"dataGaLocation":442,"id":630,"isOneTrustButton":14},28,{"id":641,"title":642,"authorSlugs":643,"body":6,"categorySlug":9,"config":646,"content":649,"description":6,"extension":12,"isFeatured":14,"meta":661,"navigation":14,"path":662,"publishedDate":654,"seo":663,"stem":667,"tagSlugs":668,"__hash__":670},"blogPosts/de-de/blog/migration-from-azure-devops-to-gitlab.yml","Migration From Azure Devops To Gitlab",[644,645],"evgeny-rudinsky","michael-leopard",{"featured":14,"template":647,"slug":648},"BlogPost","migration-from-azure-devops-to-gitlab",{"category":9,"tags":650,"body":653,"date":654,"heroImage":655,"authors":656,"title":659,"description":660},[651,652,89],"tutorial","git","Enterprise-Migrationen in regulierten Branchen wie Finanzwesen und Automobilindustrie erfordern systematisches Risikomanagement gemäß NIS2-Richtlinie Artikel 21. Die mehrstufige Migrationsstruktur mit Testläufen vor Produktions-Wellen und kontrollierten Change-Freezes demonstriert Business-Continuity-Management in der Praxis. GitLab Professional Services organisiert Migrationen in Wellen von 200-300 Projekten, um Komplexität zu managen und API-Rate-Limits zu respektieren.\n\n## Überblick\n\nGitLab bietet [Congregate](https://gitlab.com/gitlab-org/professional-services-automation/tools/migration/congregate/) (maintained by GitLab Professional Services) und [eingebauten Git-Repository-Import](https://docs.gitlab.com/user/project/import/repo_by_url/) für Migrationen von Azure DevOps (ADO). Beide Optionen unterstützen Repository-basierte oder Bulk-Migration und erhalten Git-Commit-History, Branches und Tags. Mit Congregate werden zusätzliche Assets wie Wikis, Work Items, CI/CD-Variablen, Container-Images, Packages und Pipelines migriert (siehe [Feature-Matrix](https://gitlab.com/gitlab-org/professional-services-automation/tools/migration/congregate/-/blob/master/customer/ado-migration-features-matrix.md)).\n\nEnterprises folgen typischerweise einem mehrstufigen Ansatz:\n\n- Repositories von ADO zu GitLab migrieren (Congregate oder eingebauter Import)\n- Pipelines von Azure Pipelines zu GitLab CI/CD migrieren\n- Verbleibende Assets wie Boards, Work Items und Artifacts zu GitLab Issues, Epics und Package/Container Registries migrieren\n\nMehrstufige Migrationsphasen (siehe [Diagramm](https://about.gitlab.com/blog/migration-from-azure-devops-to-gitlab/#overview)):\n\n- Prerequisites (IdP, Runners, Change Management)\n- Migration Phase (Source Code, History, Work Items)\n- Post-Migration (Pipelines, Assets, Security)\n\n## Migration planen\n\n**Zentrale Planungsfragen:**\n\n- Wie schnell muss die Migration abgeschlossen werden?\n- Was genau wird migriert?\n- Wer führt die Migration durch?\n- Welche Organisationsstruktur wird in GitLab benötigt?\n- Welche Einschränkungen, Limitierungen oder Fallstricke müssen berücksichtigt werden?\n\nDie Timeline bestimmt weitgehend den Migrationsansatz. Identifizierung von Champions oder Teams mit ADO- und GitLab-Erfahrung unterstützt Adoption und Guidance.\n\n**Inventar erstellen:**\n\nDas GitLab Professional Services [Evaluate](https://gitlab.com/gitlab-org/professional-services-automation/tools/utilities/evaluate#beta-azure-devops)-Tool produziert ein vollständiges Inventar der Azure DevOps Organisation: Repositories, PR-Counts, Contributors, Pipelines, Work Items, CI/CD-Variablen. Bei Professional Services Engagements wird dieser Report mit Engagement Manager oder Technical Architect geteilt für Migrationsplanung.\n\nMigrations-Timing wird primär bestimmt durch Pull-Request-Count, Repository-Größe und Contribution-Menge. Beispiel: 1.000 kleine Repositories mit wenigen PRs migrieren schneller als wenige Repositories mit Zehntausenden PRs. Inventar-Daten ermöglichen Aufwands-Schätzung und Test-Run-Planung.\n\nIn Professional Services Engagements werden Migrationen in Wellen von 200-300 Projekten organisiert, um Komplexität zu managen und API-Rate-Limits zu respektieren (sowohl [GitLab](https://docs.gitlab.com/security/rate_limits/) als auch [ADO](https://learn.microsoft.com/en-us/azure/devops/integrate/concepts/rate-limits?view=azure-devops)).\n\n**Tool-Auswahl:**\n\nGitLabs [eingebauter Repository-Importer](https://docs.gitlab.com/user/project/import/repo_by_url/) migriert Git-Repositories (Commits, Branches, Tags) einzeln. Congregate erhält Pull Requests (in GitLab: Merge Requests), Kommentare und Metadata; der eingebaute Import fokussiert auf Git-Daten (History, Branches, Tags).\n\nAssets die typischerweise separate Migration oder manuelle Neuerstellung erfordern:\n\n- Azure Pipelines → GitLab CI/CD Pipelines (siehe [CI/CD YAML](https://docs.gitlab.com/ci/yaml/) oder [CI/CD Components](https://docs.gitlab.com/ci/components/)). Alternativ: AI-basierte Pipeline-Konvertierung in Congregate.\n- Work Items und Boards → GitLab Issues, Epics, Issue Boards\n- Artifacts, Container-Images (ACR) → GitLab Package/Container Registry\n- Service Hooks, externe Integrationen → in GitLab neu erstellen\n\n[Permissions-Modelle](https://docs.gitlab.com/user/permissions/) unterscheiden sich zwischen ADO und GitLab. Permissions-Mapping planen statt exakter Preservation zu erwarten.\n\n**Organisationsstruktur in GitLab:**\n\nEmpfohlener Ansatz: ADO-Organisationen auf GitLab-Groups mappen (nicht viele kleine Groups). Migration als Gelegenheit nutzen, GitLab-Struktur zu rationalisieren (siehe [Struktur-Diagramm](https://about.gitlab.com/blog/migration-from-azure-devops-to-gitlab/#planning-your-migration)):\n\n- **ADO Organization** → GitLab Top-level Group\n- **ADO Project** → GitLab Subgroup (optional)\n- **ADO Repository** → GitLab Project\n\nWeitere Empfehlungen:\n\n- Subgroups und Project-Level-Permissions für verwandte Repositories nutzen\n- Zugriff über GitLab Groups und Group-Membership managen\n- GitLab [Permissions](https://docs.gitlab.com/ee/user/permissions.html) und [SAML Group Links](https://docs.gitlab.com/user/group/saml_sso/group_sync/) für Enterprise-RBAC-Modell evaluieren\n\n**ADO Work Items Migration:**\n\nADO Boards und Work Items mappen zu GitLab Issues, Epics und Issue Boards. ADO Epics und Features werden GitLab Epics. Andere Work-Item-Typen (User Stories, Tasks, Bugs) werden project-scoped Issues. Standard-Felder bleiben erhalten; ausgewählte Custom Fields können migriert werden. Parent-Child-Relationships bleiben erhalten. Links zu Pull Requests werden zu Merge-Request-Links konvertiert.\n\n![Migration eines Work Items zu GitLab Issue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1764769188/ztesjnxxfbwmfmtckyga.png)\n\n**Pipelines-Migration:**\n\nCongregate bietet [AI-basierte Konvertierung](https://gitlab.com/gitlab-org/professional-services-automation/tools/migration/congregate/-/merge_requests/1298) für multi-stage YAML-Pipelines von Azure DevOps zu GitLab CI/CD. Die automatisierte Konvertierung funktioniert optimal für einfache Single-File-Pipelines und liefert einen funktionalen Ausgangspunkt, nicht ein produktionsreifes `.gitlab-ci.yml`-File. Das Tool generiert funktional äquivalente GitLab-Pipelines zur weiteren Optimierung.\n\n- Konvertiert Azure Pipelines YAML zu `.gitlab-ci.yml` automatisch\n- Geeignet für straightforward Single-File-Pipeline-Konfigurationen\n- Liefert Boilerplate zur Migrations-Beschleunigung, nicht finales Production-Artifact\n- Erfordert Review und Anpassung für komplexe Szenarien, Custom Tasks oder Enterprise-Requirements\n- Unterstützt keine Azure DevOps Classic Release Pipelines\n\nRepository-Owner sollten [GitLab CI/CD Dokumentation](https://docs.gitlab.com/ci/) konsultieren für weitere Pipeline-Optimierung nach initialer Konvertierung.\n\n## Migrationen durchführen\n\nNach der Planung werden Migrationen in Stages durchgeführt, beginnend mit Trial Runs. Trial Migrations identifizieren organisations-spezifische Issues frühzeitig und ermöglichen Duration-Messung, Outcome-Validierung und Approach-Finetuning vor Production.\n\n**Was Trial Migrations validieren:**\n\n- Ob Repository und Assets erfolgreich migrieren (History, Branches, Tags; plus MRs/Comments bei Congregate)\n- Ob Destination sofort nutzbar ist (Permissions, Runners, CI/CD-Variablen, Integrationen)\n- Wie lange jeder Batch benötigt für Schedule- und Stakeholder-Expectations\n\n**Downtime-Guidance:**\n\nGitLabs eingebauter Git-Import und Congregate erfordern inhärent keine Downtime. Für Production-Wellen: Changes in ADO freezen (Branch-Protections oder Read-only), um verpasste Commits, PR-Updates oder mid-migration Work Items zu vermeiden. Trial Runs erfordern keine Freezes.\n\n**Batching-Guidance:**\n\nTrial-Batches back-to-back durchführen für kürzere elapsed Time. Teams validieren Results asynchron. Geplante Group/Subgroup-Struktur für Batch-Definition nutzen und API-Rate-Limits respektieren.\n\n**Empfohlene Schritte:**\n\n1. Test-Destination in GitLab erstellen (GitLab.com: dedicated Group/Namespace; Self-managed: Top-level Group)\n2. Authentication vorbereiten (Azure DevOps PAT, GitLab Personal Access Token mit api und read_repository Scopes)\n3. Trial Migrations durchführen (Repos only: eingebauter Import; Repos + PRs/MRs: Congregate)\n4. Post-Trial Follow-up (Repo-History, Branches, Tags, Merge Requests, Issues/Epics, Labels, Relationships verifizieren)\n5. Permissions/Roles, Protected Branches, Runners/Tags, Variables/Secrets, Integrations/Webhooks prüfen\n6. Pipelines (`.gitlab-ci.yml`) oder konvertierte Pipelines validieren\n7. User-Validierung für Functionality und Data-Fidelity\n8. Production-Migrationen in Waves durchführen (Change-Freezes in ADO erzwingen, Progress und Logs monitoren)\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/ibIXGfrVbi4?si=ZxOVnXjCF-h4Ne0N\" frameborder=\"0\" allowfullscreen=\"true\">\u003C/iframe>\n\u003C/figure>\n\n## Zentrale ADO-zu-GitLab-Mappings\n\nWichtigste Struktur-Mappings für Migrationsplanung:\n\n- **ADO Organization** → GitLab Group (Top-level Namespace)\n- **ADO Project** → GitLab Group oder Subgroup (Permissions-Boundary)\n- **ADO Repository** → GitLab Project (Git-Repo plus Issues, CI/CD, Wiki)\n- **Pull Request** → Merge Request (Code Review, Approvals)\n- **Azure Pipelines** → GitLab CI/CD (`.gitlab-ci.yml`)\n- **Agent Pools** → GitLab Runners (Job-Execution)\n- **Work Items** → GitLab Issues/Epics (Planning-Funktionalität)\n- **Variable Groups** → CI/CD Variables (Project/Group/Instance Level)\n\nFür vollständige Terminologie-Referenztabelle mit allen Mappings siehe [englische Originalversion](https://about.gitlab.com/blog/migration-from-azure-devops-to-gitlab/).\n\n## Professional Services Migrationsmuster\n\nGitLab Professional Services nutzt bewährte Muster für Enterprise-Migrationen:\n\n**Systematische Planung:** Evaluate-Tool liefert vollständiges Inventar (Repositories, PRs, Contributors, Pipelines, Work Items). Klassifikation nach Komplexität (Work Items = Planning-Team-Involvement; Pipelines = Conversion-Requirements) ermöglicht Timeline-Schätzung und Batch-Definition.\n\n**Controlled Execution:** Wellen von 200-300 Projekten managen Komplexität und respektieren API-Rate-Limits. Trial-Migrationen vor Production-Waves identifizieren Issues frühzeitig. Change-Freezes in ADO während Production-Wellen vermeiden mid-migration Updates.\n\n**Risikominimierung:** Multi-Phase-Ansatz (Prerequisites → Migration → Post-migration) mit Validierungs-Checkpoints an jeder Phase. Trial-Runs ermöglichen asynchrone Team-Validierung ohne Production-Impact.\n\n## Praktische Implementierung\n\nFür vollständige Implementierungsdetails, Konfigurationsbeispiele, Pipeline-Konvertierungs-Patterns und detaillierte Post-Migration-Checklisten siehe [englische Originalversion](https://about.gitlab.com/blog/migration-from-azure-devops-to-gitlab/).\n\nWeitere Professional Services Ressourcen:\n\n- [Professional Services Full Catalog](https://about.gitlab.com/professional-services/catalog/)\n- [Congregate Migration Tool](https://gitlab.com/gitlab-org/professional-services-automation/tools/migration/congregate/)\n- [Evaluate Inventory Tool](https://gitlab.com/gitlab-org/professional-services-automation/tools/utilities/evaluate)\n","2025-12-03","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749658924/Blog/Hero%20Images/securitylifecycle-light.png",[657,658],"Evgeny Rudinsky","Michael Leopard","Migration von Azure DevOps zu GitLab systematisch planen","Professional Services Migrationsansatz mit mehrstufiger Struktur, 200-300 Projekt-Wellen und systematischem Risikomanagement für Enterprise-Migrationen.",{},"/de-de/blog/migration-from-azure-devops-to-gitlab",{"title":659,"description":660,"ogTitle":659,"ogDescription":660,"ogUrl":664,"ogSiteName":665,"ogType":666,"canonicalUrls":664,"ogImage":655},"https://about.gitlab.com/blog/migration-from-azure-devops-to-gitlab","https://about.gitlab.com","article","de-de/blog/migration-from-azure-devops-to-gitlab",[651,652,669],"cicd","133Wt_x7RMjOwLZTV3OJrFzb73rHPFyzfFwFxdmF4Iw",[672,681,690,699,708,717,726,736,746],{"content":673,"config":679},{"title":674,"heroImage":675,"category":9,"description":676,"authors":677},"Wie wir die größte GitLab-Instanz 12-mal täglich bereitstellen","https://res.cloudinary.com/about-gitlab-com/image/upload/v1764108112/tyntnsy3xotlmehtnfkb.png","Systematische Deployment-Pipeline mit mehrstufigen Rollouts, Canary-Strategie (5% Traffic) und Datenbank-Migrationen für Millionen Entwickler(innen) weltweit.",[678],"John Skarbek",{"externalUrl":-1,"slug":680},"continuously-deploying-the-largest-gitlab-instance",{"content":682,"config":688},{"title":683,"heroImage":684,"category":9,"description":685,"authors":686},"MR-Review-Zeit mit Value Stream Management reduzieren","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097876/Blog/Hero%20Images/Blog/Hero%20Images/REFERENCE%20-%20display%20preview%20for%20blog%20images%20%282%29_2pKf8RsKzAaThmQfqHIaa7_1750097875817.png","GitLab Engineering nutzt VSM zur Identifikation von Engpässen im MR-Review-Prozess. Systematische Analyse mit Custom Stages.",[687],"Haim Snir",{"externalUrl":-1,"slug":689},"how-we-reduced-mr-review-time-with-value-stream-management",{"content":691,"config":697},{"title":692,"heroImage":693,"category":9,"description":694,"authors":695},"Streamlit-Framework: Systematische Infrastruktur-Governance","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097447/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%284%29_3LZkiDjHLjhqEkvOvBsVKp_1750097447404.png","Das GitLab Data Team zeigt, wie frühzeitige Infrastruktur-Governance exponentiell steigende Wartungskosten verhindert. Ein systematischer Ansatz für Streamlit-Anwendungen in regulierten Umgebungen.",[696],"Radovan Bacovic",{"externalUrl":-1,"slug":698},"how-we-built-a-structured-streamlit-application-framework-in-snowflake",{"content":700,"config":706},{"title":701,"heroImage":702,"category":9,"description":703,"authors":704},"Git-Workflows systematisch optimieren","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098264/Blog/Hero%20Images/Blog/Hero%20Images/AdobeStock_519147119_2RafH61mqosMZv8HGAlsUj_1750098264407.jpg","Git clone-Operationen optimieren – bis zu 93 % weniger Clone-Zeit und 98 % weniger Speicherplatzbedarf.",[705],"Darwin Sanoy",{"externalUrl":-1,"slug":707},"supercharge-your-git-workflows",{"content":709,"config":715},{"title":710,"heroImage":711,"category":9,"description":712,"authors":713},"Was ist YAML? Alles erklärt, von den Grundlagen bis zur Anwendung","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662547/Blog/Hero%20Images/what_is_yaml.jpg","YAML ist ein Format, das für Konfigurationsdateien und mehr verwendet wird. Dieser Artikel erklärt die Grundlagen von YAML bis hin zu praktischen Anwendungen mit Kubernetes.",[714],"GitLab Team",{"externalUrl":-1,"slug":716},"what-is-yaml",{"content":718,"config":724},{"title":719,"heroImage":720,"category":9,"description":721,"authors":722},"Von manuellen Testzyklen zu automatisierten Embedded-Workflows: GitLabs Ansatz für virtuelle Testumgebungen","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099203/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2820%29_2bJGC5ZP3WheoqzlLT05C5_1750099203484.png","Managed Lifecycle Environments automatisieren virtuelle Testumgebungen für Embedded-Systeme und lösen dabei die typischen Probleme von Umgebungs-Wildwuchs und explodierenden Kosten.",[723,705],"Matt DeLaney",{"externalUrl":-1,"slug":725},"how-gitlab-transforms-embedded-systems-testing-cycles",{"content":727,"config":734},{"title":728,"heroImage":729,"category":9,"description":730,"authors":731},"Granulare Job Token Berechtigungen sind jetzt verfügbar","blog/hero%20images/workflow_1800x945.png","GitLab ermöglicht granulare Berechtigungen für CI/CD Job Tokens und erhöht die Sicherheit der Software-Supply-Chain.",[732,733],"Alex Mark","Joe Randazzo",{"externalUrl":-1,"slug":735},"fine-grained-job-tokens-ga",{"content":737,"config":744},{"title":738,"heroImage":729,"category":9,"description":739,"authors":740},"Wir haben die GitLab-Dokumentationsseite komplett redesigned","Erfahre mehr über die Features unserer neu gestalteten Produktdokumentationsseite, die einen einfachen Feedback-Mechanismus und den vielgewünschten Dark Mode bietet.",[741,742,743],"Suzanne Selhorn","Sarah German","Julia Miocene",{"externalUrl":-1,"slug":745},"docs-site-design-overhaul",{"content":747,"config":752},{"title":748,"heroImage":720,"category":9,"description":749,"authors":750},"Custom Rules für GitLab Duo: Höhere Entwicklungseffizienz","KI-Assistenten verstehen die eigene Code-Basis mit Custom Rules und generieren produktionsreifen Code mit minimalen Review-Zyklen.",[751],"Michael Friedrich",{"externalUrl":-1,"slug":753},"custom-rules-duo-agentic-chat-deep-dive",1772652063505]