Asset Publisher

An error occurred while processing the template.
The following has evaluated to null or missing:
==> FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) [in template "252001#252047#252845" at line 128, column 37]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: dMTJsonObject = FrontendService.media... [in template "252001#252047#252845" at line 128, column 21]
----
1<#-- used @ Veranstaltung-Detailseite Intro 
2 used @ Publikation-Detailseite Intro 
3--> 
4 
5<#-- 
6Web content templates to display teaser on thema detail page 
7 
8Generic template for detail pages Intro / Teaser element 
9--> 
10<#-- 
11Display the current page title 
12--> 
13<#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" /> 
14<#include "${fullTemplatesPath}/macros/debugging.ftl" /> 
15 
16<#include "${fullTemplatesPath}/macros/page-modules/PMIntro.ftl" /> 
17<#include "${fullTemplatesPath}/macros/atomic-modules/AMPublicationCarousel.ftl" /> 
18<#include "${fullTemplatesPath}/macros/atomic-modules/AMMetadata.ftl" /> 
19<#include "${fullTemplatesPath}/macros/atomic-modules/AMDatetime.ftl" /> 
20 
21 
22<#-- 
23 renders the Intro for nearly all Pages 
24 TODO: remove Share? (was in the designs, but not anymore?) 
25 TODO: check if languageSelect/filter are working (js) 
26 
27 - portletId 
28 - data = { 
29 "media": string (src from image), 
30 "category": string, 
31 "title": string, 
32 "author": string, 
33 "subheadline": string, 
34 "copy": string, 
35 "filter": { 
36 "id": string, 
37 "name": string, 
38 "entries": Array<Object> ({key:value}), 
39 }, 
40 "languageSelect": { 
41 "id": string, 
42 "name": string, 
43 "entries": Array<Object> ({key:value}), 
44 }, 
45 "meta": { 
46 "pos"; string (top/bottom) 
47 "date": string, 
48 "hash": string, 
49 "info": string, (url) 
50 }, 
51 "share" : { 
52 "login": string, 
53 "print": string, 
54 "mail": string, 
55 "multishare": string?? (tbd) 
56
57 - AMMetadata: macro 
58 - position: String ("top") -> defines wether the meta-data should be rendered above or below the intro-content 
59
60--> 
61 
62<#assign 
63 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
64 
65 ServiceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() 
66 DLAPP = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService") 
67 
68 themeDisplay = ServiceContext.getThemeDisplay() 
69 editmode = FrontendService.user.isPrivilegedUser(themeDisplay) 
70 
71 languageId = themeDisplay.getLocale() 
72 groupId = themeDisplay.getScopeGroupId() 
73 currentUrl = themeDisplay.getURLCurrent() 
74 
75 layout = themeDisplay.getLayout() 
76 layouttpl = layout.getTypeSettingsProperties().getProperty("layout-template-id") 
77/> 
78 
79<#setting locale="${languageId}"> 
80 
81<#-- get article from url --> 
82 
83<#assign entry = FrontendService.article.getArticleToUrl(currentUrl, groupId?number)! > 
84 
85 
86<#if entry?has_content> 
87 
88 <#if entry.resourcePrimKey??> 
89 <#assign primaryKey = entry.resourcePrimKey?number > 
90 <#elseif entry.classPK??> 
91 <#assign primaryKey = entry.classPK?number > 
92 </#if> 
93 
94 <#assign 
95 jsonString = FrontendService.article.getWebcontent(primaryKey) 
96 json = FrontendService.json.parseAsJson(jsonString) 
97 availablelanguages = FrontendService.article.getAssetEntryToUrl(primaryKey).getAvailableLanguageIds() 
98 
99 title = entry.getTitle(languageId) 
100 data = { 
101 "title": title 
102
103 /> 
104 <@debugJsonString jsonString "ADT_KASDE_DYNAMIC_INTRO" /> 
105 
106 <#if hasContent('untertitel', languageId, json)> 
107 <#assign data = data + { "subheadline": getValueForLanguage('untertitel', languageId, json, "first") } > 
108 </#if> 
109 
110 <#if hasContent('beschreibung', languageId, json)> 
111 <#assign data = data + { "copy": getValueForLanguage('beschreibung', languageId, json, "first") } > 
112 </#if> 
113 
114 <#-- fill meta data --> 
115 <#assign meta = {} /> 
116 
117 <#-- PUBLIKATIONEN DETAIL --> 
118 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")> 
119 
120 <#if hasContent('coverDMTKASDEMEDIUM', languageId, json)> 
121 <#assign 
122 coverBildString = getValueForLanguage('coverDMTKASDEMEDIUM', languageId, json, "first") 
123 /> 
124 
125 <#if coverBildString?has_content> 
126 <#assign 
127 coverBild = FrontendService.json.parseAsJson(coverBildString) 
128 dMTJsonObject = FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) 
129 linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',coverBild.groupId?number, coverBild.uuid ) 
130 data = data + { "media": linkToDMT, "meta" : dMTJsonObject } 
131 /> 
132 <#if dMTJsonObject.altText?? > 
133 <#assign data = data + {"alt" : dMTJsonObject.altText} /> 
134 </#if> 
135 <#if dMTJsonObject.quelle??> 
136 <#assign meta = meta + { "quelle": dMTJsonObject.quelle } /> 
137 </#if> 
138 </#if> 
139 <#-- uncomment to display pdf cover as Intro Image 
140 <#elseif hasContent('document_pdfDMTBASICDOCUMENT', languageId, json)> 
141 <#assign 
142 pdfDocument = getValueForLanguage('document_pdfDMTBASICDOCUMENT', languageId, json, "first") 
143 fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, groupId?number)!/> 
144 <#if fileEntry?has_content> 
145 <#assign 
146 linkToThumbnail = FrontendService.link.getThumbnailSrc(fileEntry , themeDisplay) 
147 data = data + { "media": linkToThumbnail } 
148 /> 
149 </#if> 
150 --> 
151 </#if> 
152 
153 <#assign 
154 meta = meta + { "orderInfo": "true" } 
155 verbundJournalArticle = FrontendService.publication.getVerbundToPublikation( entry )!"" 
156 /> 
157 
158 
159 
160 <#if hasContent('erscheinungsdatum', languageId, json)> 
161 <#assign 
162 erscheinungsdatum = getValueForLanguage('erscheinungsdatum', languageId, json, "first") 
163 /> 
164 <#if erscheinungsdatum?has_content > 
165 <#assign 
166 erscheinungsdatumFormatted = FrontendService.date.getDateFormatLong( erscheinungsdatum, languageId ) 
167 meta = meta + { "date": erscheinungsdatumFormatted } 
168 /> 
169 </#if> 
170 </#if> 
171 
172 <#if verbundJournalArticle?has_content> 
173 <#assign 
174 verbundJsonString = FrontendService.article.getWebcontent(verbundJournalArticle.resourcePrimKey) 
175 verbundJson = FrontendService.json.parseAsJson(verbundJsonString) 
176 laufendenummer = getValueForLanguage('laufendenummer', languageId, verbundJson, "first") 
177 coverImg = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, verbundJson, "first") 
178 /> 
179 <@debugJsonString verbundJsonString "ADT_KASDE_DYNAMIC_INTRO-verbundJournalArticle" /> 
180 <#assign meta = meta + { "laufendenummer": laufendenummer } > 
181 
182 <#if coverImg?has_content && coverImg.url?has_content > 
183 <#assign meta = meta + { "coverImg": coverImg.url } > 
184 </#if> 
185 </#if> 
186 
187 
188 <#if meta?has_content> 
189 <#assign data = data + {"meta": meta } > 
190 </#if> 
191 
192 </#if> 
193 <#-- PUBLIKATIONEN DETAIL END --> 
194 
195 
196 <#-- VERANSTALTUNGEN DETAIL --> 
197 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")> 
198 <#assign 
199 friendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, languageId, groupId)!"" 
200 links = [] 
201 /> 
202 <#if availablelanguages?has_content && friendlyUrl?has_content> 
203 <#if (availablelanguages?size > 1) > 
204 <#list availablelanguages as language> 
205 <#assign 
206 defaultLanguage = "de_DE" 
207 defaultLocale = FrontendService.language.getLocaleByKey(defaultLanguage) 
208 linkLocale = (FrontendService.language.getLocaleByKey(language))!defaultLocale 
209 langFriendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, linkLocale, groupId) 
210 
211 link = { 
212 "key": language!defaultLanguage, 
213 "value": linkLocale.getDisplayLanguage(languageId), 
214 "url": "/c/portal/update_language?p_l_id=" + 
215 layout.plid + "&redirect=" + langFriendlyUrl + 
216 "&languageId=" + language 
217
218 /> 
219 <#if language == languageId> 
220 <#assign link = link + { "selected": "true" } > 
221 </#if> 
222 <#assign links = links + [link]> 
223 </#list> 
224 <#assign 
225 data = data + { 
226 "languageSelect": { 
227 "id": "languageSelectRedirect", 
228 "name": "languageselectRedirect", 
229 "entries": links, 
230 "label": languageUtil.get(languageId, "diese.veranstaltung.ist.in.weiteren.sprachen.verfuegbar") 
231
232
233 /> 
234 </#if> 
235 </#if> 
236 </#if> 
237 
238 <#if hasContent('erscheinungsdatum', languageId, json)> 
239 <#assign 
240 startdate = getValueForLanguage('erscheinungsdatum', languageId, json, "first") 
241 meta = meta + { "start": startdate?date.iso, "end": "" } 
242 /> 
243 </#if> 
244 
245 <#if hasContent('startdatum', languageId, json)> 
246 <#assign 
247 startdate = getValueForLanguage('startdatum', languageId, json, "first") 
248 meta = meta + { "start": startdate?date.iso, "end": "" } 
249 /> 
250 </#if> 
251 
252 <#if hasValue('einfuehrungText', locale, json)> 
253 <#assign data = data + { "einfuehrungText" : getValueForLanguage('einfuehrungText', locale, json, "first") } > 
254 <#elseif hasValue(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first")> 
255 <#assign data = data + { "einfuehrungText" : getValueForLanguage(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first") } > 
256 </#if> 
257 
258 <#if hasContent('endedatum', languageId, json)> 
259 <#assign 
260 enddate = getValueForLanguage('endedatum', languageId, json, "first") 
261 meta = meta + { "end": enddate?date.iso } 
262 /> 
263 </#if> 
264 
265 <#if hasContent('startzeit', languageId, json)> 
266 <#assign 
267 startzeit = getValueForLanguage('startzeit', languageId, json, "first") 
268 /> 
269 <#if startzeit?has_content > 
270 <#assign meta = meta + { "startzeit": startzeit } /> 
271 </#if> 
272 </#if> 
273 
274 <#if hasContent('endezeit', languageId, json)> 
275 <#assign 
276 endezeit = getValueForLanguage('endezeit', languageId, json, "first") 
277 meta = meta + { "endezeit": endezeit } 
278 /> 
279 </#if> 
280 
281 <#if hasContent('ortWCSKASDEORT', languageId, json)> 
282 <#assign 
283 ortWCSKASDEORT = FrontendService.json.parseAsJson(getValueForLanguage('ortWCSKASDEORT', languageId, json, "first")) 
284 ortWCSKASDEORTPrimaryKey = ortWCSKASDEORT.classPK?number 
285 ortWCSKASDEORTWebContent = FrontendService.article.getWebcontentByPk(ortWCSKASDEORTPrimaryKey)!"" 
286 /> 
287 <#if ortWCSKASDEORTWebContent?has_content > 
288 <#assign 
289 ortWCSKASDEORTTitle = ortWCSKASDEORTWebContent.getTitle(languageId)!"" 
290 /> 
291 <#if ortWCSKASDEORTTitle?has_content > 
292 <#assign 
293 meta = meta + { "ortWCSKASDEORT": ortWCSKASDEORTTitle } 
294 /> 
295 </#if> 
296 </#if> 
297 </#if> 
298 
299 
300 <#if hasContent('veranstaltungsnummer', languageId, json)> 
301 <#assign 
302 verauuid = getValueForLanguage('veranstaltungsnummer', languageId, json, "first") 
303 meta = meta + { "verauuid": verauuid } 
304 /> 
305 </#if> 
306 
307 
308 <#if (data.meta)?has_content > 
309 <#assign meta = data.meta /> 
310 </#if> 
311 
312 <#if !(data.media)?has_content && hasContent('mediumDMTKASDEMEDIUM', languageId, json)> 
313 <#assign 
314 medium = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, json, "first") 
315 mediaData = getRelatedMediaObject(medium, themeDisplay, languageId, FrontendService, "hd-resolution") 
316 /> 
317 <#assign data = data + { "media": mediaData.url , "meta" : mediaData.meta} > 
318 
319 
320 <#if mediaData.meta?? && mediaData.meta.quelle??> 
321 <#assign meta = meta + data.meta + { "quelle": mediaData.meta.quelle } /> 
322 </#if> 
323 </#if> 
324 
325 
326 <#if meta?has_content> 
327 <#assign data = data + {"meta": meta } > 
328 </#if> 
329 
330 <#-- END fill meta data --> 
331 
332 <#if hasContentForSequence('autorenWCSKASDEPERSON', languageId, json)> 
333 <#assign 
334 journalArticles = getValueForLanguageAnsprechpartner('autorenWCSKASDEPERSON', languageId, json) 
335 authors = [] 
336 /> 
337 <#list journalArticles as articleString> 
338 <#assign article = FrontendService.json.parseAsJson(articleString) /> 
339 <#if article?has_content && article?is_hash && article.classPK??> 
340 <#assign articleDereferenced = FrontendService.person.resolveContactInstanceToPerson(article, languageId)!"" /> 
341 <#if articleDereferenced?has_content > 
342 <#assign 
343 author = "" 
344 articlePrimaryKey = articleDereferenced.classPK?number 
345 articleJsonString = FrontendService.article.getWebcontent(articlePrimaryKey) 
346 articleJson = FrontendService.json.parseAsJson(articleJsonString) 
347 /> 
348 <@debugJsonString articleJsonString "ADT_KASDE_DYNAMIC_INTRO-autorenWCSKASDEPERSON" /> 
349 <#if hasValue('anredetitel', languageId, articleJson)> 
350 <#assign author = author + getValueForLanguage('anredetitel', languageId, articleJson, " ") + " "> 
351 </#if> 
352 <#if hasValue('vorname', languageId, articleJson)> 
353 <#assign author = author + getValueForLanguage('vorname', languageId, articleJson, " ") + " "> 
354 </#if> 
355 <#if hasValue('nachname', languageId, articleJson)> 
356 <#assign author = author + getValueForLanguage('nachname', languageId, articleJson, " ") + " "> 
357 </#if> 
358 
359 <#attempt> 
360 <#assign href = FrontendService.article.getFriendlyUrl(articlePrimaryKey, languageId, groupId)!"#" > 
361 <#recover> 
362 <#assign href = "#" > 
363 </#attempt> 
364 <#if href?has_content && href != "#" && href != "/_404"> 
365 <#assign author = '<a href="' + href + '">' + author?trim + '</a>'> 
366 </#if> 
367 
368 <#assign authors = authors + [author?trim]> 
369 </#if> 
370 </#if> 
371 </#list> 
372 <#if authors?has_content> 
373 <#assign data = data + { "author": authors?join(", ") } > 
374 </#if> 
375 </#if> 
376 
377 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL") > 
378 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "VERANSTALTUNGSTYP")! > 
379 <#if categories?has_content && categories[0]?has_content > 
380 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } > 
381 </#if> 
382 
383 <#if hasContent('ausgebucht', languageId, json)> 
384 <#assign data = data + { "ausgebucht" : getValueForLanguage('ausgebucht', languageId, json, "first") }> 
385 </#if> 
386 
387 <#if hasContent('storniert', languageId, json)> 
388 <#assign data = data + { "storniert" : getValueForLanguage('storniert', languageId, json, "first") }> 
389 </#if> 
390 
391 <#elseif layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL") > 
392 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "PUBLIKATIONSREIHE")! > 
393 <#if categories?has_content && categories[0]?has_content > 
394 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } > 
395 </#if> 
396 <#else> 
397 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "THEMA")! > 
398 <#if categories?has_content && categories[0]?has_content > 
399 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } > 
400 </#if> 
401 </#if> 
402 
403 
404 <#assign 
405 languages = [] 
406 /> 
407 
408 <#attempt> 
409 <#if json["document_pdfDMTBASICDOCUMENT"]?? > 
410 <#if availablelanguages?has_content> 
411 <#list availablelanguages as pdf_language> 
412 <#assign 
413 docRefJson = getValueForLanguage('document_pdfDMTBASICDOCUMENT', pdf_language, json, "first") 
414 docRef = FrontendService.json.parseAsJson(docRefJson) 
415 /> 
416 <#if docRef?is_hash && pdf_language != languageId > 
417 <#assign 
418 lang = FrontendService.language.getLocaleByKey(pdf_language)!"" 
419 docGroupId = docRef["groupId"]?number 
420 docUuid = docRef["uuid"] 
421 dMTJsonObject = FrontendService.media.getDMTJsonObject( docGroupId, docUuid, locale ) 
422 dMTLink = FrontendService.media.getLinkToDMT( dMTJsonObject ) 
423 /> 
424 <#if lang?has_content> 
425 <#assign 
426 languages = languages + [ 
427
428 "key": pdf_language, 
429 "value": FrontendService.language.getLocaleByKey(pdf_language).getDisplayLanguage(), 
430 "url": dMTLink 
431 }] 
432 /> 
433 </#if> 
434 </#if> 
435 </#list> 
436 </#if> 
437 </#if> 
438 <#recover> 
439 </#attempt> 
440 
441 <#if (languages?size > 0)> 
442 <#attempt> 
443 <#assign 
444 data = data + { "languageSelect": { 
445 "id": "languageSelect", 
446 "name": "languageselect", 
447 "entries": languages, 
448 "documents": "", 
449 "button": "true" 
450 }} 
451 /> 
452 <#recover> 
453 </#attempt> 
454 </#if> 
455 
456 <@PMIntro "ADT_KASDE_DYNAMIC_INTRO" data AMMetadata AMDatetime "bottom" /> 
457 ${FrontendService.article.getEditArticleHtml(primaryKey, themeDisplay)} 
458 
459 <#if data.meta?has_content> 
460 <#if data.meta.laufendenummer?has_content !isACColorScheme() && !isVLCColorScheme() && !isDPMColorScheme()> 
461 <div>  
462 <div id="publicationVerbundPagination"> 
463 <@AMPublicationCarousel data.meta.laufendenummer data.meta.date data.meta.coverImg /> 
464 </div> 
465 </div> 
466 </#if> 
467 </#if> 
468 
469<#elseif (editmode?? && editmode)> 
470 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_DYNAMIC_INTRO" layouttpl currentUrl /> 
471</#if> 

