<?xml version="1.0"?>
<rss version="2.0"><channel><title>Engineering Signatory Latest Topics</title><link>https://www.ccmc.com.au/index.php?/forum/84-engineering-signatory/</link><description>Engineering Signatory Latest Topics</description><language>en</language><item><title>LT4 Noise testing</title><link>https://www.ccmc.com.au/index.php?/topic/184-lt4-noise-testing/</link><description><![CDATA[<p style="background-color:#ffffff; color:#353c41; font-size:14px; text-align:start">
	A LT4 noise test is for testing noise emissions of motor vehicles using Class 1 noise testing Instruments.
</p>

<p style="background-color:#ffffff; color:#353c41; font-size:14px; text-align:start">
	Exhaust ,drive line and road noise will be measured in accordance with strict guidelines set out by the Australian Government
</p>

<p style="background-color:#ffffff; color:#353c41; font-size:14px; text-align:start">
	tests will be depending on the manufactured date of your vehicle and under what ADR it currently complies with.
</p>

<p style="background-color:#ffffff; color:#353c41; font-size:14px; text-align:start">
	LT4 is for Engineering work only if your vehicle has been defected by the Police or EPA for breaching noise limits it will need to be cleared by there own inspecting officers
</p>

<p style="background-color:#ffffff; color:#353c41; font-size:14px; text-align:start">
	<a href="https://www.epa.nsw.gov.au/your-environment/noise/vehicle-noise/avoiding-noisy-vehicle-exhaust" rel="external nofollow" style="background-color:transparent; color:#3d6594" target="_blank">EPA approved inspection stations</a>
</p>

<p style="background-color:#ffffff; color:#353c41; font-size:14px; text-align:start">
	Contact Mark Dewhurst on 0438572405 for more information or to book an appointment.
</p>
<iframe allowfullscreen="" class="ipsEmbed_finishedLoading" data-controller="core.front.core.autosizeiframe" data-embedauthorid="1" data-embedcontent="" data-embedid="embed35588521" src="https://www.ccmc.com.au/index.php?/videos/view-64-exhaust-sound-testing/&amp;do=embed" style="overflow: hidden; height: 431px; max-width: 500px;" loading="lazy"></iframe>

<p style="background-color:#ffffff; color:#353c41; font-size:14px; text-align:start">
	 
</p>
]]></description><guid isPermaLink="false">184</guid><pubDate>Sun, 09 Aug 2020 03:24:49 +0000</pubDate></item><item><title>Business Agreement</title><link>https://www.ccmc.com.au/index.php?/topic/151-business-agreement/</link><description><![CDATA[
<p>
	Our Business Agreement states that before any compliance work can begin you must agree to and understand the following.
</p>

<p>
	 
</p>

<p>
	1.    You will declare all modifications to the vehicle and provide any information that is relevant to the compliance process.
</p>

<p>
	2.    That you understand that for a vehicle to be certified it must be compliant to ADR's and it must be possible to prove that it is compliant by documented proof supplied by accepted sources or by Mark Dewhurst Automotive Engineering.
</p>

<p>
	3.    That you understand that some vehicles or individual modifications to some vehicle can't be certified.
</p>

<p>
	4.    You understand that this is not a free service and all fees need to be paid in full before completion.
</p>

<p>
	5.    Agree that although different engineers may have different opinions on how or what is compliant Mark Dewhurst Automotive Engineering holds the final decision .
</p>

<p>
	 
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">151</guid><pubDate>Sun, 05 Jan 2020 05:09:40 +0000</pubDate></item><item><title>Engineering Design and Consultation</title><link>https://www.ccmc.com.au/index.php?/topic/138-engineering-design-and-consultation/</link><description><![CDATA[<p>
	Mark Dewhurst Automotive Engineering offers Engineering Advice and design for any Automotive project you may be undertaking
</p>

<p>
	this service isn't free and is charged out at $195 per hour 
</p>

<p>
	<u>Important <span><span>:</span></span></u><span><span> It is recommended you have a phone consultation or become a member and fill out the </span></span><span style="background-color:#ffffff; color:#4588c5; font-size:16px; text-align:left"><a data-ipshover="" data-ipshover-target="https://www.ccmc.com.au/index.php?/topic/156-vsccs-aplication/&amp;preview=1" data-ipshover-timeout="1.5" data-role="editableTitle" href="https://www.ccmc.com.au/index.php?/topic/156-vsccs-aplication/" id="ips_uid_3038_3" rel="" style="background-color:#ffffff; color:#4588c5; font-size:16px; text-align:left" title="VSCCS Aplication (Click and hold to edit title)">VSCCS Aplication</a> </span>before paying anything to see if your certification is possible.
</p>

<p>
	the Certification Application Fee is a Non refundable application fee for beginning certification, includes access to secure section of the website and one on one guidance through the certification process.
</p>

<p>
	This application fee is marked as part payment for the final invoice
</p>

<p>
	After payment or account set up is completed a new section on the main website page will be viewable, start in the " <a href="https://www.ccmc.com.au/index.php?/forum/59-information-forms/" rel="" style="background-color:#ffffff; color:#4588c5; font-size:18px; text-align:left">Information &amp; Forms</a> " section. this link in blue wont work until your a member.
</p>

<p>
	for over the phone payments or if you are having any other problem submitting please call 0438572405 in business hours or start a support request at the below link
</p>

<p>
	 <a href="https://www.ccmc.com.au/index.php?/support/" ipsnoembed="true" rel="">http://www.ccmc.com.au/index.php?/support/</a>
</p>

<p>
	<a href="https://www.ccmc.com.au/index.php?/store/product/5-consultant-service/" rel="">Click here to start Store Application Fee</a>
</p>

<p>
	<a href="https://www.ccmc.com.au/index.php?/store/product/9-certification-application-bata-test/" rel="">Click here if you are a mechanic or Manufacture</a> 
</p>
]]></description><guid isPermaLink="false">138</guid><pubDate>Mon, 30 Dec 2019 04:35:32 +0000</pubDate></item><item><title><![CDATA[Find a VSCCS or VSCCS J&P licensed certifier]]></title><link>https://www.ccmc.com.au/index.php?/topic/134-find-a-vsccs-or-vsccs-jp-licensed-certifier/</link><description><![CDATA[<p style="background-color:#ffffff; color:#000000; font-size:16px; text-align:start">
	If you have a significantly modified vehicle or a non-standard vehicle, it will need to be inspected by a Vehicle Safety Compliance Certification Scheme (VSCCS) licensed certifier, to ensure it complies with NSW vehicle safety standards.
