FreePBX Behind Kamailio Registrar – Extension Routing Issue

I am working on building a hosted PBX platform and am testing an architecture where FreePBX is placed behind Kamailio acting as the SIP registrar and edge proxy.

Current Design

Internet Phones
     ↓
Kamailio (Registrar / Auth / NAT / RTPengine)
     ↓
FreePBX (Dialplan / IVR / Voicemail / SIPStation trunk)

What Is Working

• Phones register successfully to Kamailio
• Kamailio authenticates against a MySQL subscriber database
• Phone-to-phone calling works through Kamailio
• Kamailio to FreePBX SIP trunk is functioning
• FreePBX to Kamailio trunk is functioning
• RTP audio flows correctly
• Outbound PSTN calls from FreePBX work

What Is Not Working

FreePBX does not see device registration or contact state because endpoints register only to Kamailio.

Because of this:

• Ring groups fail
• IVR routing to extensions fails
• Extension dialing from FreePBX features fails
• FreePBX attempts to dial local endpoints instead of routing calls back through Kamailio

We have attempted several approaches including dialplan overrides and static contact routing, but they have not produced a clean or scalable solution.

Question

Is running FreePBX behind an external registrar like Kamailio a supported or commonly deployed architecture?

Or is the recommended approach to use Kamailio primarily as an SBC/NAT/security layer while still allowing phones to register directly to FreePBX?

Any real-world deployment experience or design guidance would be greatly appreciated.

Thanks for the help.