Asset Publisher

 

Weg zum Handshake

 

Kenia kam auch nach der Wiederholung der Präsidentenwahl Ende 2017 nicht zur Ruhe . Nachdem die oppositionelle NASA-Allianz die Wiederholungswahl boykottiert hatte und die Wiederwahl Präsident Kenyattas folglich nicht anerkannte, blieb die politische, soziale und ökonomische Lage in Kenia angespannt. Am sichtbarsten wurde dies durch einen in den Hochburgen der Opposition durchaus befolgter Boykott wichtiger Firmen und die Vereidigung des Oppositionsführers Raila Odinga zum parallelen Präsident am 30.1.2018. Die Reaktionen der Regierung, welche rechtsstaatliche Standards wiederholt verletzten, trugen zu einer Zuspitzung der Lage bei. Aber auch von außen geriet Kenia unter Druck, was vor allem durch eine Zurückhaltung von Investoren sichtbar wurde, welche in der unklaren Lage Investitionen in Kenia aufschoben oder ganz absagten. In dieser Lage, in welcher weitere Eskalationen jederzeit möglich schienen, übte die internationale Gemeinschaft erheblichen Druck auf Regierung und Opposition aus, doch zu einer Lösung zu kommen. Westliche Botschaften nahmen dabei vor allem Oppositionsführer Odinga und seine NASA-Allianz ins Visier, da diese verfassungsmäßig vorgegebenen Lösungen im Wege stünden. Auch wenn dies nicht offiziell bestätigt wurde, standen offenbar personenbezogene Sanktionen gegen die Anführer der NASA-Allianz im Raum.

 