</p>

<p style="background-color:#ffffff; color:#000000; font-size:16px; text-align:start">
	Heavy vehicle modifications are inspected and assessed for compliance by VSCCS J&P certifiers. A heavy vehicle J code modification includes simple body mountings and a P code modification includes tow coupling, fifth wheel and king pin installations.
</p>

<p style="background-color:#ffffff; color:#000000; font-size:16px; text-align:start">
	You can find these licensed certifiers online.
</p>

<!-- VSCCS Bulletin 1 Certifier Finder - WordPress embed version -->
<!-- JSON-driven data shell: loads /data/bulletin1-data.json and triggers /data/bulletin1-watch.php -->
<!-- Paste this into a members-only WordPress page/post. Certifier records, the Bulletin 1 download button and the background Bulletin watcher trigger are JSON/PHP driven. -->
<style>
#vsccsBulletin1App{--blue:#003f7f;--dark:#0c2748;--mid:#0b63b6;--light:#eaf3fb;--line:#c9d7e6;--text:#1a1f29;--muted:#65758a;--bg:#f4f7fb;--warn:#fff3cd;--ok:#e9f8ef;--shadow:0 8px 22px rgba(12,39,72,.12);--radius:14px}#vsccsBulletin1App *{box-sizing:border-box}#vsccsBulletin1App{margin:0;font-family:Arial,Helvetica,sans-serif;background:var(--bg);color:var(--text)}#vsccsBulletin1App header{background:linear-gradient(135deg,var(--dark),var(--blue));color:white;border-bottom:8px solid #1f75bb}#vsccsBulletin1App .wrap{max-width:1180px;margin:0 auto;padding:18px}#vsccsBulletin1App .brand{display:flex;gap:14px;align-items:center}#vsccsBulletin1App .mark{width:54px;height:54px;border-radius:12px;background:white;color:var(--blue);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px;box-shadow:var(--shadow)}#vsccsBulletin1App h1{margin:0;font-size:26px;line-height:1.15}#vsccsBulletin1App .sub{margin:5px 0 0;color:#d6e7f7;font-size:14px}#vsccsBulletin1App .panel{background:white;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin:16px 0}#vsccsBulletin1App .controls{display:grid;grid-template-columns:minmax(150px,1fr) auto auto 190px 150px;gap:10px;align-items:end}#vsccsBulletin1App .controls label{min-width:0}#vsccsBulletin1App .controls button{white-space:nowrap}#vsccsBulletin1App .controls input,#vsccsBulletin1App .controls select,#vsccsBulletin1App .controls button,#vsccsBulletin1App textarea,#vsccsBulletin1App input,#vsccsBulletin1App select{width:100%;border:1px solid #b9c9da;border-radius:10px;padding:11px;font-size:15px;background:white}#vsccsBulletin1App button,#vsccsBulletin1App .btn{cursor:pointer;background:var(--blue);color:white;border:0;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-weight:700;border-radius:10px;padding:11px 14px}#vsccsBulletin1App .btn.secondary,#vsccsBulletin1App button.secondary{background:#5d6f82}#vsccsBulletin1App .btn.light,#vsccsBulletin1App button.light{background:#e8f0f8;color:var(--dark);border:1px solid var(--line)}#vsccsBulletin1App .stats{display:flex;gap:10px;flex-wrap:wrap}#vsccsBulletin1App .pill{border:1px solid var(--line);background:var(--light);border-radius:999px;padding:6px 10px;font-size:13px}#vsccsBulletin1App .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px}#vsccsBulletin1App .card{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:14px;box-shadow:0 3px 10px rgba(12,39,72,.08)}#vsccsBulletin1App .card h2{font-size:19px;margin:0 0 4px;color:var(--dark)}#vsccsBulletin1App .company{font-weight:700;color:var(--mid);margin-bottom:8px}#vsccsBulletin1App .meta{display:grid;grid-template-columns:90px 1fr;gap:4px 10px;font-size:14px}#vsccsBulletin1App .label{color:var(--muted);font-weight:700}#vsccsBulletin1App .licence{display:inline-block;background:var(--dark);color:#fff;border-radius:9px;padding:4px 8px;font-weight:800;letter-spacing:.5px}#vsccsBulletin1App .cats{display:grid;grid-template-columns:repeat(5,1fr);border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-top:10px}#vsccsBulletin1App .cat{text-align:center;border-right:1px solid var(--line);min-height:58px}#vsccsBulletin1App .cat:last-child{border-right:0}#vsccsBulletin1App .cat b{display:block;background:var(--light);padding:5px;font-size:13px;color:var(--dark)}#vsccsBulletin1App .cat span{display:block;padding:6px;font-size:12px;white-space:pre-wrap}#vsccsBulletin1App .foot{color:var(--muted);font-size:12px;margin-top:10px}#vsccsBulletin1App .notice{background:#fff;border-left:5px solid var(--mid);padding:10px;border-radius:8px;margin-top:10px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}#vsccsBulletin1App .tableWrap{overflow:auto}#vsccsBulletin1App .listTable{width:100%;border-collapse:collapse;background:white}#vsccsBulletin1App .listTable th{background:var(--dark);color:white;text-align:left;position:sticky;top:0}#vsccsBulletin1App .listTable th,#vsccsBulletin1App .listTable td{border:1px solid var(--line);padding:8px;vertical-align:top;font-size:13px}#vsccsBulletin1App .listTable tr:nth-child(even){background:#f8fbff}#vsccsBulletin1App .edited{background:var(--ok)!important}#vsccsBulletin1App .placeholder{background:var(--warn);color:#7a5300;border-radius:8px;padding:3px 6px;font-weight:700}#vsccsBulletin1App .toplinks{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}#vsccsBulletin1App .small{font-size:12px;color:var(--muted)}#vsccsBulletin1App .versionBubble{position:absolute;top:14px;right:18px;background:#e8f0f8;color:var(--dark);border:1px solid rgba(255,255,255,.55);border-radius:999px;padding:6px 10px;font-size:12px;font-weight:800;box-shadow:0 3px 10px rgba(0,0,0,.16);white-space:nowrap;text-decoration:none}#vsccsBulletin1App .versionBubble:hover{background:#dceaf7;text-decoration:none}#vsccsBulletin1App .headerWrap{position:relative;padding-right:190px}@media(max-width:760px){#vsccsBulletin1App .headerWrap{padding-right:18px}#vsccsBulletin1App .versionBubble{position:static;display:inline-flex;margin-top:12px}}@media(max-width:980px){#vsccsBulletin1App .controls{grid-template-columns:minmax(150px,1fr) auto auto}#vsccsBulletin1App .controls label:nth-child(4),#vsccsBulletin1App .controls label:nth-child(5){grid-column:auto}}@media(max-width:760px){#vsccsBulletin1App .controls{grid-template-columns:1fr}#vsccsBulletin1App .grid{grid-template-columns:1fr}#vsccsBulletin1App .meta{grid-template-columns:1fr}#vsccsBulletin1App .cats{grid-template-columns:1fr}#vsccsBulletin1App .cat{border-right:0;border-bottom:1px solid var(--line)}#vsccsBulletin1App .cat:last-child{border-bottom:0}}@media(min-width:1450px){#vsccsBulletin1App .wrap{max-width:1500px}#vsccsBulletin1App .grid{grid-template-columns:repeat(4,minmax(0,1fr))}#vsccsBulletin1App .card{min-width:0}}@media(min-width:1500px){#vsccsBulletin1App .wrap{max-width:1460px}#vsccsBulletin1App .grid{grid-template-columns:repeat(4,minmax(0,1fr))}}#vsccsBulletin1App .card{position:relative}#vsccsBulletin1App .inactiveDot{position:absolute;top:10px;right:10px;width:14px;height:14px;border-radius:50%;background:#d71920;box-shadow:0 0 0 3px #fff,0 2px 7px rgba(0,0,0,.35);z-index:5}#vsccsBulletin1App .inactiveTableDot{display:inline-block;width:11px;height:11px;border-radius:50%;background:#d71920;margin-right:7px;vertical-align:middle;box-shadow:0 0 0 1px #fff}#vsccsBulletin1App .inactiveNote{color:#a91518;font-weight:700}#vsccsBulletin1App .phoneNumber{font-weight:900;color:var(--text)}#vsccsBulletin1App .displayInactiveControl{display:inline-flex;align-items:center;justify-content:flex-end;gap:10px;padding:6px 8px;border:1px solid var(--line);border-radius:10px;background:#f8fbff;color:var(--dark);font-size:12px;font-weight:800;white-space:nowrap}#vsccsBulletin1App .switch{position:relative;display:inline-block;width:44px;height:24px;flex:0 0 auto;cursor:pointer}#vsccsBulletin1App .switch input{opacity:0;width:0;height:0;position:absolute}#vsccsBulletin1App .slider{position:absolute;cursor:pointer;inset:0;background:#9aa9b8;border-radius:999px;transition:.18s;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}#vsccsBulletin1App .slider:before{content:"";position:absolute;height:18px;width:18px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.18s;box-shadow:0 2px 5px rgba(0,0,0,.28)}#vsccsBulletin1App .switch input:checked+.slider{background:var(--mid)}#vsccsBulletin1App .switch input:checked+.slider:before{transform:translateX(20px)}#vsccsBulletin1App .searchLabel{position:relative;display:block;min-width:0}#vsccsBulletin1App .searchBoxWrap{position:relative}#vsccsBulletin1App .searchHistoryButton{height:43px;min-width:92px;width:100%;font-size:15px;line-height:1;padding:11px 14px}#vsccsBulletin1App .searchHistoryButton.open{background:#dceaf7;color:var(--dark)}#vsccsBulletin1App .searchHistoryDropdown{position:absolute;left:0;right:0;top:calc(100% + 6px);background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 28px rgba(12,39,72,.18);z-index:1002;max-height:310px;overflow:auto;padding:6px;display:none}#vsccsBulletin1App .searchHistoryDropdown.show{display:block}#vsccsBulletin1App .searchHistoryEmpty{padding:10px 12px;color:var(--muted);font-size:13px}#vsccsBulletin1App .searchHistoryItem{display:grid;grid-template-columns:1fr 30px;align-items:center;gap:6px;width:100%;border:0;background:#fff;color:var(--text);border-radius:9px;padding:0;text-align:left}#vsccsBulletin1App .searchHistoryItem:hover{background:#f2f7fd}#vsccsBulletin1App .searchHistoryTerm{padding:9px 4px 9px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}#vsccsBulletin1App .searchHistoryDelete{height:28px;width:28px;border-radius:999px;border:0;background:transparent;color:#7a1a1a;font-size:16px;font-weight:900;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer}#vsccsBulletin1App .searchHistoryDelete:hover{background:#ffe9e9;color:#b30000}#vsccsBulletin1App .searchOnly{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}#vsccsBulletin1App .backToTop{position:fixed;right:22px;bottom:22px;width:48px;height:48px;border-radius:999px;background:var(--blue);color:#fff;border:1px solid rgba(255,255,255,.55);box-shadow:0 8px 22px rgba(12,39,72,.25);font-size:26px;line-height:1;font-weight:900;display:flex;align-items:center;justify-content:center;z-index:1000;opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity .18s ease,transform .18s ease,visibility .18s ease}#vsccsBulletin1App .backToTop.show{opacity:1;visibility:visible;transform:translateY(0)}#vsccsBulletin1App .backToTop:hover{background:var(--dark)}#vsccsBulletin1App .backToTop:focus{outline:3px solid rgba(31,117,187,.35);outline-offset:3px}@media(max-width:760px){#vsccsBulletin1App .backToTop{right:14px;bottom:14px;width:44px;height:44px;font-size:24px}}#vsccsBulletin1App .mapLink{color:var(--mid);font-weight:700;text-decoration:none;border-bottom:1px dotted var(--mid)}#vsccsBulletin1App .mapLink:hover{text-decoration:underline}

