Sustainability is the Word

Sustainability has been the catchphrase for nonprofits, especially since the global financial crisis of 2008. Nonprofit boards are asking their CEOs to develop strategies which will ensure that they can withstand as-yet unknown crises, as well as foreshadowed downturns in funding revenue.  While Sustainability has its origins in environmental politics, it is also relevant to nonprofits, because it addresses 'the endurance of systems and processes' (Wikipedia)

Photo: Museums Victoria

Photo: Museums Victoria

To all intents and purposes, sustainability is also about resilience, and how well an organisation can build and sustain its assets - being reserves and reputation - to ensure the organisation is around for its intended lifecycle. [For more on the funding for sustainability, we recommend reading as much as you can by Nell Edgington]

To take stock of the organisations' ability to survive a downturn, the Board should be asking the following questions:

Is the funding model right for what we want to do? If we have relied on traditional fundraising - such as workplace chocolate sales, entertainment coupon books, chuggers, art unions - does that model still work for us? Does it fit our 'brand'? Does it raise more than it costs? Is there a better way? The rise in popularity of crowdfunding platforms, interesting new investment opportunities ("social bonds") and partnerships with commercial organisations to share revenue, are being pursued by nimble organisations wishing to unearth new revenue and funding models.  However the risk of 'chasing the money' might be to risk the reputation and the goal should be to more closely align the means of raising funds with the mission of the organisation.

Does the Strategic Plan inform the organisation about the means of achieving the mission and the near goals of the organisation? We have seen hundreds of Strategic Plans - gorgeous and colourful, except for the dust that encases them - and we know that a SP without a budget was a monumental waste of money. The Strategic Plan asks the questions:

  1. "Where are we going?"
  2. "How will we get there?"
  3. "How much will it cost?" and
  4. "Where will we get the money from?"

Once the Board has signed off on this Plan+Budget, then it has the opportunity to take it to funders and supports to gain their confidence to back the organisation. So it needs to be coherent and logical, and inspire the stakeholders that a clear vision exists to take the organisation into the future. Does what the organisation plan to do make sense?

