Emails sent by my server successfully hits the inbox of pretty much all email providers, except Outlook.com.
Authentication-Results: spf=pass (sender IP is xxx.xxx.xxx.xxx)
smtp.mailfrom=mydomain.com; outlook.com; dkim=pass (signature was verified)
header.d=mydomain.com;outlook.com; dmarc=pass action=none
header.from=mydomain.com;
Looking at the message source, I can see that it passes all the checks, but still goes to Junk folder.
Is there trick to get emails to Inbox instead of Junk in Outlook.com?
This isn't really a suitable question for SO as it has nothing to do with programming, but I'm familiar with it, so whatever...
Welcome to the world of random spam filter discrimination... You have no direct control over this. It's mainly up to your recipients - if they have a track record of reporting your messages as spam, then messages will end up in spam. Unfortunately many users treat "report as spam" as being some kind of alternative to "unsubscribe".
I would recommend signing up for Microsoft's JMRP programme to get feedback when users report messages as spam, however, I should warn you that getting onto it is extremely difficult - It took me about 20 applications over 4.5 years before I managed to get on it. The data will show you how many messages are being delivered and how many reported as spam, for each IP address you send from. A user reporting rate of 0.1% seems sufficient to warrant all your messages being marked as spam.
You should also sign up for their smart network data service (SNDS).
Be warned that there is also very little support for these services - I can imagine that the admins have to deal with a lot of abuse from real spammers, but that leads to them failing to respond to real requests.
FWIW, I find Gmail is considerably worse than Outlook; their postmaster tools are simply broken, and they provide no support at all. Often I can't even send myself a message (i.e. from my own gmail account to the same account!) without it being classified as spam, even though I hardly use my account.