[{"data":1,"prerenderedAt":752},["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-2-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,691,700,708,717,725,734,743],{"content":673,"config":679},{"title":674,"heroImage":675,"category":9,"description":676,"authors":677},"Hinter den Kulissen von GitLabs Healthy Backlog Initiative","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664458/Blog/Hero%20Images/Gartner_AI_Code_Assistants_Blog_Post_Cover_Image_1800x945.png","Wie GitLab 65.000 Issues in strategische Features, schnelle Entwicklung und direkte Community-Kommunikation verwandelt.",[678],"Stan Hu",{"externalUrl":-1,"slug":680},"inside-gitlabs-healthy-backlog-initiative",{"content":682,"config":689},{"title":683,"heroImage":684,"category":9,"description":685,"authors":686},"So haben wir GitLab-Backups von 48 Stunden auf 41 Minuten beschleunigt","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097166/Blog/Hero%20Images/Blog/Hero%20Images/REFERENCE%20-%20display%20preview%20for%20blog%20images%20%282%29_2pKf8RsKzAaThmQfqHIaa7_1750097166565.png","Erfahre, wie GitLab einen Leistungsengpass in einer 15 Jahre alten Git-Funktion aufgespürt und behoben hat, was zu einer verbesserten Effizienz führte.",[687,688],"Karthik Nayak","Manuel Kraft",{"externalUrl":-1,"slug":690},"how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes",{"content":692,"config":698},{"title":693,"heroImage":694,"category":9,"description":695,"authors":696},"Was ist Kubernetes?","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662245/Blog/Hero%20Images/blog-image-template-1800x945__16_.png","Container haben Softwareentwicklung und -Deployment revolutioniert. Wir zeigen dir hier die Vorteile von Kubernetes.",[697],"GitLab Germany Team",{"externalUrl":-1,"slug":699},"definition-what-is-kubernetes",{"content":701,"config":706},{"title":702,"heroImage":703,"category":9,"description":704,"authors":705},"Linux-Server: Warum sich die Installation lohnt","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663065/Blog/Hero%20Images/serveur-linux.jpg","Linux-Server sind weltweit führend. Wir erklären dir, warum und du selbst von den Vorteilen profitieren kannst.",[697],{"externalUrl":-1,"slug":707},"what-is-a-linux-server",{"content":709,"config":715},{"title":710,"heroImage":711,"category":9,"description":712,"authors":713},"Automatisierung der Migration von Container-Images von Amazon ECR zu GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663129/Blog/Hero%20Images/blog-image-template-1800x945__28_.png","Wenn Plattformteams ihre CI/CD zu GitLab verschieben, sollte die Migration von Container-Images kein Engpass sein. Befolge diese Schritt-für-Schritt-Anleitung, um den Pipeline-Migrationsprozess zu automatisieren.",[714],"Tim Rizzi",{"externalUrl":-1,"slug":716},"automating-container-image-migration-from-amazon-ecr-to-gitlab",{"content":718,"config":723},{"title":719,"heroImage":720,"category":9,"description":721,"authors":722},"Was ist eine integrierte Entwicklungsumgebung (IDE)?","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659768/Blog/Hero%20Images/AdobeStock_271529563.jpg","Der ultimative Guide: Alles, was du über Integrierte Entwicklungsumgebungen wissen musst.",[697],{"externalUrl":-1,"slug":724},"what-is-an-ide",{"content":726,"config":732},{"title":727,"heroImage":728,"category":9,"description":729,"authors":730},"Kontinuierliche Bereitstellung in fünf Umgebungen mithilfe von untergeordneten Pipelines","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097012/Blog/Hero%20Images/Blog/Hero%20Images/AdobeStock_397632156_3Ldy1urjMStQCl4qnOBvE0_1750097011626.jpg","Erfahre, wie du die kontinuierliche Bereitstellung in verschiedenen Umgebungen – darunter temporäre, sofort einsatzbereite Sandboxes – mit einem minimalistischen GitLab-Workflow verwalten kannst.",[731],"Olivier Dupré",{"externalUrl":-1,"slug":733},"using-child-pipelines-to-continuously-deploy-to-five-environments",{"content":735,"config":741},{"title":736,"heroImage":737,"category":9,"description":738,"authors":739},"Einfaches Erstellen einer GitLab-CI/CD-Pipeline für ein Monorepo","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749660151/Blog/Hero%20Images/blog-image-template-1800x945__26_.png","Erfahre, wie du eine GitLab-CI/CD-Pipeline für ein Monorepo erstellst, um mehrere Anwendungen in einem Repository zu hosten.",[740],"Sam Morris",{"externalUrl":-1,"slug":742},"building-a-gitlab-ci-cd-pipeline-for-a-monorepo-the-easy-way",{"content":744,"config":750},{"title":745,"heroImage":746,"category":9,"description":747,"authors":748},"Effiziente DevSecOps-Workflows: Praktische python-gitlab-API-Automatisierung","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659883/Blog/Hero%20Images/post-cover-image.jpg","Die Python-GitLab-Bibliothek ist eine nützliche Basis für die GitLab-API. In diesem Tutorial erfährst du mehr über praktische Beispiele und bewährte Verfahren.",[749],"Michael Friedrich",{"externalUrl":-1,"slug":751},"efficient-devsecops-workflows-hands-on-python-gitlab-api-automation",1772652145217]