#vsccsBulletin1App{font-family:Arial,Helvetica,sans-serif;background:var(--bg);color:var(--text);padding:0 0 18px 0;}
#vsccsBulletin1App .bulletinTitlePanel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin:0 auto 16px auto;color:var(--text);}
#vsccsBulletin1App .bulletinTitlePanel .sub{color:var(--muted);}
#vsccsBulletin1App .bulletinTitlePanel h1{color:var(--dark);}
#vsccsBulletin1App .dataStatus{font-size:12px;color:var(--muted);margin-top:8px;}
#vsccsBulletin1App .dataError{background:#fff3cd;border-left:5px solid #d39e00;border-radius:8px;padding:10px;color:#6b4a00;}
#vsccsBulletin1App .watchFound{color:#a91518;font-weight:800;}#vsccsBulletin1App .watchOk{color:#2b6d3b;font-weight:700;}

</style>
<div id="vsccsBulletin1App" class="vsccsBulletin1App">
<div class="wrap headerWrap bulletinTitlePanel"><div class="brand"><div><h1>VSCCS Bulletin 1 Certifier Finder</h1><div class="sub">Search by certifier name, company, suburb/address, category or licence number. Based on VSCCS Bulletin 1.</div><div id="dataStatus" class="dataStatus">Loading Bulletin 1 data…</div></div></div><a id="bulletinDownload" class="versionBubble" href="#" target="_blank" rel="noopener">Loading Bulletin 1 download…</a></div>
<main class="wrap"><section class="panel"><div class="controls"><label class="searchLabel">Search<div class="searchBoxWrap"><input id="q" placeholder="Search anything" autocomplete="off"><div id="searchHistoryDropdown" class="searchHistoryDropdown" aria-label="Previous searches"></div></div></label><label>&nbsp;<button id="searchHistoryBtn" class="light searchHistoryButton" type="button" title="Previous searches" aria-label="Previous searches" aria-expanded="false">History</button></label><label>&nbsp;<button id="clearSearch" type="button" class="light">Clear</button></label><label>Region<select id="region"><option value="">All regions</option></select></label><label>View<select id="view"><option value="cards">Cards</option><option value="table">Table</option></select></label></div><div class="notice small"><span>List to be updated as Transport NSW does</span><div class="displayInactiveControl"><span>Display Inactive</span><label class="switch" title="Show or hide red-dot certifiers"><input id="displayInactive" type="checkbox" checked><span class="slider"></span></label></div></div></section><section class="panel"><div class="stats"><span class="pill" id="count"></span></div></section><section id="results"></section></main>
<button id="backToTop" class="backToTop" type="button" title="Back to top" aria-label="Back to top">↑</button>
</div>
<script>

