none
Niveis de acesso no Dynamics CRM RRS feed

  • Pergunta

  • Pessoal boa noite!

    Gostaria de saber se na base de dados do Dynamics CRM existe alguma tabela ou algum outro objeto no banco de dados que eu consiga ver onde está marcando as seguintes divisões de niveis de acesso (Não Selecionado, Usuário, Unidade de Negócios, Divisões Primárias e Secundárias e por Ultimo Organização).

    Existe no banco de dados algum jeito de saber que o perfil de acesso está marcado para algum dos tipos acima?

    Desde já muito obrigado.

    Att,

    Rafael Santos

    quinta-feira, 29 de outubro de 2015 22:35

Respostas

  • Rafael,

    As Views que você deve consultar seriam estas:

    • Role
    • RolePrivileges
    • Privilege
    • PrivilegeObjectTypeCodes
    • MetadataSchema

    Encontrei esta query já pronta, veja se lhe ajuda:

    SELECT  DISTINCT
            r.Name
            ,COALESCE(e.OriginalLocalizedName, e.Name) AS [EntityName]
            ,CASE p.AccessRight
                 WHEN 32     THEN 'Create' /* or hex value 0x20*/
                 WHEN 1      THEN 'Read'
                 WHEN 2      THEN 'Write'
                 WHEN 65536  THEN 'Delete' /* or hex value 0x10000*/
                 WHEN 4      THEN 'Append'
                 WHEN 16     THEN 'AppendTo'
                 WHEN 524288 THEN 'Assign' /* or hex value 0x80000*/
                 WHEN 262144 THEN 'Share' /* or hex value 0x40000*/
                 ELSE 'None'
            END AS [Privilege]
            ,CASE (rp.PrivilegeDepthMask % 0x0F)
                 WHEN 1 THEN 'User (Basic)'
                 WHEN 2 THEN 'Business Unit (Local)'
                 WHEN 4 THEN 'Parental (Deep)'
                 WHEN 8 THEN 'Organization (Global)'
                 ELSE 'Unknown'
            END AS [PrivilegeLevel]
            ,(rp.PrivilegeDepthMask % 0x0F) as [PrivilegeDepthMask]
            ,CASE WHEN e.IsCustomEntity = 1 THEN 'Yes' ELSE 'No' END AS [IsCustomEntity]
    FROM    Role AS r
    INNER   JOIN RolePrivileges AS rp 
            ON r.RoleId = rp.RoleId
    INNER   JOIN Privilege AS p 
            ON rp.PrivilegeId = p.PrivilegeId
    INNER   JOIN PrivilegeObjectTypeCodes AS potc 
            ON potc.PrivilegeId = p.PrivilegeId
    INNER   JOIN MetadataSchema.Entity AS e
            ON e.ObjectTypeCode = potc.ObjectTypeCode
    ORDER   BY r.Name, [EntityName]

    Porém se seu CRM for Online, você pode usar este addon (não foi atualizada para a versão 2015, mas já atende a maioria das demandas):

    https://securityrolebrowserforcrm.codeplex.com/

    []'s,


    Tiago Michelini Cardoso
    Microsoft Dynamics CRM MVP
    http://tiagomcardoso.com


    quinta-feira, 29 de outubro de 2015 23:42
    Moderador

Todas as Respostas

  • Rafael,

    As Views que você deve consultar seriam estas:

    • Role
    • RolePrivileges
    • Privilege
    • PrivilegeObjectTypeCodes
    • MetadataSchema

    Encontrei esta query já pronta, veja se lhe ajuda:

    SELECT  DISTINCT
            r.Name
            ,COALESCE(e.OriginalLocalizedName, e.Name) AS [EntityName]
            ,CASE p.AccessRight
                 WHEN 32     THEN 'Create' /* or hex value 0x20*/
                 WHEN 1      THEN 'Read'
                 WHEN 2      THEN 'Write'
                 WHEN 65536  THEN 'Delete' /* or hex value 0x10000*/
                 WHEN 4      THEN 'Append'
                 WHEN 16     THEN 'AppendTo'
                 WHEN 524288 THEN 'Assign' /* or hex value 0x80000*/
                 WHEN 262144 THEN 'Share' /* or hex value 0x40000*/
                 ELSE 'None'
            END AS [Privilege]
            ,CASE (rp.PrivilegeDepthMask % 0x0F)
                 WHEN 1 THEN 'User (Basic)'
                 WHEN 2 THEN 'Business Unit (Local)'
                 WHEN 4 THEN 'Parental (Deep)'
                 WHEN 8 THEN 'Organization (Global)'
                 ELSE 'Unknown'
            END AS [PrivilegeLevel]
            ,(rp.PrivilegeDepthMask % 0x0F) as [PrivilegeDepthMask]
            ,CASE WHEN e.IsCustomEntity = 1 THEN 'Yes' ELSE 'No' END AS [IsCustomEntity]
    FROM    Role AS r
    INNER   JOIN RolePrivileges AS rp 
            ON r.RoleId = rp.RoleId
    INNER   JOIN Privilege AS p 
            ON rp.PrivilegeId = p.PrivilegeId
    INNER   JOIN PrivilegeObjectTypeCodes AS potc 
            ON potc.PrivilegeId = p.PrivilegeId
    INNER   JOIN MetadataSchema.Entity AS e
            ON e.ObjectTypeCode = potc.ObjectTypeCode
    ORDER   BY r.Name, [EntityName]

    Porém se seu CRM for Online, você pode usar este addon (não foi atualizada para a versão 2015, mas já atende a maioria das demandas):

    https://securityrolebrowserforcrm.codeplex.com/

    []'s,


    Tiago Michelini Cardoso
    Microsoft Dynamics CRM MVP
    http://tiagomcardoso.com


    quinta-feira, 29 de outubro de 2015 23:42
    Moderador
  • Fala Tiago blza?

    Cara essa query já vai me ajudar bastante.

    Desde já muito obrigado pela pronta ajuda!

    Grande abraço.

    sexta-feira, 30 de outubro de 2015 19:17
  • quarta-feira, 4 de novembro de 2015 01:00
    Moderador