<!DOCTYPE html>
<html>

  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  
    <title>Acceleo | Support</title>
  
    <meta name="description" content="The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 350 open source projects, including runtimes, tools and frameworks">
    <link rel="shortcut icon" type="image/png" href="/acceleo/common_assets/images/logos/favicon_acceleo.ico"/>

    <link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" integrity="sha384-9gVQ4dYFwwWSjIDZnLEWnxCjeSWFphJiwGPXr1jddIhOegiu1FwO5qRGvFXOdJZ4" crossorigin="anonymous">
    <link rel="stylesheet" href="/acceleo/common_assets/css/styles.css">
    <link rel="stylesheet" href="/acceleo/common_assets/css/animate.css">
    <link rel="stylesheet" href="/acceleo/common_assets/css/media.css"/>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
    <script src="/acceleo/common_assets/js/magnific-popup.video.js"></script>
    <script src="/acceleo/common_assets/js/magnific-popup.min.js"></script>

    <!-- Eclipse Foundation Google Tag Manager -->
	<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
        new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
        j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
        'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
        })(window,document,'script','dataLayer','GTM-5WLCZXC');</script>
        <!-- End Google Tag Manager -->  
        
        <!-- Eclipse Foundation cookie consent: -->
        <link rel="stylesheet" type="text/css" href="//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css" />
        <script src="//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>  
        
        <script src="/acceleo/assets/js/ga.js"></script>

    <!-- FontAwesome Latest version Kit (automatically updated) -->
    <script src="https://kit.fontawesome.com/16cf99803e.js" crossorigin="anonymous"></script>
    <!-- Bootstrap JS -->
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm" crossorigin="anonymous"></script>
    
    <script>
        jQuery(function($){ $(".hasTooltip").tooltip({"html": true,"container": "body"}); });
    </script>
    <!-- Triggers tooltips -->
    <script>
        jQuery(document).ready(function() {
            jQuery('.hasTooltip').tooltip();
        });
    </script>
</head>
  
  <body>

    <!-- Navigation -->
<header id="top-bar" class="navbar navbar-expand-lg fixed-top">
    <div class="container">
        <a class="navbar-brand" href="/acceleo">
            <img src="/acceleo/common_assets/images/logos/logo_acceleo.png" alt="Logo Acceleo">
        </a>
        
        <!-- /logo -->
        <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive"
            aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
            <i class="fa fa-bars"></i>
        </button>
        <nav class="collapse navbar-collapse" id="navbarResponsive">
            <div class="main-menu ml-auto">
                <ul class="nav navbar-nav">
                    <li>
                        <a href="/acceleo/overview.html">Overview</a>
                    </li>
                    <li>
                        <a href="/acceleo/features.html">Features</a>
                    </li>
                    <li>
                        <a href="/acceleo/resources.html">Resources</a>
                    </li>
                    <li>
                        <a href="/acceleo/support.html">Support</a>
                    </li>
                    <li id="dwnld">
                        <a href="/acceleo/download.html">Download</a>
                    </li>
                </ul>
            </div>
        </nav>
    </div>
</header>

    
    <section>
    <div class="container">
        <h2 class="title wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".2s">Community Support</h2> 
<h3 class="wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".3s"></h3>
<p class="wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".4s"></p>



        <div class="row">
            <div class="col-md-12">
                <ul>
                    <li class="wow fadeInLeft" data-wow-delay=".1s"><a href="http://www.eclipse.org/forums/index.php?t=thread&frm_id=24&" target="_blank">M2T Newsgroup</a> - Remember to prefix the subject of your Acceleo-related posts with "[Acceleo]"</li>
                    <li class="wow fadeInLeft" data-wow-delay=".1s"><a href="http://stackoverflow.com/questions/tagged/acceleo" target="_blank">Acceleo on Stackoverflow</a> - Remember to tag your questions with the Acceleo tag</li>
                    <li class="wow fadeInLeft" data-wow-delay=".1s"><a href="https://bugs.eclipse.org/bugs/buglist.cgi?classification=Modeling&product=Acceleo&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED" target="_blank">Acceleo Bugzilla</a> - Review and create Bugzilla entries</li>
                </ul>
            </div>
        </div>
    </div>
</section>

