Using on here is perfectly idiomatic. And it's quoted as an example in a respected dictionary:
noun
(congratulations)
words expressing one’s praise for an achievement or good wishes on a special occasion:
our congratulations to the winners
[as exclamation]:
congratulations on a job well done!
- [mass noun] the action of expressing congratulations:
he began pumping the hand of his son in congratulation
Congratulations for would be understood. Google Ngrams shows that on is far more common than for, though.
[As an aside, in TCS sounds odd, but I've no idea what TCS is, so it may be fine.]
'Since' and 'From'
'Since' talks about one particular point of time till now.
I have been working since 7 am
'From' in most of the cases talks about the starting point and ending point. Said that, the format could be 'from....to/till/until'
The shop is open from 9 in the morning to 6 in the evening
Quite close is 'since' and 'for'
'Since' and 'For'
Okay, as I said, 'since' talks about a particular point. So, you need to mention "since" which date the thing has been happening.
On the other hand, 'for' is used for a total period of time and you don't need to define a starting point.
The best example I can think of is...
I have been waiting for two hours
but...
I have been waiting since 2 o'clock
In the latter example, you need to define the starting point.
Another example:
I have been living in this house for 10 years
I have been living in this house since 2005
So, in your case, you have known him for the past 15 years OR since 2000.
Best Answer
is the correct title to use. When someone visits you, you receive a visit from them. We would use by with the passive voice: