CATL and Solarpro Technology AD recently commissioned Bulgaria’s largest battery energy storage

2026-05-26

CATL, in collaboration with Solarpro Technology AD, has successfully connected a 602 MWh large-scale battery energy storage project in Bulgaria to the country's electricity grid. Located in Burgas, Bulgaria, the new facility marks a major milestone in the country's energy transition and increases its total energy storage capacity by 10%. It also strengthens the integration of renewable energy sources such as wind and solar while supporting the reliable and stable operation of the national power system.

Solarpro Technology AD led the engineering, procurement and construction, as well as the full integration of the battery energy storage system. "This project reflects the strong partnership between Solarpro Technology AD and CATL. Delivering what is currently the largest operational battery energy storage facility in Eastern Europe required close technical collaboration. The combination of CATL's advanced energy storage technology with Solarpro's efficient integration made it possible to bring the facility into operation quickly and reliably,"commented Adelin Antonov, CEO and Board Member at Solarpro Technology AD.

lQLPKeiYS6lAvUHNA_nNBk-wxFld6a2h-IoJ689ziPNcAA_1615_1017.png_720x720q90.png

The project is powered by CATL's TENER energy storage system, the world's first 6MWh-class zero-degradation solution. Designed to deliver maximum capacity within a compact footprint, the system reduces land use by 20% while maintaining exceptional safety, performance and long-term durability. TENER achieves zero degradation in both capacity and power during the first year of operation, improving project economics with an increase of 1.13% in Internal Rate of Return. The system also offers advanced corrosion and seismic resistance, making it highly suited for demanding operational environments.

7af41efa8abb484182ba67d2fd99bcb1.png

"Solarpro is a leading force in Eastern Europe's renewable grid integration, and their strong engineering and construction capabilities make them the ideal partner to deploy CATL's TENER zero‑degradation technology at scale. This project shows what's possible when world‑class battery innovation meets exceptional local execution. With this momentum, we look forward to deepening our partnership and bringing the first Tener Stack solution to Eastern Europe," said Amanda Xu, CTO ESS and President of ESS Europe CATL.

Building on the strong cooperation, CATL and Solarpro Technology AD plan to further expand their energy storage collaboration over the next two years, supporting the acceleration of clean energy development in Bulgaria and across the region.


