This can be done without CPL, and the design could get a bit complicated. I ran across the same thing in my lab, and what I did was created a FindMe device teplate with a bogus SIP domain that I use just for call routing to Lync.
Example:
My FindMe domain (also my Lync SIp Domain): zacolton.local
Device template to identify Lync device: {username}@lync.zacolton.local
search rule pointing to B2BUA removes "lync" from the SIP URI and then only sends username@zacolton.local
Call flow:
Dialed SIP URI : zacolton@zacolton.local
It hits FindMe and forks:
zacolton.movi@zacolton.local
zacolton.jabbertablet@zacolton.local
zacolton@lync.zacolton.local
Stop search rule matches: (.+)@lync\.zacolton\.local(:.*|;.*|)
And replaces: \1@zacolton\.local\2
Search Rule Target: B2BUA