91³Ô¹ÏÍø

Watch CBS News

Godley couple, ex-police officials tied to prostitution scheme, intel-gathering effort, district attorney says

North Texas couple and former Godley police officials are under investigation after authorities say a prostitution conspiracy and a scheme to gather intelligence on local public officials were further revealed during a search of the couple's home last week.

The District Attorney's Office for Johnson & Somervell Counties said Wednesday that the investigation centers on ongoing criminal activity involving Michael and Ashley Ketcherside and former members of the Godley Police Department. 

Authorities say the couple allegedly ran a prostitution and racketeering operation that investigators describe as a pattern spanning nearly 10 years. The activity allegedly included promoting and facilitating prostitution.

While Michael Ketcherside has been arrested, Ashley Ketcherside has not, though she is named in the District Attorney's Office release on the charges. No one at the Ketcherside home responded to CBS News Texas' request for comment on Wednesday.

"This is an active and ongoing investigation, and additional arrests are anticipated," District Attorney Timothy M. Good said.

Search warrant and seized devices

michaelk.png
Michael Ketcherside Johnson County Jail

A search warrant was executed on March 31 at the Ketchersides' residence, where authorities seized electronic communications and storage devices believed to contain evidence of criminal activity, according to the release.

The devices contained evidence of a prostitution conspiracy involving the Ketchersides and numerous "clients" or "Johns," and evidence showing the Ketchersides coordinated with then‑Godley Police Chief Matthew Cantrell and other officers, according to the release.

Cantrell, who was arrested Tuesday on a charge of promotion of prostitution and is out of jail on bond, told CBS News Texas he had no comment.

He and former Officer Solomon Omotoya were indicted in late 2025 after the City of Godley found discrepancies in its fleet fuel card purchases. The Valley Mills City Council also fired Cantrell as its police chief in early 2025 after a council member flagged suspicious police‑department credit‑card charges.

Michael Ketcherside and Omotoya were arrested on March 31 for continuous promotion and solicitation of prostitution.

Court documents describe years‑long scheme  

michaelcantrell.png
Matthew Cantrell Johnson County Jail

According to court records obtained by CBS News Texas:

  • Cantrell was arrested Tuesday on a charge of promotion of prostitution amid a widening investigation.

  • Michael and Ashley Ketcherside allegedly ran a years-long prostitution and racketeering operation, with Ashley Ketcherside coordinating clients and communicating regularly with Cantrell and Omotoya.

  • Omotoya admitted soliciting Ashley Ketcherside for sex in exchange for yard work or babysitting and said both he and Cantrell were aware of the Ketchersides' operation.

  • Cantrell pulled criminal histories on city officials and on people involved in disputes with Ashley Ketcherside, while maintaining close ties with the Ketchersides.

  • Cantrell admitted to subscribing to Ashley Ketcherside's OnlyFans account.

  • Cantrell acknowledged longstanding knowledge of the Ketchersides' prostitution enterprise and said Ashley Ketcherside charged about $1,000 per hour.

Officials allegedly targeted

According to the District Attorney's Office, the alleged purpose of the group was to compile information on local public officials and private citizens they viewed as opponents or enemies.

The "adversaries" included members of the Godley City Council, Godley ISD School Board, the former mayor, and the former Godley police chief.

 "As the investigation progresses, we will update the public as needed," Good said in the release.

Ongoing updates

CBS News Texas will provide updates as more information becomes available.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=50747257b890e014813016b79ece0fb2'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });