I have booked a non-refundable train ticket from Frankfurt to Amsterdam. After paying, I found out that I have only 4 minutes to change trains in Utrecht station. Is this sufficient time to make the transfer?
It depends on the arrival and departure track, and how fast you walk, but generally, I'd say yes, unless maybe you have to switch from track 20 to track 1. As far as I'm aware, ICE trains from Germany normally arrive in Utrecht at the same platform as other trains to Amsterdam or next to that platform.
In addition, given you switch trains at Utrecht, that would seem to indicate that you're going to switch to a normal NS intercity train, and normal NS intercity trains do not have reservations, and tickets are generally valid for an entire day. As far as I'm aware, that means that even if you miss your connection, you should be able to take the next train.