FreeMarker template error (DEBUG mode; use RETHROW in production!): Template inclusion failed (for parameter value "inc_footer.html"): There was an error loading the template on an earlier attempt; see cause exception. ---- FTL stack trace ("~" means nesting-related): - Failed at: #include "inc_footer.html" [in template "1/en/news_detail.html" at line 103, column 5] ---- Java stack trace (for programmers): ---- freemarker.core._MiscTemplateException: [... Exception message was already printed; see it above ...] at freemarker.core.Include.accept(Include.java:164) at freemarker.core.Environment.visit(Environment.java:330) at freemarker.core.Environment.visit(Environment.java:336) at freemarker.core.Environment.process(Environment.java:309) at freemarker.template.Template.process(Template.java:384) at com.yongsycms.common.file.FtpFileHandler$12.doInFtp(FtpFileHandler.java:279) at com.yongsycms.common.file.FtpTemplate.execute(FtpTemplate.java:58) at com.yongsycms.common.file.FtpFileHandler.storeFile(FtpFileHandler.java:267) at com.yongsycms.core.html.PInfo.doMakeHtml(PInfo.java:103) at com.yongsycms.core.html.PInfo.makeHtml(PInfo.java:49) at com.yongsycms.core.html.HtmlServiceImpl.makeInfo(HtmlServiceImpl.java:54) at com.yongsycms.core.html.HtmlServiceImpl$$FastClassBySpringCGLIB$$24e8782f.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671) at com.yongsycms.core.html.HtmlServiceImpl$$EnhancerBySpringCGLIB$$2f8127d3.makeInfo() at com.yongsycms.core.service.impl.InfoServiceImpl.updateHtml(InfoServiceImpl.java:703) at com.yongsycms.core.service.impl.InfoServiceImpl.pass(InfoServiceImpl.java:455) at com.yongsycms.core.service.impl.InfoServiceImpl$$FastClassBySpringCGLIB$$19b57d5a.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671) at com.yongsycms.core.service.impl.InfoServiceImpl$$EnhancerBySpringCGLIB$$4ad34a34.pass() at com.yongsycms.core.web.back.InfoController.auditPass(InfoController.java:465) at com.yongsycms.core.web.back.InfoController$$FastClassBySpringCGLIB$$5710a18f.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.apache.shiro.spring.security.interceptor.AopAllianceAnnotationsAuthorizingMethodInterceptor$1.proceed(AopAllianceAnnotationsAuthorizingMethodInterceptor.java:82) at org.apache.shiro.authz.aop.AuthorizingMethodInterceptor.invoke(AuthorizingMethodInterceptor.java:39) at org.apache.shiro.spring.security.interceptor.AopAllianceAnnotationsAuthorizingMethodInterceptor.invoke(AopAllianceAnnotationsAuthorizingMethodInterceptor.java:115) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671) at com.yongsycms.core.web.back.InfoController$$EnhancerBySpringCGLIB$$76891507.auditPass() at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:849) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:760) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:112) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at com.yongsycms.core.support.BackSiteFilter.doFilter(BackSiteFilter.java:50) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:178) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.yongsycms.core.support.CsrfFilter.doFilterInternal(CsrfFilter.java:25) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:130) at org.springframework.boot.web.support.ErrorPageFilter.access$000(ErrorPageFilter.java:66) at org.springframework.boot.web.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:105) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:123) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Caused by: java.io.IOException: There was an error loading the template on an earlier attempt; see cause exception. at freemarker.cache.TemplateCache.newIOException(TemplateCache.java:485) at freemarker.cache.TemplateCache.throwLoadFailedException(TemplateCache.java:501) at freemarker.cache.TemplateCache.getTemplateInternal(TemplateCache.java:361) at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:292) at freemarker.template.Configuration.getTemplate(Configuration.java:2750) at freemarker.core.Environment.getTemplateForInclusion(Environment.java:2540) at freemarker.core.Include.accept(Include.java:162) ... 133 more Caused by: freemarker.core.ParseException: Syntax error in template "1/en/inc_footer.html" in line 71, column 21: Encountered "[/#list]", but was expecting one of: <_INCLUDE> "${" "#{" "[=" at freemarker.core.FMParser.generateParseException(FMParser.java:5768) at freemarker.core.FMParser.jj_consume_token(FMParser.java:5627) at freemarker.core.FMParser.UnifiedMacroTransform(FMParser.java:2873) at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3457) at freemarker.core.FMParser.MixedContentElements(FMParser.java:3812) at freemarker.core.FMParser.If(FMParser.java:1663) at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3422) at freemarker.core.FMParser.MixedContentElements(FMParser.java:3812) at freemarker.core.FMParser.List(FMParser.java:1784) at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3426) at freemarker.core.FMParser.MixedContentElements(FMParser.java:3812) at freemarker.core.FMParser.UnifiedMacroTransform(FMParser.java:2872) at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3457) at freemarker.core.FMParser.MixedContentElements(FMParser.java:3812) at freemarker.core.FMParser.Escape(FMParser.java:3236) at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3528) at freemarker.core.FMParser.MixedContentElements(FMParser.java:3812) at freemarker.core.FMParser.Root(FMParser.java:4458) at freemarker.template.Template.(Template.java:253) at freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:549) at freemarker.cache.TemplateCache.getTemplateInternal(TemplateCache.java:439) at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:292) at freemarker.template.Configuration.getTemplate(Configuration.java:2750) at freemarker.core.Environment.getTemplateForInclusion(Environment.java:2540) at freemarker.core.Include.accept(Include.java:162) at freemarker.core.Environment.visit(Environment.java:330) at freemarker.core.Environment.visit(Environment.java:336) at freemarker.core.Environment.process(Environment.java:309) at freemarker.template.Template.process(Template.java:384) at com.yongsycms.common.file.FtpFileHandler$12.doInFtp(FtpFileHandler.java:279) at com.yongsycms.common.file.FtpTemplate.execute(FtpTemplate.java:58) at com.yongsycms.common.file.FtpFileHandler.storeFile(FtpFileHandler.java:267) at com.yongsycms.core.html.PNode.doMakeHtml(PNode.java:93) at com.yongsycms.core.html.PNode.makeHtml(PNode.java:45) at com.yongsycms.core.html.HtmlServiceImpl.makeNode(HtmlServiceImpl.java:172) at com.yongsycms.core.html.HtmlServiceImpl$$FastClassBySpringCGLIB$$24e8782f.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671) at com.yongsycms.core.html.HtmlServiceImpl$$EnhancerBySpringCGLIB$$2f8127d3.makeNode() at com.yongsycms.core.html.HtmlGeneratorImpl$1.run(HtmlGeneratorImpl.java:33)