Es ist dabei ein offenes Geheimnis, dass es zu jedem Zeitpunkt Gespräche zwischen Anführern der Regierung und der Opposition gab. Die Schlüsselfiguren auf beiden Seiten kennen sich seit Jahren persönlich und haben in verschiedensten Konfigurationen zusammen und gegeneinander gearbeitet. Trotz harter verbaler Attacken und physischer, z.T. tödlicher Gewalt zwischen den jeweiligen Anhängern, bestanden durchgehend persönliche Gesprächskanäle zwischen allen beteiligten Akteuren. Trotzdem war es eine große Überraschung, als am 9.März 2018 der „Handshake“ zwischen Präsident Kenyatta und Raila Odinga bekannt wurde. Dieser fand ausdrücklich nur zwischen diesen beiden Personen statt. Weder Vizepräsident Ruto noch die drei anderen NASA-Anführer waren hieran beteiligt. Es ist davon auszugehen, dass die anderen Akteure in dieser Zeit auch miteinander verhandelt haben und es ist somit wahrscheinlich, dass Odinga unter gewissem Druck stand, entweder selbst zu einer Einigung mit Kenyatta zu kommen oder zu riskieren, durch eine Einigung anderer Politiker an die Seite gedrängt zu werden.

 

Mit diesem Tag war klar, dass die bisherigen politischen Allianzen endgültig der Vergangenheit angehören.

 

 

