This innocent little question reads like a major corporate failure in so many levels...
We recently hired a firm to convert an application from .NET to .NET Core.
Let me take a guess. Two or three years ago, it became obvious that you would need to. Management shuffled that decision on their desks until last year. Last year they compared many contractors and brooded over contract language and payment modalities. And now the project can start. Well, reality did not stop and did not wait for you. That project was good three years ago, but Microsoft has announced, put through a beta phase and released .NET 5 in the meantime, superseding both .NET and .NET Core, so your corporate process has slowed you down so much that by now, your good project has become a doomed project, bringing your old legacy project into the world of slightly newer legacy projects. It's like finding out your iPhone 6 is too slow and asking for an iPhone 7 three years ago and this year finally the order went to the right department to get one for you. Congratulations to your brand new legacy phone. If you want to be up to date, your process of becoming up to date needs to be at least as fast a the cycle you want to be on top of. And compared to the other technologies, Microsoft .NET isn't exactly moving at lightspeed. You are just too slow.
As the Scrum Master, I'm trying to understand Refinement in this situation.
There is no refinement and you are not their Scrum Master. You have hired a company for a project. Not a group of developers that you incorporate into your team structure, a company. They have their own project management. They will give you updates if you ask for it. That's it.
We as a company hired this firm due to their stated understanding of how to do the conversion.
What I do not get... you happen to have a .NET application, but no .NET developers? How did that happen? Who is maintaining this application?
We have created epics that speak to an overall application that needs to be converted.
Well, I think you have zero understanding of what "converting to .NET Core" actually means. Given no .NET developers on your part that is not your fault, but it's is highly inconvenient for your company, going into this blindly with no understanding of what has to be done.
They should understand what tickets need to be created, in what order they must be completed, and also what priority each has. They should have an understanding of points and estimates per task.
Why would they use Scrum at all? You hired them to do a project. They could run it any way they want. Assuming they do want to use Scrum for some reason, there is no user stories here. You cannot go feature by feature of the application, that makes zero sense. Changes from .NET to .NET Core are basically infrastructure changes. All the code might still run the same, but network communication has to be changed. Or the database technology. You cannot go into this project and say "we will do the feature about user-login first". You cannot change database technology for one feature. Making that feature run independent of the others would be more work than just converting it whole.
Typically I'm accustomed to the Product Owner running Refinement, having prioritized the backlog, going through stories, tasks, and bugs and getting feedback on story points and priority.
Maybe they do that. But from the outside I would say it's not your job. If they do Scrum, it's their Scrum Masters job. Showing you their backlog work items would mean nothing to you, because they do not map to the features you know from your application.
So as a summary: if you want to be their Scrum Master, you need to actually hire .NET developers into your team. Since you have not, but instead given a contract to do a project to an outside company, they will do the job as they see fit. Maybe they will use Scrum or maybe not, but their work items will not look like anything you would have come up with, due to the nature of the task. It's purely technical and has nothing to do with what the application actually does.