Dúvidas com camadas (GUI, DAL, BLL, Model)

Pessoal, estou com uma dúvida que vem me “matando” kkkkk

   private void btnFinalizarOrdem_Click(object sender, EventArgs e)
    {
        try
        {
            OrdemServico ordemServico = new OrdemServico();
            string textTemp = dgvOrdem.CurrentRow.Cells[6].Value.ToString();
            ordemServico.CodOrdem = Convert.ToInt32(dgvOrdem.CurrentRow.Cells[0].Value);
            ordemServico.TipoOrdem = Convert.ToInt32(dgvOrdem.CurrentRow.Cells[1].Value);
            ordemServico.Defeito = dgvOrdem.CurrentRow.Cells[4].Value.ToString();
            ordemServico
            DialogResult dResult = MessageBox.Show("Deseja realmente encerrar a Ordem de Serviço do cliente " + textTemp + "?",
                "Encerrar Ordem de Serviço", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
            if (dResult.ToString() == "Yes")
            {
                Conexao conexao = new Conexao(DadosConexao.ConnString);
                BLLOrdemServico bOS = new BLLOrdemServico(conexao);
                ordemServico.Status = 'F';
                ordemServico.CodOrdem = Convert.ToInt32(dgvOrdem.CurrentRow.Cells[0].Value.ToString());
                bOS.EncerrarOS(ordemServico);
                MessageBox.Show("A Ordem de Serviço do cliente " + textTemp + " foi encerrada com sucesso!",
                    "Encerrar Ordem de Serviço", MessageBoxButtons.OK, MessageBoxIcon.Information);
                CarregarTela();
            }
        }
        catch (Exception erro)
        {
            MessageBox.Show("Impossível encerrar a Ordem de Serviço selecionada!\n" + erro.Message);
        }
    }

No meu projeto cada classe tem um propósito afim de manter a solução mais organizada, etc. Porém, surgiu uma dúvida no momento que iniciei esse método. Nele, eu finalizo uma Ordem de Serviço com o objetivo de não deixar o usuário ter mais acesso a edição, porém como pode ser notado, eu possuo uma classe de validação de dados, e é neste ponto que entra minha dúvida.

ordemServico.CodOrdem = Convert.ToInt32(dgvOrdem.CurrentRow.Cells[0].Value);

Esta linha acima seta o valor contido no meu datagriview para o meu objeto da classe model, no entanto, no form que eu realizo o cadastro da ordem de serviço eu possuo um combobox que carrega uma lista de clientes a partir de uma tabela do meu banco de dados, dessa forma, se eu simplesmente pegar o valor (nome do cliente) que está no meu datagridview, eu terei problemas na hora de validar já que se trata do código do cliente e não do nome.

OBS: No form da ordem de serviço eu também possuo a opção de finalizar a O.S, então seriam dois formulários que constam essa mesma opção, sendo que pela forma atual, eu terei que desenvolver praticamente dois métodos para a mesma operação.

Então, o correto seria eu deixar meu formulários públicos para eu ter acesso aos controles e assim criar uma classe .dll e desenvolver a partir dela?