When you have problems with type conversions, you should always check what types are involved. Also, when you have a line doing several things, you should find out which one is failing.
Because you didn’t give us any details, I’ll have make a plenty of assumptions.
I assume that ActivationDateTime is utcDateTime and set_purchaseDate() expects System.DateTime. DateTimeUtil::date() is there probably because you want to remove the date part. The fact that there is no handling of time zones may be a bug, or maybe it’s acceptable in your case. It seems that it’s failing on the call of request.set_purchaseDate() and it would behave the same if you provided a fixed value (i.e. the rest of your code could be ignored, as it’s relevant to the problem).
There is a known issue which indeed is related to CIL; you don’t need a batch to see it. Your code expects that the X++ date value (returned by DateTimeUtil::date()) will be implicitly converted to the .NET structure System.DateTime, but it doesn’t happen in CIL. You should do the conversion explicitly, e.g. with utcDateTime2SystemDateTime().