1. Я бы посоветовал обратиться с этим вопросом в отделы по работе с корпоративными клиентами самих операторов. И мешок денег приготовил бы. И говорил бы шопотом, чтобы не подслушал никто )
Кстати, отдельный вопрос - персональные данные. Предполагаю, что историческую информацию отдадут либо по номерам, записанным непосредственно на Вас, либо с некими анонимными абонентскими идентификаторами вместо номеров.
2. Теперь по технологии.
Во-первых, если абонент находится в Idle (абонентский радиоканал разобран для экономии ёмкости сети и абонентского аккумулятора), его местонахождение известно с точностью до LAC (GSM, CDMA) или TAC (LTE).
Да, известен Cell-ID его последней активности, но нет никаких гарантий, что за это время абонент не убежал на другую соту в пределах LAC/TAC.
Получается, когда абонент в Idle, то, как Вы и написали, его местонахождение уточняется в момент:
- Location Update при смене LAC/TAC
- Periodic Location Update
- Explicit Detach
Когда же абонент находится в состоянии Connected (идёт или только-только закончился разговор либо передача данных), его местонахождение с точностью до соты известно.
Кстати, я исторические данные вытягивал бы не из VLR, а из биллинга: все записи, что в CDR (Call Detail Records), пишутся с указанием CGI/E-CGI.