Header Navigation

Mobile Navigation

Hero

 
 
 

Executive Head of Business Services
CCW

View the role

Welcome

Welcome

Consumer Council for Water (CCW) is the independent voice for water consumers in England and Wales. Since 2005, we have helped thousands of consumers resolve complaints against their water company, while providing free advice and support.

Our mission is to ensure consumers are well-informed, treated fairly and feel confident in water services.

We work confidently across the Sector with water companies and regulators to ensure providers deliver services that are exceptional, sustainable and accessible to all.

Our work in influencing improvement among Water Companies has driven change However, there is more we can do including improving support for those struggling to pay for their water bill and ensuring people get help when they need it and working in partnership to tackle issues arising from climate change.

As our new Executive Head of Business Services, you will report to the Chief Executive Officer playing a key role in the CCW Executive team, supporting, developing and implementing CCW’s strategic plans.

In common with all members of the CCW Executive team, the role involves proactive leadership of CCW and ensuring best in class delivery from your service areas across finance, IT and procurement.

I look forward to reading about what you can bring and to meeting you.

Emma Clancy

Chief Executive

CTA footer

Interested?

Footer

Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing:
==> propsUtil.get(ucmLocaleKey)  [in template "64056#64102#365043" at line 28, column 19]

----
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: #assign locale = propsUtil.get(ucmLoc...  [in template "64056#64102#365043" at line 28, column 1]
----
1<div id="outer-footer" class="updatedFooter" style="padding-left: 0px; width: 1640px;"> 
2	 <div id="inner-footer-expert" class=""> 
3					<div id="footerLogo"> 
4					<#--<#if FooterLogo.getData()?? && FooterLogo.getData() != ""> 
5					<#assign footerLogoHTML = "${FooterLogo.getData()}"/> 
6					<#if (footerLogoHTML?length > 0)> 
7					${footerLogoHTML} 
8					<#else> 
9						<img src="https://www/hays.co.uk/cs/HaysMicroSites/assets/img/hayslogo.gif" id="defaultLogo" alt="Hays  
10							footer logo"> 
11					</#if> 
12					</#if>--> 
13					<#assign haysLogo = propsUtil.get("HAYS_LOGO")/> 
14					<img src="${haysLogo}" id="defaultLogo" alt="Hays  
15							footer logo" style="max-width:200px!important;margin:0px 15px;"> 
16					</div> 
17					<div id="footerLogo-Links"> 
18					<#if Link.getSiblings()?has_content> 
19							<#list Link.getSiblings() as cur_Link> 
20							<#if cur_Link.getData()?? && cur_Link.getData() != ""> 
21									<#assign linkData = "${cur_Link.getData()}"/> 
22												${linkData} 
23							</#if> 
24							</#list> 
25						</#if> 
26					</div> 
27					<#assign ucmLocaleKey = themeDisplay.getLocale()+"."+siteType+"."+"ucmLocale"> 
28<#assign locale = propsUtil.get(ucmLocaleKey)/> 
29<#assign apiUrl = propsUtil.get("WEB72_API_DOMAIN")/> 
30 
31<#assign lr74CutoverCountryCode = propsUtil.get("LR74_CUTOVER_COUNTRY_CODE")/> 
32<#if lr74CutoverCountryCode??> 
33<#list lr74CutoverCountryCode?split(",") as countryCode> 
34 <#if countryCode = themeDisplay.getLocale()?keep_after_last("_") > 
35    <#assign apiUrl = propsUtil.get("API_DOMAIN")/> 
36 </#if> 
37</#list> 
38</#if> 
39 
40<#attempt> 
41 
42<#if httpUtil.URLtoString(apiUrl+"/o/HaysContentStructure/getcontentstructure/expertFooter/"+locale)??> 
43<#assign response = httpUtil.URLtoString(apiUrl+"/o/HaysContentStructure/getcontentstructure/expertFooter/"+locale)> 
44<#assign responseObj = jsonFactoryUtil.createJSONObject(response)> 
45<#assign getResponseResultArray = responseObj.getJSONArray("results")> 
46<div id="footer-bottom"> 
47 <#if getResponseResultArray.length() gt 0> 
48 <#assign siteUrl = getResponseResultArray.get(0).siteUrl> 
49  
50 <#if getResponseResultArray.get(0).getJSONArray("GroupHeading")?? && getResponseResultArray.get(0).getJSONArray("GroupHeading").length()?? && getResponseResultArray.get(0).getJSONArray("GroupHeading").length() gt 1> 
51  
52 <#assign groupHeadingArr = getResponseResultArray.get(0).getJSONArray("GroupHeading")> 
53 	<div class="row single-col gpHeading"> 
54	 <div class="col col-12">   
55		 <nav> 
56			<ul> 
57			<#list 0 ..< groupHeadingArr.length()?number as i> 
58			    <#if groupHeadingArr.get(i).Link?starts_with("/")> 
59			     <#assign linkUrl = siteUrl + groupHeadingArr.get(i).Link> 
60					<li> 
61						<a href="${linkUrl}" target="">${groupHeadingArr.get(i).GroupHeading}</a> 
62					</li> 
63				<#else> 
64				    <li> 
65						<a href="${groupHeadingArr.get(i).Link}" target="">${groupHeadingArr.get(i).GroupHeading}</a> 
66					</li> 
67				</#if> 
68			</#list> 
69			</ul> 
70		  </nav> 
71		 </div> 
72	  </div> 
73	 <#elseif getResponseResultArray.get(0).getJSONArray("FooterLink")??> 
74	 <#assign FooterLinkArr = getResponseResultArray.get(0).getJSONArray("FooterLink")> 
75	 <div class="row single-col"> 
76		<div class="col col-12">   
77		 <nav> 
78			<ul> 
79			<#list 0 ..< FooterLinkArr.length()?number as i> 
80			     <#assign linkUrl = FooterLinkArr.get(i).FooterLink?replace("href=\"/", "href=\""+siteUrl+"/" ) > 
81					<li> 
82						${linkUrl} 
83					</li> 
84			</#list> 
85			</ul> 
86		  </nav> 
87		 </div> 
88	  </div> 
89	  
90	 </#if> 
91		<div class="row single-col"> 
92			<div class="col col-12"> 
93	    	<p class="last">${getResponseResultArray.get(0).CopyrightHTML}</p> 
94			</div> 
95		</div> 
96	</#if> 
97</div> 
98</#if> 
99<#recover> 
100 
101</#attempt> 
102 
103					<div id="copyright-text"> 
104						 <#if CopyrightText?? && CopyrightText.getData()?? && CopyrightText.getData() != ""> 
105				${CopyrightText.getData()} 
106				</#if> 
107					</div> 
108	</div> 
109</div> 
110<script> 
111$(document).ready(function(){ 
112    if((Liferay.ThemeDisplay.getLanguageId() != "en_GB") && (location.href.indexOf("/web/") != -1)) { 
113	console.log("link update required on the site"); 
114	$('a').each(function(index) { 
115		var layoutRelativeUrl = Liferay.ThemeDisplay.getLayoutRelativeURL(); 
116        var getSiteUrl = layoutRelativeUrl.substring(0, layoutRelativeUrl.lastIndexOf("/")); 
117		var linkVal = $(this).attr("href"); 
118		if((typeof linkVal !== "undefined") && linkVal.indexOf("https") == -1 && linkVal.indexOf("/")!= -1 && (linkVal.indexOf("/") === linkVal.lastIndexOf("/"))){ 
119		var updatedLink = getSiteUrl + linkVal ; 
120		$(this).attr("href", updatedLink) 
121		console.log("link updated - " + updatedLink); 
122
123	}); 
124
125}); 
126</script>