Did you configure the button to run the microflow asynchronously? That allows for long running functions without timeouts.
For long running conversion I usually use executeMicroflowInBackground from CommunityCommons. To keep track of progress, I usually add some logging.