So, maybe there is another way to identify the call which goes through many asterisks(after transfer, parking, etc)?
I think I at first time I create sip header X-Shared-ID and put call-id. In other asterisks I want to save that value in cel.
Are there any other approach?
You could set up a central database, add triggers to your CDR/CEL tables which write an ID record to another table. Separately, write a program to read the ID tables, joined to the CDR/CEL tables, and push any inserted or updated records to the central database. From there you should have a complete history of the call. Reporting on that may prove to be tricky. Also, the central db cannot use the auto-increment id fields the same as on each individual server. Take the primary key off or you’ll end up with duplicate records.