<section class="bg_lightest_grey">
    <div class="container">
        <h2 class="title wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".2s">Professional Services</h2> 
<h3 class="wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".3s"></h3>
<p class="wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".4s"></p>



        <div class="row">
            <div class="col-md-12">
                <p class="wow fadeInDown" data-wow-delay=".1s">Obeo, creator of Acceleo, provides professional services to help you produce and maintain generators of industrial grade:</p>
                <ul>
                    <li class="wow fadeInLeft" data-wow-delay=".1s"><a href="https://www.obeosoft.com/en/services/support-maintenance" target="_blank">Support & maintenance</a></li>
                    <li class="wow fadeInLeft" data-wow-delay=".2s"><a href="https://www.obeosoft.com/en/services/training" target="_blank">Training</a></li>
                    <li class="wow fadeInLeft" data-wow-delay=".3s"><a href="https://www.obeosoft.com/en/services/coaching" target="_blank">Consulting & coaching</a></li>
                    <li class="wow fadeInLeft" data-wow-delay=".4s"><a href="https://www.obeosoft.com/en/services/custom-development" target="_blank">Custom development</a></li>
                </ul>
            </div>
        </div>
    </div>       
</section>

<footer>
  <div class="container">
      <div class="row">    
        
<div class="col-md-3">
    <p><a href="http://www.eclipse.org/"  target="_blank"><img src="/acceleo/common_assets/images/logos/logo-eclipse-foundation.png" alt="Eclipse Foundation logo"></a></p>
    <p id="copyright">Copyright © 2021 Eclipse Foundation, Inc.<br>All Rights Reserved.</p>
</div>

<div class="col-md-3">
    <h6>Eclipse Foundation</h6>
    <ul>
        <li><a href="http://www.eclipse.org/legal/privacy.php" target="_blank">Privacy Policy</a></li>
        <li><a href="http://eclipse.org/" target="_blank">Eclipse</a></li>
        <li><a href="http://www.eclipse.org/legal/termsofuse.php" target="_blank">Terms of Use</a></li>
        <li><a href="http://www.eclipse.org/legal/copyright.php" target="_blank">Copyright Agent</a></li>
        <li><a href="http://www.eclipse.org/legal/" target="_blank">Legal</a></li>
        <li><a href="http://www.eclipse.org/org/foundation/contact.php" target="_blank"> Contact Us</a></li>
    </ul>
</div>

        
<div class="col-md-3">
    <h6>Project Links</h6>
    <ul>
        <li><a href="https://projects.eclipse.org/projects/modeling.m2t.acceleo" target="_blank">About this project</a></li>
        <li><a href="http://wiki.eclipse.org/Acceleo" target="_blank">Wiki</a></li>
        <li><a href="https://www.eclipse.org/forums/index.php?t=thread&frm_id=24&" target="_blank">Forum</a></li>
        <li><a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=VERIFIED&list_id=9161179&product=Acceleo&query_format=advanced" target="_blank">Bugs</a></li>
        <li><a href="https://projects.eclipse.org/projects/modeling.m2t.acceleo/developer" target="_blank">Source Code</a></li>
    </ul>
</div>
    </div>
  </div>
</footer>

    
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js" integrity="sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ" crossorigin="anonymous" defer></script>

<script src="/acceleo/common_assets/js/wow.min.js" defer></script>
<script src="/acceleo/common_assets/js/main.js" defer></script>
<script src="/acceleo/common_assets/js/magnific-popup.min.js" defer></script>
<script src="/acceleo/common_assets/js/magnific-popup.video.js" defer></script>
<!-- Call wow function -->
<script>
        jQuery(document).ready(function(){
            "use strict";
            new WOW().init();
            jQuery('.smooth-scroll').scrollingTo();

            var url = window.location;
            // Will only work if string in href matches with location
            jQuery('ul.nav a[href="'+ url +'"]').parent().addClass('active');

            // Will also work for relative and absolute hrefs
            jQuery('ul.nav a').filter(function() {
                return this.href == url;
            }).parent().addClass('active');

            jQuery(".nav a").on("click", function(){
                jQuery(".nav").find(".active").removeClass("active");
                jQuery(this).parent().addClass("active");
            });
        });
</script>
  
  </body>
</html>