const STORAGE_KEY='vsccsBulletin1EditsV1';
let ACTIVE_LICENCES=new Set();
let BASE_DATA=[];
const BULLETIN1_DATA_URL='https://ccmc.com.au/data/bulletin1-data.json';
const BULLETIN1_DATA_URLS=[
  BULLETIN1_DATA_URL,
  'https://www.ccmc.com.au/data/bulletin1-data.json'
];
const BULLETIN1_WATCH_URL='https://ccmc.com.au/data/bulletin1-watch.php';
const BULLETIN1_WATCH_URLS=[
  BULLETIN1_WATCH_URL,
  'https://www.ccmc.com.au/data/bulletin1-watch.php'
];
function readStore(){try{return JSON.parse(localStorage.getItem(STORAGE_KEY)||'{}')}catch(e){return {}}}
function writeStore(obj){localStorage.setItem(STORAGE_KEY,JSON.stringify(obj,null,2))}
function isInactiveRecord(it){const lic=String(it.licence||'').trim();return !!(it._inactive||(lic&&lic!=='ADD-LICENCE'&&!ACTIVE_LICENCES.has(lic)&&!it._new))}
function mergeData(){const edits=readStore();const merged=BASE_DATA.map(x=>{const item={...x,...(edits[x.id]||{}),_edited:!!edits[x.id]};item._inactive=isInactiveRecord(item);return item});return merged.concat(Object.values(edits).filter(x=>x._new&&!BASE_DATA.find(b=>b.id===x.id)).map(x=>({...x,_edited:true,_inactive:isInactiveRecord(x)})));}
function norm(v){return String(v||'').toLowerCase().replace(/\s+/g,' ').trim()}

const TICK_CATEGORY_SEARCH_CODES={
  M:'MC1 MC2 MC3 MC4 MC5 MIP MAOV',
  P:'PC1 PC2 PC3 PC4 PC5 PIP PAOV',
  B:'BC1 BC3 BC4 BC5 BIP BAOV',
  L:'LC1 LC2 LC3 LC4 LC5 LIP LAOV',
  H:'HC1 HC2 HC3 HC4 HC5 HIP HAOV'
};
function isTickValue(v){
  const t=String(v||'').trim();
  return t==='✓'||t==='✔'||t===''||/^tick$/i.test(t);
}
function categorySearchText(it){
  return ['M','P','B','L','H'].map(k=>`${k} ${it[k]||''} ${isTickValue(it[k])?TICK_CATEGORY_SEARCH_CODES[k]:''}`).join(' ');
}
function hiddenCategorySearchText(it,k){
  return isTickValue(it[k])?`<span class="searchOnly" aria-hidden="true"> ${esc(TICK_CATEGORY_SEARCH_CODES[k])}</span>`:'';
}