Struktur der Übereinkunft

 

Die Übereinkunft wurde in Kenia vor allem als Bild bekannt: die beiden bekanntesten Politiker Kenias geben sich vor dem Sitz des Präsidenten die Hand. Dazu gab es ein achtseitiges Dokument mit dem Titel „Building Bridges to a new Kenyan nation“ , das neun Themenfelder für eine Zusammenarbeit und auch eine Struktur dieser Zusammenarbeit anspricht, dabei aber bis zur Beliebigkeit vage bleibt. Konkrete Handlungsabsichten sind aus dem Dokument nicht abzuleiten.

 

Für die Ausarbeitung eines konkreten Programms wurden Martin Kimani (Jubilee) and Paul Mwangi (ODM) beauftragt, welche das „Building of bridges Secretariat“ gemeinsam leiten. Das einzig greifbare Ergebnis ist jedoch bisher nur die Benennung eines 14-köpfigen Komitees, das unter der Leitung der beiden oben genannten Sekretäre konkrete Inhalte der Vereinbarung ausarbeiten soll. Es wird weiterhin öffentlich spekuliert, welche Vereinbarungen nicht veröffentlicht wurden, ob es am Ende etwa um eine weitere Amtszeit Kenyattas oder einen formalen Posten Odingas in der aktuellen Regierung geht.

 

