I am stuck. When i hard-code exact value of DateTime column in a temp field and use it instead of DateTime it works.
#DateTime = "2017-12-04 20:52:41.000"
mutate {
add_field => ["NewTimestamp","2017-12-04 20:52:41.000"]
}
date{
match => ["NewTimestamp", "YYYY-MM-dd HH:mm:ss.SSS"]
target => "@timestamp"
}