function esc(v){return String(v??'').replace(/[&<>"']/g,m=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#039;'}[m]))}
function prepareContactText(v){return String(v??'').replace(/\.co\s+m\b/gi,'.com').replace(/\.com\.a\s+u\b/gi,'.com.au').replace(/\.net\.a\s+u\b/gi,'.net.au').replace(/\.org\.a\s+u\b/gi,'.org.au').replace(/\.com\s+\.au\b/gi,'.com.au').replace(/([A-Za-z0-9._%+-]+@[A-Za-z0-9-]+)-\s+([A-Za-z0-9-]+)/g,'$1-$2');}
function boldPhoneText(text){
  const phoneRe=/(?:\b(?:T|M|P|Tel|Phone|Mobile)\s*:?\s*)?(?:(?:\(?0\d\)?|\(?0\d{1,2}\)?|1300|1800|13)\s*[\d\s-]{5,12}\d|\b04\d{2}\s*\d{3}\s*\d{3}\b|\b04\d{8}\b)/gi;
  return text.replace(phoneRe,m=>`<strong class="phoneNumber">${m}</strong>`);
}
function linkEmails(v){
  const text=prepareContactText(v);
  const emailRe=/[A-Z0-9._%+-]+@[A-Z0-9](?:[A-Z0-9.-]*[A-Z0-9])?(?:\.[A-Z]{2,})+/ig;
  let out='';
  let last=0;
  let match;
  while((match=emailRe.exec(text))!==null){
    out+=boldPhoneText(esc(text.slice(last,match.index)));
    const email=match[0];
    out+=`<a href="mailto:${esc(email)}">${esc(email)}</a>`;
    last=match.index+email.length;
  }
  out+=boldPhoneText(esc(text.slice(last)));
  return out;
}
function downloadJSON(filename,data){const blob=new Blob([JSON.stringify(data,null,2)],{type:'application/json'});const a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download=filename;document.body.appendChild(a);a.click();a.remove();setTimeout(()=>URL.revokeObjectURL(a.href),500)}
function importJSON(file,cb){const r=new FileReader();r.onload=()=>{try{cb(JSON.parse(r.result));}catch(e){alert('Invalid JSON file.')}};r.readAsText(file)}

const q=document.getElementById('q'), clearSearch=document.getElementById('clearSearch'), regionSel=document.getElementById('region'), viewSel=document.getElementById('view'), displayInactive=document.getElementById('displayInactive'), results=document.getElementById('results'), searchHistoryBtn=document.getElementById('searchHistoryBtn'), searchHistoryDropdown=document.getElementById('searchHistoryDropdown');
const dataStatus=document.getElementById('dataStatus'), bulletinDownload=document.getElementById('bulletinDownload');
const PREFS_KEY='vsccsBulletin1PrefsV1';
const SEARCH_HISTORY_KEY='vsccsBulletin1SearchHistoryV1';
const SEARCH_HISTORY_LIMIT=25;
const INACTIVE_REGION_FILTER='__not_listed_latest_bulletin1__';
function certifierSort(a,b){return norm(a.name).localeCompare(norm(b.name))||norm(a.company).localeCompare(norm(b.company))||norm(a.licence).localeCompare(norm(b.licence))||norm(a.region).localeCompare(norm(b.region))}
function fillRegions(){const regs=[...new Set(mergeData().map(x=>x.region).filter(Boolean))].sort((a,b)=>a.localeCompare(b));regionSel.innerHTML='<option value="">All regions</option>'+regs.map(r=>`<option>${esc(r)}</option>`).join('')+'<option value="'+INACTIVE_REGION_FILTER+'">Not listed in latest Bulletin 1</option>'}
function matches(it,term,reg){if(reg===INACTIVE_REGION_FILTER){if(!it._inactive)return false;}else{if(reg && it.region!==reg)return false;if(!displayInactive.checked&&it._inactive)return false;}if(!term)return true;const hay=norm([it.name,it.company,licenceText(it),it.licence,it.address,it.contact,it.region,categorySearchText(it),it._inactive?'not listed latest bulletin':''].join(' '));return term.split(/\s+/).every(t=>hay.includes(t));}
function catHTML(it){return ['M','P','B','L','H'].map(k=>`<div class="cat"><b>${k}</b><span>${esc(it[k]||'-')}${hiddenCategorySearchText(it,k)}</span></div>`).join('')}
function licenceHTML(it){return it.licence==='ADD-LICENCE'?'<span class="placeholder">Licence not available</span>':`<span class="licence">${esc(it.licence)}</span>`}
function licenceText(it){return it.licence==='ADD-LICENCE'?'Licence not available':String(it.licence||'')}

function mapDestinationFromAddress(address){
  const raw=String(address||'').replace(/\s+/g,' ').trim();
  if(!raw)return '';
  const firstPart=raw.split(/\s+\/\s+/).map(x=>x.trim()).filter(Boolean)[0]||raw;
  if(/\bP\.?\s*O\.?\s*Box\b/i.test(firstPart)){
    const suburb=poBoxSuburbOnly(firstPart);
    if(suburb)return suburb;
  }
  return firstPart;
}
function poBoxSuburbOnly(address){
  let s=String(address||'').replace(/\s+/g,' ').trim();
  s=s.replace(/\bP\.?\s*O\.?\s*Box\b/i,'').trim();
  s=s.replace(/^[\d\w\/-]+\s*/,'').trim();
  const stateMatch=s.match(/([A-Za-z][A-Za-z'’.-]*(?:\s+[A-Za-z][A-Za-z'’.-]*){0,5})\s+\b(NSW|VIC|QLD|ACT|SA|WA|TAS|NT)\b\s*(\d{4})?/i);
  if(stateMatch)return stateMatch[0].trim();
  const postMatch=s.match(/([A-Za-z][A-Za-z'’.-]*(?:\s+[A-Za-z][A-Za-z'’.-]*){0,5})\s+(\d{4})\b/);
  if(postMatch)return postMatch[0].trim();
  return s;
}
function mapsUrlForAddress(address){
  const dest=mapDestinationFromAddress(address);
  if(!dest)return '';
  return 'https://www.google.com/maps/dir/?api=1&origin=Current%20Location&destination='+encodeURIComponent(dest)+'&travelmode=driving';
}
function mapAddressLink(address){
  const label=esc(address||'');
  const dest=mapDestinationFromAddress(address);
  const url=mapsUrlForAddress(address);
  if(!url)return label;
  return `<a class="mapLink" href="${esc(url)}" target="_blank" rel="noopener" title="Open Google Maps directions from your current location">${label}</a>`;
}

function card(it){const inactive=it._inactive?' title="Not listed in the latest Bulletin 1"':'';return `<article class="card ${it._edited?'edited':''} ${it._inactive?'inactive':''}">${it._inactive?`<span class="inactiveDot"${inactive}></span>`:''}<h2>${esc(it.name||'Unnamed certifier')}</h2><div class="company">${esc(it.company||'')}</div><div class="meta"><div class="label">Licence</div><div>${licenceHTML(it)}</div><div class="label">Region</div><div>${esc(it.region)}</div><div class="label">Address</div><div>${mapAddressLink(it.address)}</div><div class="label">Contact</div><div>${linkEmails(it.contact)}</div></div><div class="cats">${catHTML(it)}</div><div class="foot">${it._edited?'Edited locally • ':''}${it._inactive?'<span class="inactiveNote">Not listed in latest Bulletin 1</span> • ':''}Source: ${esc(it.source||'Local record')} • Page ${esc(it.page||'')}</div></article>`}
function table(items){return `<div class="tableWrap"><table class="listTable"><thead><tr><th>Name</th><th>Company</th><th>Licence</th><th>Region</th><th>Address</th><th>Contact</th><th>M</th><th>P</th><th>B</th><th>L</th><th>H</th></tr></thead><tbody>${items.map(it=>`<tr class="${it._edited?'edited':''} ${it._inactive?'inactive':''}"><td>${esc(it.name)}</td><td>${esc(it.company)}</td><td>${licenceHTML(it)}</td><td>${esc(it.region)}</td><td>${mapAddressLink(it.address)}</td><td>${it._inactive?'<span class="inactiveTableDot" title="Not listed in the latest Bulletin 1"></span>':''}${linkEmails(it.contact)}</td><td>${esc(it.M)}</td><td>${esc(it.P)}</td><td>${esc(it.B)}</td><td>${esc(it.L)}</td><td>${esc(it.H)}</td></tr>`).join('')}</tbody></table></div>`}

function storageGetJSON(key,fallback){try{const raw=localStorage.getItem(key);return raw?JSON.parse(raw):fallback;}catch(e){return fallback;}}
function storageSetJSON(key,value){try{localStorage.setItem(key,JSON.stringify(value));}catch(e){}}
function loadPrefs(){const prefs=storageGetJSON(PREFS_KEY,{});if(Object.prototype.hasOwnProperty.call(prefs,'displayInactive'))displayInactive.checked=!!prefs.displayInactive;}
function savePrefs(){storageSetJSON(PREFS_KEY,{displayInactive:!!displayInactive.checked});}
function getSearchHistory(){const list=storageGetJSON(SEARCH_HISTORY_KEY,[]);return Array.isArray(list)?list.map(x=>String(x||'').trim()).filter(Boolean).slice(0,SEARCH_HISTORY_LIMIT):[];}
function setSearchHistory(list){const cleaned=[];list.forEach(item=>{const v=String(item||'').trim();if(v&&!cleaned.some(x=>norm(x)===norm(v)))cleaned.push(v);});storageSetJSON(SEARCH_HISTORY_KEY,cleaned.slice(0,SEARCH_HISTORY_LIMIT));}
function addSearchHistory(term){const clean=String(term||'').trim();if(!clean)return;const existing=getSearchHistory().filter(x=>norm(x)!==norm(clean));setSearchHistory([clean,...existing]);}
function removeSearchHistory(term){setSearchHistory(getSearchHistory().filter(x=>norm(x)!==norm(term)));renderSearchHistoryDropdown();}
function renderSearchHistoryDropdown(){const history=getSearchHistory();if(!history.length){searchHistoryDropdown.innerHTML='<div class="searchHistoryEmpty">No previous searches</div>';return;}searchHistoryDropdown.innerHTML=history.map(term=>`<button type="button" class="searchHistoryItem" data-term="${esc(term)}"><span class="searchHistoryTerm">${esc(term)}</span><span class="searchHistoryDelete" data-delete="${esc(term)}" title="Delete this search" aria-label="Delete ${esc(term)}">×</span></button>`).join('');}
function showSearchHistory(){renderSearchHistoryDropdown();searchHistoryDropdown.classList.add('show');searchHistoryBtn.classList.add('open');searchHistoryBtn.setAttribute('aria-expanded','true');}
function hideSearchHistory(){searchHistoryDropdown.classList.remove('show');searchHistoryBtn.classList.remove('open');searchHistoryBtn.setAttribute('aria-expanded','false');}
function toggleSearchHistory(){searchHistoryDropdown.classList.contains('show')?hideSearchHistory():showSearchHistory();}
function render(){const data=mergeData().sort(certifierSort);const term=norm(q.value);const reg=regionSel.value;const items=data.filter(it=>matches(it,term,reg)).sort(certifierSort);const hiddenInactive=reg!==INACTIVE_REGION_FILTER&&!displayInactive.checked?data.filter(it=>it._inactive).length:0;document.getElementById('count').textContent=`${items.length} of ${data.length} certifier records shown${hiddenInactive?` (${hiddenInactive} inactive hidden)`:''}`;results.innerHTML=(viewSel.value==='table'?table(items):`<div class="grid">${items.map(card).join('')}</div>`)}
q.addEventListener('input',render);
q.addEventListener('keydown',e=>{if(e.key==='Enter'){addSearchHistory(q.value);hideSearchHistory();renderSearchHistoryDropdown();}});
q.addEventListener('change',()=>{addSearchHistory(q.value);renderSearchHistoryDropdown();});
[regionSel,viewSel].forEach(el=>el.addEventListener('input',render));
displayInactive.addEventListener('change',()=>{savePrefs();render();});
document.querySelector('.displayInactiveControl').addEventListener('click',e=>{if(e.target.closest('.switch'))return;displayInactive.checked=!displayInactive.checked;savePrefs();render();});
clearSearch.addEventListener('click',()=>{q.value='';hideSearchHistory();render();q.focus();});
searchHistoryBtn.addEventListener('click',e=>{e.stopPropagation();toggleSearchHistory();});
searchHistoryDropdown.addEventListener('click',e=>{e.stopPropagation();const del=e.target.closest('[data-delete]');if(del){removeSearchHistory(del.dataset.delete);return;}const item=e.target.closest('.searchHistoryItem');if(item){q.value=item.dataset.term||'';hideSearchHistory();addSearchHistory(q.value);render();q.focus();}});
document.addEventListener('click',e=>{if(!e.target.closest('.searchLabel')&&!e.target.closest('#searchHistoryBtn'))hideSearchHistory();});
document.addEventListener('keydown',e=>{if(e.key==='Escape')hideSearchHistory();});
const backToTop=document.getElementById('backToTop');
function updateBackToTop(){const doc=document.documentElement;const scrollable=Math.max(0,doc.scrollHeight-window.innerHeight);const trigger=scrollable*0.25;backToTop.classList.toggle('show',window.scrollY>=trigger&&scrollable>0)}
window.addEventListener('scroll',updateBackToTop,{passive:true});
window.addEventListener('resize',updateBackToTop);
backToTop.addEventListener('click',()=>window.scrollTo({top:0,behavior:'smooth'}));

function formatBulletinDateLabel(isoDate){
  const s=String(isoDate||'').trim();
  const m=s.match(/^(\d{4})-(\d{2})-(\d{2})$/);
  if(!m)return '';
  const months=['January','February','March','April','May','June','July','August','September','October','November','December'];
  const month=months[Number(m[2])-1]||'';
  return month?`${Number(m[3])} ${month} ${m[1]}`:'';
}
function applyBulletinMeta(data){
  const version=data.version||data.revision||'current version';
  const btn=data.downloadButton||data.bulletinDownload||{};
  const fallbackText='Download Bulletin 1 | '+version;
  const label=btn.label||'Download Bulletin 1';
  const dateLabel=btn.publishedLabel||formatBulletinDateLabel(btn.publishedDate||data.publishedDate);
  const revLabel=btn.revision||data.revision||'';
  const builtText=[label,dateLabel,revLabel].filter(Boolean).join(' | ');
  const downloadText=btn.text||builtText||fallbackText;
  const downloadUrl=btn.url||data.downloadUrl||bulletinDownload.getAttribute('href')||'#';
  bulletinDownload.href=downloadUrl;
  bulletinDownload.textContent=downloadText;
  bulletinDownload.target=btn.target||'_blank';
  bulletinDownload.rel=btn.rel||'noopener';
  if(btn.download===false){
    bulletinDownload.removeAttribute('download');
  }else{
    bulletinDownload.setAttribute('download',btn.fileName||'');
  }
  const loadedNote=data._loadedFrom?' • JSON: '+data._loadedFrom.replace(/^https?:\/\//,''):'';
  if(dataStatus)dataStatus.textContent=(data.source||('Loaded Bulletin 1 data - '+version))+' - '+BASE_DATA.length+' records'+loadedNote;
}
function isCcmcHost(hostname){
  return /(^|\.)ccmc\.com\.au$/i.test(String(hostname||''));
}
function cacheBustUrl(url){
  return url+(url.indexOf('?')>-1?'&':'?')+'v='+Date.now();
}
function uniqueList(list){
  const out=[];
  list.forEach(item=>{const v=String(item||'').trim();if(v&&!out.includes(v))out.push(v);});
  return out;
}
function getBulletinDataUrlCandidates(){
  const currentOrigin=window.location&&window.location.origin?window.location.origin:'';
  const currentHost=window.location&&window.location.hostname?window.location.hostname:'';
  const candidates=[];
  if(isCcmcHost(currentHost)){
    candidates.push('/data/bulletin1-data.json');
    if(currentOrigin)candidates.push(currentOrigin.replace(/^http:/i,'https:')+'/data/bulletin1-data.json');
  }
  BULLETIN1_DATA_URLS.forEach(url=>candidates.push(url));
  return uniqueList(candidates);
}
async function fetchTextWithFetch(url){
  if(!window.fetch)throw new Error('fetch API unavailable');
  const res=await fetch(url,{cache:'no-store',credentials:'omit'});
  if(!res.ok)throw new Error('HTTP '+res.status);
  return await res.text();
}
function fetchTextWithXHR(url){
  return new Promise((resolve,reject)=>{
    try{
      const xhr=new XMLHttpRequest();
      xhr.open('GET',url,true);
      if(xhr.overrideMimeType)xhr.overrideMimeType('application/json');
      xhr.timeout=12000;
      xhr.onreadystatechange=function(){
        if(xhr.readyState!==4)return;
        if((xhr.status>=200&&xhr.status<300)||(xhr.status===0&&xhr.responseText))resolve(xhr.responseText);
        else reject(new Error('HTTP '+xhr.status));
      };
      xhr.onerror=function(){reject(new Error('network or CORS error'));};
      xhr.ontimeout=function(){reject(new Error('timeout'));};
      xhr.send(null);
    }catch(e){reject(e);}
  });
}
function parseBulletinJson(text,url){
  const clean=String(text||'').replace(/^﻿/,'').trim();
  if(!clean)throw new Error('empty response');
  const data=JSON.parse(clean);
  if(!data||!Array.isArray(data.records))throw new Error('JSON did not contain a records array');
  data._loadedFrom=url;
  return data;
}
async function tryLoadBulletinJson(){
  const urls=getBulletinDataUrlCandidates();
  const errors=[];
  for(const baseUrl of urls){
    const url=cacheBustUrl(baseUrl);
    const attempts=[['fetch',fetchTextWithFetch],['xhr',fetchTextWithXHR]];
    for(const attempt of attempts){
      try{
        const text=await attempt[1](url);
        const data=parseBulletinJson(text,baseUrl);
        data._loadedMethod=attempt[0];
        return data;
      }catch(e){
        errors.push(attempt[0]+' '+baseUrl+' - '+(e&&e.message?e.message:e));
      }
    }
  }
  throw new Error(errors.join(' | '));
}

function getBulletinWatchUrlCandidates(data){
  const currentOrigin=window.location&&window.location.origin?window.location.origin:'';
  const currentHost=window.location&&window.location.hostname?window.location.hostname:'';
  const cfg=(data&&data.bulletinWatch)||{};
  const candidates=[];
  if(cfg.endpoint)candidates.push(cfg.endpoint);
  if(isCcmcHost(currentHost)){
    candidates.push('/data/bulletin1-watch.php');
    if(currentOrigin)candidates.push(currentOrigin.replace(/^http:/i,'https:')+'/data/bulletin1-watch.php');
  }
  BULLETIN1_WATCH_URLS.forEach(url=>candidates.push(url));
  return uniqueList(candidates);
}
function buildBulletinWatchUrl(baseUrl,data){
  const cfg=(data&&data.bulletinWatch)||{};
  const currentUrl=(cfg.currentUrl)||((data&&data.downloadButton&&data.downloadButton.url)||(data&&data.downloadUrl)||'');
  const params={
    source:'bulletin1-app',
    version:(data&&data.version)||'',
    revision:(data&&data.revision)||'',
    publishedDate:(cfg.lastPublishedDate)||(data&&data.publishedDate)||'',
    currentUrl:currentUrl,
    t:String(Date.now())
  };
  const qs=Object.keys(params).map(k=>encodeURIComponent(k)+'='+encodeURIComponent(params[k])).join('&');
  return baseUrl+(baseUrl.indexOf('?')>-1?'&':'?')+qs;
}
function triggerBulletinWatchBeacon(url){
  try{
    const img=new Image();
    img.alt='';
    img.referrerPolicy='no-referrer';
    img.src=url+(url.indexOf('?')>-1?'&':'?')+'beacon=1';
  }catch(e){/* no visible error needed */}
}
function applyBulletinWatchStatus(status){
  if(!status||!dataStatus)return;
  if(status.found&&status.foundUrl){
    dataStatus.innerHTML=esc(dataStatus.textContent)+' <span class="watchFound">• Possible new Bulletin found</span>';
  }else if(status.manualReminderSent){
    dataStatus.innerHTML=esc(dataStatus.textContent)+' <span class="watchFound">• Manual Bulletin check reminder sent</span>';
  }else if(status.checkedNow){
    dataStatus.innerHTML=esc(dataStatus.textContent)+' <span class="watchOk">• Bulletin watch checked</span>';
  }
}
async function triggerBulletinWatch(data){
  const cfg=(data&&data.bulletinWatch)||{};
  if(cfg.enabled===false)return;
  const urls=getBulletinWatchUrlCandidates(data).map(url=>buildBulletinWatchUrl(url,data));
  let firstUrl=urls[0]||'';
  for(const url of urls){
    try{
      if(!window.fetch)throw new Error('fetch API unavailable');
      const res=await fetch(url,{cache:'no-store',credentials:'omit',mode:'cors'});
      if(!res.ok)throw new Error('HTTP '+res.status);
      const status=await res.json();
      applyBulletinWatchStatus(status);
      return;
    }catch(e){
      console.warn('Bulletin watcher trigger failed for '+url,e);
    }
  }
  if(firstUrl)triggerBulletinWatchBeacon(firstUrl);
}

async function loadBulletinData(){
  if(dataStatus)dataStatus.textContent='Loading Bulletin 1 data…';
  try{
    const data=await tryLoadBulletinJson();
    BASE_DATA=Array.isArray(data.records)?data.records:[];
    ACTIVE_LICENCES=new Set(Array.isArray(data.activeLicences)?data.activeLicences.map(String):BASE_DATA.filter(x=>!x._inactive&&x.licence&&x.licence!=='ADD-LICENCE').map(x=>String(x.licence)));
    applyBulletinMeta(data);
    loadPrefs();
    renderSearchHistoryDropdown();
    fillRegions();
    render();
    updateBackToTop();
  }catch(err){
    console.error('Bulletin 1 data load failed',err);
    if(dataStatus)dataStatus.textContent='Bulletin 1 data could not be loaded.';
    document.getElementById('count').textContent='Data unavailable';
    const attempted=esc(getBulletinDataUrlCandidates().join(', '));
    const message=esc(err&&err.message?err.message:String(err));
    results.innerHTML='<div class="panel dataError"><strong>Bulletin 1 data could not be loaded.</strong><br>Attempted JSON URLs: '+attempted+'<br><span class="small">Last browser error: '+message+'</span><br>Please check that the hosted JSON file exists and that ccmc.com.au allows the page origin to read it.</div>';
  }
}
loadBulletinData();


</script>



]]></description><guid isPermaLink="false">134</guid><pubDate>Sun, 16 Jun 2019 01:06:19 +0000</pubDate></item><item><title>Registering vehicles certified under the Engineering Certification Scheme</title><link>https://www.ccmc.com.au/index.php?/topic/133-registering-vehicles-certified-under-the-engineering-certification-scheme/</link><description><![CDATA[
<p>
	In 2011 the Road Transport (Vehicle Registration) Amendment (Certification of Vehicles) Regulation 2011<br>
	abolished the Engineering Certification Scheme (ECS).<br>
	The scheme was replaced with the Vehicle Safety Compliance Certification Scheme (VSCCS) to move a<br>
	paper based system online and reduce the incidence of fraud and under insurance amongst certifiers.<br>
	The regulation came into effect on 2 December 2011 and from that time, ECS certificates were no longer<br>
	valid.