Recht schnell wurde jedenfalls der persönliche Nutzen für Raila Odinga sichtbar. Anfang April wurde er als Sondergesandter der Afrikanischen Union nominiert. Daneben wurde ihm das vor den Wahlen abgezogene Sicherheitspersonal wieder bereitgestellt, dazu bekam er ein bestens gelegenes Büro und sechs (!) neue Dienstwagen zur privaten Verfügung, seiner Frau wurden zwei weitere neue Geländewagen zur Verfügung gestellt.

 

 

Allgemeine Effekte

 

Auch wenn das Abkommen kurzfristig wenig greifbare Resultate gezeigt hat, so hatte es einen immensen Effekt auf die Stimmung im Lande. Die bis dahin mit Händen greifbare Spannung zwischen den verschiedenen (ethnischen-) Gruppen ist einer „Zurück-an-die-Arbeit-Stimmung gewichen. Tatsächlich hat sich die Wirtschaft erholt, im letzten Monat wurden auch große ausländische Investitionen, z.B. von Microsoft und Coca-Cola umgesetzt.

 

Abgesehen vom Effekt auf die Stimmung sind die dem Konflikt zugrunde liegenden Spannungen aber nicht beseitigt. Es wird immer offensichtlicher, dass Präsident Kenyatta es nicht eilig hat, die Vereinbarung mit Inhalt zu füllen. Er bezieht sich öffentlich nicht auf das Abkommen mit Odinga und setzt seine Politik, welche rechtsstaatliche Regelungen sehr weit auslegt und die Opposition nicht schont, bruchlos fort. Odinga erscheint als der schwächere Partner, der das Abkommen politisch braucht und selbst handeln muss, wenn er Inhalte umsetzen will, welche für ihn wichtig sind. Dies wären vor allem Reformen des Wahlrechts und eine Reform der föderalen Ordnung.

 

