TLDR; these two lists are created in different ways by the system, and fundamentally lists out different kinds of data. In order for these numbers to be perfectly correlated there is a few more factors that must be checked, and its hard to be absolutely sure that there is never a divergence - these are two different lists.
If you are clicking the “Any enrollment status” list in tracker capture(the first default list), and then download the data, you get a lower number of records than if you download events in event analytics. In tracker capture you download a list of 4742 Tracked entity instances, while in the event reports you see 4746 Events. As you are aware, the two lists are produced based on different data, but as you also point out there is many factors that should contribute to the number of records being the same in these two lists. There is however also things that can still be different in this comparison, and I till offer some other some other things to check for you.
- One source of a difference that is what @Peter mentioned. Even if you have a non-repeatable stage, it might be that the stage was repeatable earlier in the development of your metadata. If there has been a period where repeatable events was allowed, there can be more events than tracked entity instances.
- Another way to get more events than TEI, is repeated enrollments. Even when the program stage is not repeatable, the enrollment can potentially be repeated unless the flag for “only enroll once” is set.
- The list in tracker capture lists TEI based on ownership org unit, and when listing data for org unit A, it is the owner org unit that is used as the basis for listing TEI. When listing data from the analytics engine(event reports), it is always the enrollment org unit and event org unit that is used to list the data - not the owner org unit. In a use case where all data entry users only have access to one org unit each, and never transfer data between org units, the Owner org unit, enrollment org unit and event org unit will always be the same. If a user has search access to several org units, it might be possible to add events from one org unit to enrollments from another - based on protection level. The same divergence might happen if the users use the “Refer” functionality(bottom button):
These are things I can think of, but the short answer is that listing events from the analytics engine is a bit different from listing TEI in the tracker capture app - and there are many sources of divergence. To find what is the difference here it might be necessary to compare and see the exact difference. If could be possible to compare the TEI ID from the event list to the TEI IDs exported from tracker capture, and this would allow us to see wether there are elements missing in one list, or wether there is one TEI with several events.