</p>

<p>
	<br>
	To allow existing ECS certificates to continue to be recognised a transitional provision – Clause 76AP was<br>
	included in the regulation.<br>
	This was intended to be a temporary period of grace to give owners six months to get vehicles with an<br>
	existing ECS certificate that were not yet registered.
</p>

<p>
	<br>
	It was intended that the grace period would end on 19 June 2012. However Roads and Maritime Services<br>
	was able to extend the period until September 2017 when the regulation was revised and the clause was<br>
	removed.<br>
	This legal change means Roads and Maritime is no longer accepting ECS certificates and some modified<br>
	and individually constructed vehicles will now have to be certified by a licensed certifier under the VSCCS.
</p>

<p>
	<br><strong>Do all modified vehicles require certification?</strong><br>
	Only vehicles with significant modifications require certification. A list of significant modifications is included<br>
	in Vehicle Standards Information Sheet 06
</p>

<p>
	<br><strong>What is the Vehicle Safety Compliance Certification Scheme?</strong><br>
	The VSCCS licenses certifiers to inspect modified and individually constructed vehicles and certify their<br>
	compliance with the relevant vehicle safety standards.<br>
	What is a VSCCS certificate?<br>
	VSCCS certificates show that a modified or individually constructed vehicle has been assessed by a<br>
	licensed certifier, complies with the applicable vehicles standards and is safe to operate on NSW roads.<br>
	There is considerable road safety risk associated with modified and individually constructed vehicles that<br>
	have not been inspected by a licensed certifier.<br><br><strong>Which vehicles will now need a VSCCS certificate?</strong><br>
	If a modified vehicle has an ECS certificate but has never been registered then the ECS certificate can no<br>
	longer be used and a VSCCS certificate is now required.<br>
	If a vehicle has been further significantly modified since certification under the ECS it will only require a<br>
	VSCCS certificate for the additional modifications.<br>
	A modified vehicle does not require a VSCCS certificate if it has already been registered and the ECS<br>
	certificate is recorded in DRIVES. This includes:<br>
	 Currently registered vehicles<br>
	 Vehicles with lapsed or cancelled registration<br>
	 Vehicles transferring between different types of registration.