Dass sich Raila in einer schwachen Position befindet, zeigt Beispielhaft die Affäre um einen seiner engsten Berater, Miguna Miguna. Dieser galt als der Kopf hinter den Widerstandsaktionen der Opposition nach den Wahlen und hat die Vereidigungszeremonie Odingas maßgeblich geplant und durchgeführt. Als Reaktion darauf wurde er im März mit sehr fragwürdigen Methoden außer Landes geschafft. Gegen den Umgang mit einem der Helden der Opposition gab es tagelange Proteste. Nach dem Handshake kehrte Miguna nach Kenia zurück. Hier wurde er aber an der Einreise gehindert und schloss sich medienwirksam einen Tag lang auf einer Toilette im Transferbereich des Flughafens Nairobi ein. Raila suchte ihn dort auf, führte vor Medienvertretern viele Telefongespräche, konnte aber kein freies Geleit für Miguna erreichen. Dieser wurde am Tag darauf offenbar unter Drogen gesetzt und nach Dubai ausgeflogen. Raila äußerte sich dazu in der Folge kaum noch und unterließ klare Gesten der Unterstützung.

 

Dies schwächte Odingas Position in seiner eigenen Partei, der ODM weiter, in welcher er ohnehin unter Druck steht. Denn auch die Partei wurde durch den Handshake vor vollendete Tatsachen gestellt, große Begeisterung hat es nicht ausgelöst, dass der Widerstand der letzten Monate nun, ohne dass sich inhaltlich etwas geändert hätte, zugunsten einer Kooperation mit dem politischen Gegner beendet wird. Die ODM er-wartet nun greifbare Ergebnisse, was in Kenia auch Posten und Ressourcen bedeutet, um sich mit dem Deal zu arrangieren. Dies muss bald geschehen, da es ist mindestens zweifelhaft ist, ob nach den Wahlen 2022 auf dieser Basis weiter eine Machtperspektive besteht.

 

 

Effekt aufs Politische System

 

Nicht nur auf die ODM hat der Handshake immensen Einfluss. Das gesamte Parteiensystem Kenias steht vor dem Umbruch: So ist die schon seit der missglückten Vereidigung Odingas geschwächte NASA-Allianz nun endgültig irrelevant, obwohl sie formal weiterbesteht . Denn Odinga und seine ODM, die mit Abstand größte Partei und Fraktion der NASA-Allianz, verlassen mit dem Übereinkommen mit der Regierung faktisch die Oppositionsbank, obwohl dies nicht formal vollzogen wurde. Die anderen drei Parteien stehen allein da und müssen neue Allianzen suchen. Sehr deutlich wurde dies, als die größere ODM-Fraktion im Senat ihren ehemaligen Alliierten Moses Wetangula (FORD-Kenya) als Minderheitenführer im Senat durch einen ODM-Mann ersetzte.

In der Folge vereinbarten die beiden mehrheitlich von der Ethnie der Luhya unterstützten Parteien ANC und Ford-Kenya eine enge Zusammenarbeit die bis zu einer Fusion gehen könnte. Die Wiper-Party die sich vor allem aus dem Milieu der Kamba speist, nun völlig allein, näherte sich anderen (Klein-)Parteien dieses ethnischen Hintergrunds an, u.a. der Partei des Gouverneurs vom Machakos.

 

Gleichzeitig verdüstert sich für Vizepräsi-dent Ruto die sicher geglaubte Aussicht auf die Nachfolge Kenyattas nach Ende dessen verfassungsmäßig letzter Amtszeit 2022. Die regierende Jubilee-Party ist im Kern eine Allianz zwischen Kenyattas Ethnie der Kikuyu und Rutos Ethnie der Kalenjin. Bisher galt die Absprache, dass Ruto dafür, dass er die Unterstützung der Kalenjin für Kenyatta sichert, 2022 die Unterstützung der Kikuyu für seine Präsidentschaftsambitionen bekommt. Dies scheint nun nicht mehr sicher, da Kenyattas Seite mit Unterstützung der von Odinga mobilisierten Luo kaum noch auf Ruto angewiesen ist.

 

Lachender Dritter ist die ehemalige Einheitspartei KANU, deren Hochburgen ebenfalls im Gebiet der Kalenjin liegen und mit Rutos Umfeld um Einfluss konkurriert. Die KANU ist nach dem Machtverlust Daniel arap Mois in den frühen 2000er Jahren in die zweite Liga der kenianischen Parteien abgestiegen, konnte sich aber in einigen Hochburgen im zentralen Rift-Valley behaupten. Sie ging in den letzten Jahren durch einen Reformprozess und versucht sich mit einem jüngeren und weiblicheren Auftritt moderner zu präsentieren. Ihr Vor-sitzender ist Senator Gideon Moi, der Sohn des ehemaligen Präsidenten. Mit Besuchen bei Moi senior zeigten Odinga und Kenyatta, dass Ruto auch in seinem Hinterhof ersetzt werden kann. Gideon Moi dagegen ließ verkünden, dass er 2022 als Präsident antreten würde. Er mag ein brauchbarer Konsenskandidat einer Allianz Kenyatta/ Odinga gegen Ruto sein.

 

 

