JPA + JSF + Primefaces Persistir em tabela de usuario tendo previamente tabela de funcionários populada

Boa tarde.

Preciso criar usuario do sistema (model usuarioLogin) a partir de uma lista de um funcionario (model funcionario) já cadastrado.

O que me ocorre é que consigo alterar um usuarioLogin mas não consigo cadastrar um, isso é devido eu estar passando o parametro <f:param name="id" value="#{funcionario.id}" /> da tela ConsultaFuncionario.xhtml e pegando em <o:viewParam name="id" value="#{cadastroUsuarioLoginBean.usuarioLogin}" /> da tela CadastroUsuarioLogin e esse registro ainda não existir. Acredito que eu esteja no caminho errado, como eu poderia corrigir isso?

Estou fazendo assim:

 @Entity
@Table(name = "USUARIOLOGIN")
public class UsuarioLogin implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;    
private String username;    
private String password;    
private boolean enable;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "USULOG_NIVAUT", joinColumns = @JoinColumn(name = "USU_id"), inverseJoinColumns = @JoinColumn(name = "NIVAUT_id"))
private List<NivelAutoridade> niveisAutoridade;

Classe Funcionario:

@Entity
@Table(name = "funcionario")
public class Funcionario implements Serializable {
private static final long serialVersionUID = 1L;

@NotNull
@ManyToOne(optional = false)
@JoinColumn(name = "profissao_id", referencedColumnName = "id")
private Profissao profissao;

@NotNull
@ManyToOne(optional = false)
@JoinColumn(name = "FuncionarioSituacao_id", referencedColumnName = "id")
private FuncionarioSituacao funcionarioSituacao;

@NotNull
@ManyToOne(optional = false)
@JoinColumn(name = "NivelAutoridade_id", referencedColumnName = "id")
private NivelAutoridade nivelAutoridade;
//private UsuarioLogin usuarioLogin;

@Id
@GeneratedValue
private Long id;
private String nome;
private String funcao;

ConsultaFuncionario.xhtm

<f:metadata>
	<f:viewAction action="#{consultaFuncionariosBean.consultar}" />
</f:metadata>

<ui:define name="titulo">Funcionarios</ui:define>
<ui:define name="corpo">
	<h1>Funcionários</h1>

	<p:megaMenu orientation="#" style="margin-top:20px">
		<p:menuitem value="Novo Funcionário" url="CadastroFuncionario.xhtml"
			icon="ui-icon-pencil" />
	</p:megaMenu>

	<h:form id="frm">
		<p:messages showDetail="false" showSummary="true" autoUpdate="true" />
		<p:dataTable value="#{consultaFuncionariosBean.funcionarios}"
			var="funcionario" border="1" cellspacing="0" cellpadding="2"
			paginator="true" rows="5" paginatorPosition="bottom"
			rowStyleClass="#{funcionario.nome eq 'Kleber Tognoli' ? 'colored' : ''}"
			sortBy="#{funcionario.nome}">

			<p:column headerText="Nome" filterBy="#{funcionario.nome}">
				<h:outputText value="#{funcionario.nome}" />
			</p:column>

			<p:column headerText="Profissão"
				filterBy="#{funcionario.profissao.profissao}">
				<h:outputText value="#{funcionario.profissao.profissao}" />
			</p:column>

			<p:column headerText="Função" filterBy="#{funcionario.funcao}">
				<h:outputText value="#{funcionario.funcao}" />
			</p:column>

			<p:column headerText="Ativo?"
				filterBy="#{funcionario.funcionarioSituacao}">
				<h:outputText
					value="#{funcionario.funcionarioSituacao.funcionarioSituacao}" />
			</p:column>

			<p:column headerText="Nível de Acesso"
				filterBy="#{funcionario.nivelAutoridade.id}">
				<h:outputText value="#{funcionario.nivelAutoridade}" />
			</p:column>

			<p:column>
				<p:button icon="ui-icon-pencil" title="Usuario Login"
					outcome="/CadastroUsuarioLogin">
					<f:param name="id" value="#{funcionario.id}" />
					<f:param name="nomeFuncionario" value="#{funcionario.nome}" />

				</p:button>

				<p:button icon="ui-icon-pencil" title="Editar"
					outcome="/CadastroFuncionario">
					<f:param name="id" value="#{funcionario.id}" />

				</p:button>

				<p:commandButton icon="ui-icon-trash" title="Excluir"
					process="@this" update="@form"
					action="#{consultaFuncionariosBean.excluir}">
					<f:setPropertyActionListener value="#{funcionario}"
						target="#{consultaFuncionariosBean.lancamentoSelecionado}" />
				</p:commandButton>
			</p:column>
		</p:dataTable>
	</h:form>
</ui:define>

</ui:composition>

CadastroUsuarioLogin.xhtml

<f:metadata>		
	<o:viewParam name="id" value="#{cadastroUsuarioLoginBean.usuarioLogin}" />

	<o:viewParam name="nomeFuncionario" value="#{nomeFuncionario}" />		
	
	<f:viewAction action="#{cadastroUsuarioLoginBean.prepararCadastro}" />
</f:metadata>
<ui:define name="titulo">Cadastro Usuarios do Sistema</ui:define>
<ui:define name="corpo">
	<h1>Cadastro de Usuários do Sistema</h1>

	<p:megaMenu orientation="#" style="margin-top:20px">
		<p:menuitem value="Listar Funcionários"
			url="ConsultaFuncionarios.xhtml" icon="ui-icon-pencil" />

		<p:menuitem value="Nova Profissão" url="CadastroProfissao.xhtml"
			icon="ui-icon-pencil" />

		<p:menuitem value="Nova Situação"
			url="CadastroFuncionarioSituacao.xhtml" icon="ui-icon-pencil" />

		<p:menuitem value="Novo Nível de Autoridade"
			url="CadastroniveisAutoridade.xhtml" icon="ui-icon-pencil" />
	</p:megaMenu>

	<h:form id="frm">
		<p:messages showDetail="false" showSummary="true" autoUpdate="true" />
		<p:panelGrid columns="2">

			<h:outputLabel value="ID do Funcionário" />
			<p:inputText size="30" disabled="true"
				value="#{cadastroUsuarioLoginBean.usuarioLogin.id} or {idFuncionario}"
				label="Funcionário">
			</p:inputText>
			
			<h:outputLabel value="Funcionário" />
			<p:inputText size="30"
				value="#{nomeFuncionario}"
				label="Funcionário">
			</p:inputText>

			<h:outputLabel value="Usuário" />
			<p:inputText size="30"
				value="#{cadastroUsuarioLoginBean.usuarioLogin.username}"
				label="Usuário">
			</p:inputText>

			<h:outputLabel value="Senha" />
			<p:inputText size="30"
				value="#{cadastroUsuarioLoginBean.usuarioLogin.password}"
				label="Senha">
			</p:inputText>

			<p:outputLabel for="ativo" value="Ativo:" />
			<p:selectOneMenu id="ativo" value="#{cadastroUsuarioLoginBean.usuarioLogin.enable}"
				style="width:125px">
				<f:selectItem itemLabel="Inativo" itemValue="false" />
				<f:selectItem itemLabel="Ativo" itemValue="true" />
			</p:selectOneMenu>




			<p:commandButton value="Salvar"
				action="#{cadastroUsuarioLoginBean.salvar}" icon="ui-icon-disk"
				update="@form" />

		</p:panelGrid>
	</h:form>
</ui:define>

</ui:composition>