Internally, is the organisation efficient and and does it have the right balance of investment (ie 'spending) on administration and management? Too much, and the organisation is likely to be seen as indulgent and diverting resources away from its core mission... And too little, the organisation is seen as 'thin' and missing vital components of an effective organisation.  

Does the organisation make best use of technology to ensure that redundant processes and duplication are eliminated? and also the information coming to decision-makers is readable, accurate and timely.

From our experience, the accounting software and the people who manage the accounts, need to be able to produce meaningful reports in order to inform the decision-making. Accounting is a means to an end... to inform the decisions, and if the accounting function can't achieve useful and robust information, then it doesn't matter what else it can do... It is ineffective. For example, will the financial function be able to inform the Board of divergence from the Plan, or where there is error or fraud, or when a crisis is looming? The sustainability of the organisation rests on this information flow.

And finally, does the CEO know the business well? Are they experienced? Is the person the best appointment that could be made for the money that the organisation can afford? Are they well supported by the Chairperson and the Board? Do they bring stable leadership to the organisation, and inspire staff and supporters? Is their advice to the Board of sufficient quality, independence and well informed?

Gearing up to be sustainable over time involves a number of dimensions, none of them simple or quick, but to ignore them because they are too difficult to deal with ("no time", "too busy") is to fulfil a death wish...
   

$(document).ready(function() { $('#next1').click(function() { var orgname= $('#orgname').val(); var putorgname= $('.org_name').html(orgname); $('.org_name1').val(orgname); }); }); (function($) { $(function() { $(document).ready(function(){ //Client-supplied mystery meat constants var r2eRatioMin = 8; var r2eRatioMax = 22; var wcRatioMin = 0.2; var wcRatioMax = 3.2; var crRatioMin = 2; var crRatioMax = 12; var prRatioMin = 0; var prRatioMax = 10; var currentstep = '#step1'; $('#step2,#step3,#step4').hide(); $('.calcnav .next').addClass('disabled'); function safeVal(value) { value = value.replace('$',''); value = value.replace(/,/g,''); value = value.replace(' ',''); return value; } /**********************************************/ //NAV //When we click a nav link, show the div referenced by the href, which will be something like #step2 $('.calcnav a').click(function(e){ //Don't navigate if required fields are missing or the link is disabled if($(this).hasClass('disabled')){ return false; } if($(this).hasClass('.next') && !checkReq(currentstep)) { return false; } e.preventDefault(); var selector = $(this).attr('href'); if($(selector).length) { //we have a div to show //Fade out, then fade in the new div $.when($('.calcsection').fadeOut(500)).done(function() { $(selector).fadeIn(); currentstep = selector; if(currentstep == '#step4') { step4calc(); } }); } }); //.calcnav a.click() /************************************************/ function step1calc() { var v21 = parseInt( safeVal($('input[name="orgname"]').val()) ); var v1 = parseInt( safeVal($('input[name="bankaccounts"]').val()) ); var v2 = parseInt( safeVal($('input[name="currentassets"]').val()) ); var v3 = parseInt( safeVal($('input[name="fixedassets"]').val()) ); if(isNaN(v1) || isNaN(v2) || isNaN(v3)) { $('input[name="totalassets"]').val(''); $('#step1 .calcnav a.next').addClass('disabled'); return false; } $('#step1 .calcnav a.next').removeClass('disabled'); $('input[name="totalassets"]').val(v1 + v2 + v3); } //Add listeners for step 1 $('#step1 input').change(function(){ step1calc(); }); $('#step1 input').keyup(function(){ step1calc(); }); /**********************************************/ function step2calc() { var l1 = parseInt( safeVal($('input[name="creditors"]').val()) ); var l2 = parseInt( safeVal($('input[name="staffentitlements"]').val()) ); var l3 = parseInt( safeVal($('input[name="grants"]').val()) ); var l4 = parseInt( safeVal($('input[name="currentliabilities"]').val()) ); var l5 = parseInt( safeVal($('input[name="noncurrentliabilities"]').val()) ); if(isNaN(l1) || isNaN(l2) || isNaN(l3) || isNaN(l4) || isNaN(l5)) { $('input[name="totalliabilities"]').val(''); $('#step2 .calcnav a.next').addClass('disabled'); return false; } $('#step2 .calcnav a.next').removeClass('disabled'); $('input[name="totalliabilities"]').val(l1 + l2 + l3 + l4 + l5); var reserves = parseInt( safeVal($('input[name="totalassets"]').val()) ) - parseInt( safeVal($('input[name="totalliabilities"]').val()) ); $('input[name="reserves"]').val(reserves); } //Add listeners for step 2 $('#step2 input').change(function(){ step2calc(); }); $('#step2 input').keyup(function(){ step2calc(); }); /**********************************************/ function step3calc() { var a1 = parseInt( safeVal($('input[name="annualincome"]').val()) ); var a2 = parseInt( safeVal($('input[name="annualspend"]').val()) ); var a3 = parseInt( safeVal($('input[name="staffcosts"]').val()) ); if(isNaN(a1) || isNaN(a2) || isNaN(a3) ) { $('input[name="net"]').val(''); $('#step3 .calcnav a.next').addClass('disabled'); return false; } var net = a1 - a2 ;// - parseInt(a3) //total income - total costs $('#step3 .calcnav a.next').removeClass('disabled'); $('input[name="net"]').val(net); } //Add listeners for step 3 $('#step3 input').change(function(){ step3calc(); }); $('#step3 input').keyup(function(){ step3calc(); }); /**********************************************/ function step4calc() { var currentAssets = parseInt( safeVal($('input[name="bankaccounts"]').val()) ) + parseInt( safeVal($('input[name="currentassets"]').val()) ); var totalAssets = currentAssets + parseInt( safeVal($('input[name="fixedassets"]').val()) ); var currentLiabilities = parseInt( safeVal($('input[name="creditors"]').val()) ) + parseInt( safeVal($('input[name="staffentitlements"]').val()) ) + parseInt( safeVal($('input[name="grants"]').val()) ) + parseInt( safeVal($('input[name="currentliabilities"]').val()) ); var totalLiabilities = currentLiabilities + parseInt( safeVal($('input[name="noncurrentliabilities"]').val()) ); var reserves = totalAssets - totalLiabilities; var netSurplus = parseInt( safeVal($('input[name="annualincome"]').val()) ) - parseInt( safeVal($('input[name="annualspend"]').val()) ); //1 var ratio1 = parseInt( safeVal($('input[name="reserves"]').val()) ) / parseInt( safeVal($('input[name="annualspend"]').val()) ) * 100; var score1 = Math.round((((ratio1 - r2eRatioMin)/(r2eRatioMax-r2eRatioMin))*9+1)*10)/10; if(score1 < 0){ score1 = 0;} if(score1 > 10) { score1 = 10;} $('#score1').text(score1); $('#score1a').val(score1); $('#ratio1').text(ratio1.toFixed(1) + '%'); $('#ratio1a').val(ratio1.toFixed(1) + '%'); var status1 = '';var status1a = ''; if(ratio1 < 15) { status1 = 'bad';status1a = 'red'; } else if(ratio1 >= 15 && ratio1 < 18) { status1 = 'average';status1a = 'yellow'; } else if(ratio1 >= 18) { status1 = 'good'; status1a = 'green'; } $('#status1').addClass(status1); $('#status1a').val(status1a); //2 var ratio2 = 0; if(currentLiabilities <= 0){ ratio2 = 0; } else { ratio2 = currentAssets / currentLiabilities; } $('#ratio2').text(ratio2.toFixed(1)); $('#ratio2a').val(ratio2.toFixed(1)); var score2 = Math.round((((ratio2-wcRatioMin)/(wcRatioMax-wcRatioMin))*9+1)*10)/10; if(score2 < 0){ score2 = 0; } if(score2 > 10) { score2 = 10; } $('#score2').text(score2); $('#score2a').val(score2); var status2 = '';var status2a = ''; if(ratio2 < 1){ status2 = 'bad'; status2a = 'red'; } else if(ratio2 >= 1 && ratio2 < 2) { status2 = 'average'; status2a = 'yellow'; } else if(ratio2 >= 2) { status2 = 'good';status2a = 'green'; } $('#status2').addClass(status2); $('#status2a').val(status2a); //3 var totalExpenditure = parseInt( safeVal($('input[name="annualspend"]').val()) ); var weeklyExpenditure = totalExpenditure / 52; var ratio3 = 0; var bankAccounts = parseInt( safeVal($('input[name="bankaccounts"]').val()) ); var grants = parseInt( safeVal($('input[name="grants"]').val()) ); if (totalExpenditure == 0) { ratio3 = 0; } else { ratio3 = (bankAccounts - grants) / weeklyExpenditure; } $('#ratio3').text(ratio3.toFixed(1)); $('#ratio3a').val(ratio3.toFixed(1)); var score3 = Math.round((((ratio3-crRatioMin)/(crRatioMax-crRatioMin))*9+1)*10)/10; if(score3 < 0) { score3 = 0; } if(score3 > 10) { score3 = 10; } $('#score3').text(score3); $('#score3a').val(score3); var status3 = ''; var status3a = ''; if(score3 < 7) { status3 = 'bad'; status3a = 'red'; } else if(score3 >= 7 && score3 < 10) { status3 = 'average';status3a = 'yellow'; } else if(score3 >= 10) { status3 = 'good';status3a = 'green'; } $('#status3').addClass(status3); $('#status3a').val(status3a); //4 var profitmargin = 0; var totalincome = parseInt( safeVal($('input[name="annualincome"]').val()) ); if(totalincome > 0){ profitmargin = (totalincome - totalExpenditure) / totalincome * 100; } var ratio4 = profitmargin; $('#ratio4').text(ratio4.toFixed(1) + '%'); $('#ratio4a').val(ratio4.toFixed(1) + '%'); var score4 = Math.round((((profitmargin-prRatioMin)/(prRatioMax-prRatioMin))*10)*10)/10; if(score4 < 0) { score4 = 0; } if(score4 > 10) { score4 = 10; } $('#score4').text(score4); $('#score4a').val(score4); var status4a = ''; if(score4 < 1) { status4 = 'bad';status4a = 'red'; } else if(score4 >= 1 && score4 < 6) { status4 = 'average'; status4a = 'yellow'; } else if(score4 >= 6 ) { status4 = 'good';status4a = 'green'; } $('#status4').addClass(status4); $('#status4a').val(status4a); //5 var ratio5 = 0; var staffcosts = parseInt( safeVal($('input[name="staffcosts"]').val()) ); if(totalincome == 0) { ratio5 = 0; } else { ratio5 = staffcosts / totalincome; } $('#ratio5').text((ratio5 * 100).toFixed(1) + '%'); $('#ratio5a').val((ratio5 * 100).toFixed(1) + '%'); var score5 = 0; score5 = Math.round(((1-ratio5)*10+3)*10)/10; if(score5 < 0) { score5 = 0; } if(score5 > 10) { score5 = 10; } $('#score5').text(score5); $('#score5a').val(score5); ratio5 = ratio5 * 100; var status5 = '';var status5a = ''; if(ratio5 < 60) { status5 = 'bad'; status5a = 'red'; } else if (ratio5 >= 60 && ratio5 < 80) { status5 = 'average';status5a = 'yellow'; } else if(ratio5 >= 80) { status5 = 'good';status5a = 'green'; } $('#status5').addClass(status5); $('#status5a').val(status5a); //total var totalscore = parseFloat($('#score1').text()) + parseFloat($('#score2').text()) + parseFloat($('#score3').text()) + parseFloat($('#score4').text()) + parseFloat($('#score5').text()); $('#totalscore').text(totalscore); selector12(); return false; } function selector12() { $("#button").trigger('click'); //$("#button").click(); return false; } /**********************************************/ function checkReq(selector) { var proceed = true; $.each($(selector + ' input.required'),function() { if( $(this).val() == '' ) { proceed = false; } }); if(proceed == true) { return true; } else { return false; } } /***********************************************/ $('.helpicon').mouseover(function(e){ $(this).siblings('.helpcontent').css('top',e.pageY - 10); $(this).siblings('.helpcontent').css('left',e.pageX + 10); $(this).siblings('.helpcontent').show(); }); $('.helpicon').mouseout(function(){ $(this).siblings('.helpcontent').hide(); }); }); }); })(jQuery);