Gibt es eine neue Verfassung?

 

Jedoch ist noch nicht einmal klar, ob 2022 überhaupt noch die aktuelle Verfassung gelten wird: Gab es schon vor dem Handshake verschiedenste Forderungen nach Verfassungsänderungen, scheint nun, da es eine großen Mehrheit der mit Abstand stärksten Parteien Jubilee und ODM gibt, alles darauf hinaus zu laufen. So gibt es verschiedene Vorschläge zur Änderung des Wahl-und Regierungssystems. Am prägnantesten ist der Vorschlag zur Einführung eines parlamentarischen Systems mit einem repräsentativen Präsidenten. Dies hat den Charme, dass Präsident Kenyatta den neuen Posten des Premierministers übernehmen könnte, und damit die Macht bewahren würde. Odinga würde sich dagegen im Jahre 2022, wenn er 77 Jahre alt sein wird, gut als repräsentativer Präsident anbieten.

 

Vizepräsident William Ruto hat sich klar gegen Verfassungsänderungen ausgesprochen. Damit steht er aber ziemlich allein. Denn auch der Vorsitzende des einflussreichen Gewerkschaftsverbands und die protestantischen Kirchen haben sich in verschiedener Form für eine Änderung des Regierungssystems und eine bleibende Rolle Kenyattas ausgesprochen. Dabei ist allerdings zu beachten, dass die Wahlkommission, die ein nötiges Referendum vorbereiten und durchführen müsste, aktuell aufgrund von Rücktritten nicht das nötige Quorum für eine Beschlussfähigkeit erfüllt und es keine Regelung zu einer Nachbesetzung gibt. Vor einem Referendum müsste also dieses Problem angegangen werden.

 

 

Handshake & Dezentralisierung: Zwischen Fluch und Segen

 

Der Handshake zwischen Präsident Uhuru Kenyatta und Raila Odinga ist inzwischen fixer Bestandteil des politisch-historischen Vokabulars in Kenia geworden. Als am 9. März beide Politiker ihren Handschlag vollzogen haben, fragten sich Beobachter, was dies für die Dezentralisierung (Devolution) im Land und ihre weitere Entwicklung bedeutet. Der Präsident und Jubilee gelten tendenziell als skeptisch gegenüber der Dezentralisierung bzw. einer weiteren Ausweitung der lokalen Autonomie, während Odinga – nicht ohne politisches Eigeninteresse - immer als Befürworter eines umfangreichen, dezentralen Regierungssystems auftrat.

Und tatsächlich findet sich in der gemein-samen Erklärung ein ganzes Kapitel zu Devolution, das als klares Bekenntnis zum dezentralisierten Staatsaufbau zu bewerten ist. Darin betonen die beiden Politiker u.a. eine gemeinsame Herangehensweise, um die Counties zusammenzubringen, deren Dienstleistungen an die Bürger sicherzustellen und ihre Zusammenarbeit für eine verbesserte ökonomische Lebensfähigkeit zu unterstützen.

 

Die unmittelbarste Auswirkung auf die Dezentralisierung durch diese Annäherung ist die Entspannung des allgemeinen, politischen Klimas, da dadurch die Friktionen zwischen Counties, die als Hochburgen der Opposition gelten und der nationalen Regierung abgebaut wurden. Das ist auf den 1. Blick positiv, da andauernde Spannungen zwischen den beiden politischen Lagern negative Auswirkungen auf die Counties gehabt hätten.

 

 

Big Four: Der Wolf im Schafspelz?

 

Trotzdem lohnt es sich bei der Bewertung des Handshakes auf die Dezentralisierung einen 2. Blick zu wagen.

 

Nach knapp 3 Monaten lichtet sich der Nebel um die konkreten Abmachungen, die hinter der Vereinbarung stehen. So gibt es ein klares Bekenntnis von Odinga zur entwicklungspolitischen Flaggschiff-Initiative des Präsidenten für die kommenden Jahre. Die sogenannte „Big Four Agenda“ ist insofern für die Devolution relevant, als dass zwei der vier Bestandteile massiv dezentralisierte Verantwortungsbereiche berühren. Dazu zählt das Gesundheitswesen, welches zu 90% Angelegenheit der Lokalregierungen ist, sowie Ernährungssicherheit, wobei hier der Landwirtschaftssektor bedeutend ist und der in der Verfassung ebenfalls umfassend in die Verantwortung der Counties übertragen wurde.

 