</p>

<p>
	<br><strong>How can I tell if a modified vehicle’s ECS certificate is recorded on DRIVES?</strong><br>
	A modified vehicle will have one of the following vehicle conditions recorded on DRIVES and the<br>
	registration paperwork:<br>
	 V87 (modified vehicle)<br>
	 V88 (vehicle modified for wheelchair)<br>
	 G094 (use only in conjunction with an authorised club event or maintenance)<br>
	 GO96 (modified as per report number).
</p>

<p>
	<br><strong>I have a modified vehicle which was previously registered using an ECS certificate, but the<br>
	conditions are not recorded in DRIVES and do not appear on my registration paperwork. What do I<br>
	do?</strong><br>
	If Roads and Maritime has no record of having accepted the ECS certificate, you will need to obtain a<br>
	VSCCS certificate.
</p>

<p>
	<br><strong>Why has this happened now?</strong><br>
	On 1 September 2017, Clause 76AP was removed from the Regulation which means RMS can no longer<br>
	accept ECS certificates.
</p>

<p>
	<br><strong>How was industry consulted?</strong><br>
	Industry and motoring enthusiasts were consulted extensively about this change when the ECS was<br>
	abolished and the VSCCS scheme was launched in 2012.
</p>

<p>
	<br>
	Roads and Maritime has engaged with industry and stakeholder groups prior to the release of <a href="https://www.rms.nsw.gov.au/documents/business-industry/examiners/ais-notice-36.pdf" rel="external nofollow">AIS Notice36</a> and <a href="https://www.rms.nsw.gov.au/documents/business-industry/examiners/vsccs-notice-15.pdf" rel="external nofollow">VSCCS Notice 15</a>.
</p>

<p>
	<br><strong>What will it cost?</strong><br>
	Fees for inspecting and certifying vehicles are different for all vehicles
</p>
<p>
<a class="ipsAttachLink" href="https://www.ccmc.com.au/applications/core/interface/file/attachment.php?id=337" data-fileext="pdf" data-fileid="337">ais-notice-36-faq.pdf</a></p>
]]></description><guid isPermaLink="false">133</guid><pubDate>Sun, 16 Jun 2019 01:03:59 +0000</pubDate></item></channel></rss>
