Skip to content
Join our Newsletter

Internal audits offer glimpse behind scenes

Vancouver city hall procurement staff need to be reminded of conflict of interest policies and development office clerks should be trained to foil robbers, according to internal audits.
city hall
The city addressed robbery prevention training and the Procure to Pay buying and tendering system in documents received through Freedom of Information.

Vancouver city hall procurement staff need to be reminded of conflict of interest policies and development office clerks should be trained to foil robbers, according to internal audits.

Summaries of audits are posted on the city website, but the more detailed reports behind them are available via Freedom of Information. Key sections of two reports released under FOI were censored, raising questions about the severity of the problems found.

A Feb. 25, 2015 report about a surprise cash-handling audit at the city’s Development and Building Services Centre examined selected transactions and analyzed risk exposure.

Surprise Cash Handling 2015-266 - Res


The report recommended all staff at the concierge desk work area attend robbery prevention awareness training, but the observations and recommendations regarding physical security were censored. City hall claimed it needed to conceal recommendations and policy advice and information that it feared could harm law enforcement. Under the law, however, public bodies must not withhold a “final report or final audit on the performance or efficiency of a public body or on any of its policies or its programs or activities.”

The report said its objectives were to “determine the extent of compliance to applicable policies, procedures and the effectiveness of internal controls relating to safeguarding of assets, physical security, as well as elements of sustainable business practices in the office area. It said findings and recommendations were discussed with management, which “committed to improve internal controls as noted.”

An April 22, 2015 audit of the Procure to Pay buying and tendering system said the city awarded $127 million worth of contracts in 2014.

Procure 2 Pay Audit 2015-267 - Res

The 2011-launched system in the supply chain management department was intended to streamline procurement and payables, but the March 2015 audit found a backlog of 4,800 invoices, an increase of 800 from March 2014. A quarter of the 80,000 invoices posted in 2014 were paid after 45 days. In the fourth quarter alone, only half the invoices were paid on time, within 30 days.

“We reviewed contracts from 2014 and found that while proper bidding procedures were followed, improvements are needed,” the report said. “Criteria need to be established on when vendor checks are conducted and vendor performance should be captured in an organized fashion. Furthermore procurement staff should receive an annual reminder regarding the conflict of interest policy.”

The report said there was confusion and misunderstanding about the system. “Acceptance and workflow of incomplete invoices. SAP [Procure to Pay] system is not user friendly and difficult to navigate.”

The report also came with a major caution: “The audit is not designed to detect fraud. Accordingly there should be no such reliance.”

Meanwhile, city hall has quietly added a fraud reporting form to the contact page of its website, which was modified Oct. 1. The form is for anyone to “confidentially report fraud, waste and serious misconduct by city employees” and accepts attachments, including documents, photos or video related to alleged violations.

A request to interview interim city manager Sadhu Johnston and internal audit chief Tony Hui was forwarded to the city hall communications office. Spokesman Tobin Postma said via e-mail that the form launched Nov. 3. “To date, we have received six complaints via the online form,” Postma said. “None referenced serious misconduct (e.g. fraud) and all were referred for investigation by [human resources] or operational departments.”

@bobmackin

$(function() { $(".nav-social-ft").append('
  • '); });