Die präsidentielle Initiative hat das Potential, die Autonomie der Lokalregierungen einzuschränken, da sie massiv in deren Bereiche eingreift. Bisher scheint es von Seiten der sonst sehr lautstark auftretenden Gouverneure keinen Widerstand zu geben. Andererseits kann argumentiert werden, dass der Präsident auf die Counties angewiesen ist, um seine Ziele zu erreichen, was diese wiederum stärken könnte. Am Ende dürfte aber Odinga Sorge tragen, dass es aus seinen Hochburgen keine allzu großen Widerstände gibt.

 

 

Neue Regierungsebene: Tendenz zur Re-Zentralisierung

 

Ende April überraschte Raila Odinga im Zuge der Dezentralisierungskonferenz in Kakamega mit dem Vorschlag, durch eine Verfassungsänderung eine neue Regierungsebene zwischen der nationalen und der County Ebene einzuziehen. So sollen 8 bis 14 Regionalregierungen geschaffen werden, die hierarchisch über den 47 Counties stehen, deren Zahl aber unberührt bleiben soll. Sollte dieser Vorschlag so umgesetzt werden, droht eine Art der Re-Zentralisierung und den derzeitigen Lokalregierungen die Degradierung zu reinen Verwaltungskörperschaften mit teurem, politischem Anstrich. Der Idee einer solchen Governance-Ebene ist nicht neu. Sie fand sich bereits im ersten Entwurf für eine neue Verfassung im Jahr 2005 („Bomas draft“), auf den sich Odinga immer wieder bezieht.

 

Zwar ist es unbestritten, dass der Dezentralisierungsprozess in bestimmten Bereichen einer (verfassungsrechtlichen) Reform bedarf, dennoc

h scheint das System im Großen und Ganzen zu funktionieren. Außerdem wurde das dezentrale Governancesystem erst vor rund 8 Jahren eingeführt und eine solche umfangreiche Transformation des Staatsgefüges braucht Zeit um sich zu etablieren.

Es stellt sich daher die Frage, warum Odinga nicht für gezielte Reformen, sondern stattdessen für die Schaffung einer neuen Ebene plädiert, insbesondere im Angesicht dessen, dass bereits bei der derzeitigen Zwei-Ebenen-Struktur die Bund-County Beziehungen als zentrales Problemfeld gelten. Das Argument einer Stärkung der wirtschaftlichen Lebensfähigkeit mit Hilfe einer Re-Organisation ist wenig stichhaltig. Counties haben bereits vor geraumer Zeit begonnen- ohne die Einführung einer weiteren politischen Ebene –regionale Wirtschaftsblöcke zu bilden, um ihre Kooperation zu verbessern und Synergien im Bereich der Entwicklung bzw. Finanzierung von Projekten zu nutzen.

 

Ein weiterer Punkt, den Unterstützer ins Feld führen, ist die Lösung der in Kenia latenten ethnischen Spannungen. Da aber die bestehenden County-Grenzen stark mit den ethnischen Grenzen überlappen und beinahe jede Gruppe ihren „Home County“ erhalten hat, scheint auch dieses Argument wenig hilfreich. Während Odinga diese Neuordnung der dezentralen Staatsstruktur als einen Kernbestandteil des Handshakes be-trachtet, hat sich der Präsident mit Unterstützungsbekundungen auffällig zurück gehalten.

Am Ende bleiben von diesem Vorschlag zwei Dinge: die Frage nach der Sinnhaftigkeit und die Tatsache, dass bei den Wahlen 2022 mehr als 20 Gouverneure (aufgrund der Amtszeitbegrenzung) nicht mehr antreten dürfen und neue Funktion brauchen.

 

 

Fazit

 

Die Bewertung des Handshakes bleibt vorläufig zweideutig. Denn während der Handshake auf den ersten Blick tatsächlich ein förderliches Umfeld geschaffen hat, lässt ein zweiter Blick zumindest einige Punkte erkennen, die das Potential haben, Kenia langfristig zu destabilisieren. So ist eine Verfassungsreform inkl. der Möglichkeit eines Machterhalts nach 2022 für Präsident Kenyatta wahrscheinlicher geworden. Der sich anbahnende Konflikt hierüber mit Vizepräsident Ruto enthält auch ein nicht unerhebliches Gewaltpotenzial. Auch die Dezentralisierung mag durch diese Entwicklungen massiv geschwächt werden. Es empfiehlt sich daher in der nahen Zukunft einen dritten Blick zu wagen, um zu sehen, wie sich das Parteiensystem und die Machtbalance entwickelt und ob die Dezentralisierung gestärkt aus dem Handshake hervorgehen oder am Ende Leidtragender politischer Abtauschgeschäfte ist.

Asset Publisher

Contact

Dr. Jan Cernicky

Dr. Jan Cernicky

Head of the Economy and Innovation Department

jan.cernicky@kas.de +49 30 26996 3516 +49 30 26996 3551
Country reports
February 26, 2018
read now

comment-portlet

Asset Publisher

Asset Publisher

About this series

The Konrad-Adenauer-Stiftung is a political foundation. Our offices abroad are in charge of over 200 projects in more than 120 countries. The country reports offer current analyses, exclusive evaluations, background information and forecasts - provided by our international staff.

Ordering Information

erscheinungsort

Kenia Kenia