Has anyone come up with an elegant way to search data stored on Authorize.net’s Customer Information Manager (CIM)?
Based on their XML Guide there doesn’t appear to be any search capabilities at all. That’s a huge short-coming.
As I understand it, the selling point for CIM is that the merchant doesn’t need to store any customer information. They merely store a unique identifier for each and retrieve the data as needed. This may be great from a PCI Compliance perspective, but it’s horrible from a flexibility standpoint.
A simple search like “Show me all orders from Texas” suddenly becomes very complicated.
How are the rest of you handling this problem?
The short answer is, you’re correct: There is no API support for searching CIM records. And due to the way it is structured, there is no easy way to use CIM alone for searching all records.
To search them in the manner you describe:
Yes, that’s onerous. But it is literally the only way to proceed.
The previously mentioned reporting API applies only to transactions, not the Customer Information Manager.
Note that you can collect the kind of data you want at the time of recording a transaction, and as long as you don’t make it personally identifiable, you can store it locally.
For example, you could run a request for all your CIM customer profile records, and store the state each customer is from in a local database.
If all you store is the state, then you can work with those records, because nothing ties the state to a specific customer record. Going forward, you could write logic to update the local state record store at the same time customer profile records are created / updated, too.
I realize this probably isn’t what you wanted to hear, but them’s the breaks.