Dynamics CRM Share Cascade Behaviour during Parent change and ReParenting - dynamics-crm

Consider the following example in MS Dynamics CRM 2015,
Parent Entity: Account, Child Entity: Note
Relationship: Configurable cascading
Assign - Cascade None
Share - Cascade All
Unshare - Cascade All
Reparent - Cascade All
Users
User1 is on BU1 which is under BU0
User2 is on BU2 which is under BU0
Both users having
- Org level read access and User level write access on Account
- BU level read and write access of Note
Account1 and related Note1 are created and owned by User1
Step 1:
User1 is assigning Account1 to User2. Now User2 will not get access to Note1 (As there is no Assign cascade, Note1 will not be assigned to User2 and User2 will not get even read access on Note1)
Step 2:
User1 is creating Note2 under the Account1. Now this Note2 is visible to User2 (by Reparent - Cascade all, this Note2 will be shared to User2 as he is he current owner of Account1)
What is the simplest solution to make Note1 also visible to User2? If I change the relationship behaviour to "Assign - Casecade All", then User1 will loose access on Note1 when the Account1 is assigned to User2.
I think there is something logically missing here, when Note2 is reparented (created) to Account1, the Note2 is got shared with User2. But when Account1 is assigned to User2, the Note1 is not shared with him. I think CRM should share Note1 to User2 when the Account1 assigned to User2.

Related

User and Admin relationship in spring boot

Roles tables only two roles Admin and User only. ( Static table)
Admin
User
User tables - whenever user register the page, it will automatically comes (2- User (Roles table)
Ex.
Si.no . Name address email rollid
1 xxx yyyy zzzz 2-(Roles table ) Users only registered so Users no 2 come from Roles table
Doubt?
What is the relationship between them
ManyTomany or Onetoone
. Many users have many roles. But my case one user object have one role only.. Which one is correct? Then how can insert value 2 to user table whenever user register the page. Please advice
Two tables is enough no need for third table

changing owner of record to user in another business unit dynamcis 365

I have an issue related to security role. Below the details.
User A belongs to Security group SG1 and User B belongs to Security group SG2:
Both the roles have below privileges(same) on a custom entity, but the Business Unit is different for both Security Group.
create: user level, Read: Business Unit , Write: user level, Append:Business Unit, Append To:Business Unit, Assign:User level , Share:Business Unit
When user A in SG1 trying to assign his record to a user B in SG2, I am getting Access Denied error.
When the owner changes user A will loose access and get the error. But here, even if I am getting the Access Denied error the owner is not changing in entity, when I am reloading the record the owner is still User A(I think the save is not happening).
Error Log:
Exception Message: Principal with id ef346db1-c98f-ec11-b400-000d3ac25c59 does not have ReadAccess right(s) for record with id ef346db1-c98f-ec11-b400-000d3ac25c59 of entity my_product. Details: {"CallerPrincipal":{"PrincipalId":"038cfa23-c74e-ec11-8c62-6045bd8f574d","Type":8,"IsUserPrincipal":true},"OwnerPrincipal":{"PrincipalId":"87242295-6ef2-ea11-a815-000d3a23ca40","Type":8,"IsUserPrincipal":true},"ObjectId":"ef348db1-c98f-ec11-b400-000d3ac25c59","ObjectTypeCode":10501,"EntityName":"my_product","ObjectBusinessUnitId":"a4854691-c946-ec11-8c62-000d3a472098","RightsToCheck":"ReadAccess","RoleAccessRights":"None","PoaAccessRights":"None","HsmAccessRights":"None","GrantedAccessRights":"None","Messages":["PrincipalHasOwnerPrincipalWithAtLeastBasicPrivilegeDepth = False","EntityUserGroupRights = None","MinimumPrivilegeDepthRequired = Local","SecLib::AccessCheckEx2 failed. Owner Data: roleCount=1, privilegeCount=822, accessMode=0; Principal Data: roleCount=1, privilegeCount=822, accessMode=0"],"EntityOwnershipTypeMask":1,"CallerInfo":{"IsSystemUser":false,"IsSupportUser":false,"IsAdministrator":false,"IsCustomizer":false,"IsDisabled":false,"IsIntegrationUser":false,"Teams":null,"Roles":null},"ReadOnlyState":"UserAndOrgFullAccess","IsHsmEnabled":false,"HsmInfo":null,"AccessOrigin":null}
ErrorCode: -2147187962
HexErrorCode: 0x80048306
ErrorDetails:
0: my_product
1: ef346db1-c98f-ec11-b400-000d3ac25c59
2: 10501
3: ReadAccess
4: ef346db1-c98f-ec11-b400-000d3ac25c59
5: 8
ApiExceptionSourceKey: Step/Microsoft.Crm.Extensibility.ImageRetrievalStep
ApiStepKey: 84b9d1cb-3e30-11db-b951-000cf1fe02ff
ApiDepthKey: 1
ApiActivityIdKey: c6338644-38d6-422f-9ccc-2d1284ef241d
ApiPluginSolutionNameKey: System
ApiStepSolutionNameKey: System
ApiExceptionCategory: ClientError
ApiExceptionMessageName: unManagedIdsAccessDenied
ApiExceptionHttpStatusCode: 403
This is expected behavior.
Issue 1 - Assign:User level
This limits the assign privilege to another BU user, Change it to BU level and it should work.
Issue 2 (eventually you will face) - Read: Business Unit
As the users (SG) belongs to different BUs and Role has only BU level read, the moment a record is assigned to another cross BU user - the original owner lose access and read privilege for that particular record. Like you mentioned the error will popup.

For Dynamics CRM 365 Security Roles what Does Append and Append To Mean?

In Microsoft Dynamics CRM 365 the security roles have an "Append" and "Append To" rights. What does "Append" and "Append To" mean and what is the difference between them?
I googled for the answer, but cannot find a definitive one.
Append and Append To are two privileges that most user are not very clear about regarding their functionality. In this article we try to explain the difference between “Append” and “Append To” Privileges and how it affects the user access.
Append and Append To basically deal with the entities that are parties to a 1:N relationship or N:1 relationship.
Append: When an entity has the lookup of another entity on its form. It is important that the user has the “Append” privilege on this entity so that it can set the values for the lookups on this entity. For eg: Contact has the lookup of Account on its form so here the user needs to have the “Append” privilege to be able to set the parent account.
Append To: When an entity is available as a lookup on another entity form. It is important that the user has the “Append to” privilege on the entity that is referred to in the lookup so that it can set the values for the lookups of this entity on any other form. For eg: Account has the lookup of primary contact. So here the user needs to have the “Append To” privilege to be able to set the Primary Contact for the Account.
Lets us take an example of Contact entity.
We have modified the Order Role and removed the “append” privilege to the Contact entity.
When a user with this role logs in, they would find the Parent Account lookup disabled.
This is because the user does not have the “Append” privilege to the contact entity. So all the lookups on the contact form are Disabled.
Now we have modified the Order Role and provided the “Append” privilege for the contact entity and removed the “Append To” privilege from the contact entity.
The Primary Contact on Account is disabled.
It means the lookup of contact entity will be disabled on all the entities if the “append to” privilege to contact is removed.
Reference for the blog: https://community.dynamics.com/crm/b/crminogic/archive/2010/05/03/append-v-47-s-append-to
You probably won't find anything because there is no concept called "Assign" and "Assign To" rights.
We have "Assign", "Append" and "Append To" privileges.
Assignment is nothing but changing the owner lookup value of the entity record from user A (or Team X) to user B (or Team Y).
Excerpt of better definition for Append and AppendTo:
One way of thinking conceptually about Append and Append To is to think of ‘Append Me‘ and ‘Append To Me‘.
In order to successfully append record A to record B, the security privileges must be set to allow both sides of the agreement. Consider the following metaphor, Append ‘knocks on the door’ of another entity and Append To is needed to ‘open the door’ to that entity. For example, if you want to qualify an Account and begin working the opportunity as set in your business process flow, you must have to rights to append the Account (record A) and the rights to append to the opportunity (record B).
Read more

MVC - Access levels within Roles

Looking for a bit of advice and direction with access levels within Roles.
I have a MVC Project that makes use of AspNetRoles, for example I have the following roles set-up:
Admin
CustomerIndex
CustomerCreate
In my Customer Controller I have:
[Authorize(Roles = "Admin, CustomerIndex")]
public ActionResult Index() ....
[Authorize(Roles = "Admin, CustomerCreate")]
public ActionResult Create() ...
What I want to do is restrict what the User can see and do based on his/her access level within the role.
Let's say I have the following Customers: ABC, DEF, XYZ
I want to grant different users read access to different customers, ie: User1 to have CustomerIndex role but only view data for ABC, DEF and then User2 to have CustomerIndex role but only for customer XYZ and then similar for the CustomerCreate role.
So if User1 runs to the Customer page, he will only be presented with the customer data for ABC, DEF
If User2 does the same, he will only see data for customer XYZ
What is the best way to achieve something like this?
In your case, the customers a user can see is not really related to the roles they have. You need to think about bringing back the filtered list of customers via your apps business logic, rather than trying to do it via roles.
In your example, you'd need some sort of data store with a User column, and a Customer column.
Users Customers
User1 ABC
User1 DEF
User2 XYZ
When a user with a CustomerIndex role requests the Index controller, the Authorize attribute will allow them access, then in the controller itself, you query your data store, and return all Customers for the current User and pass that back to your view in a model. The same goes for the Create controller.

Clarification regarding Joomla Access Control (ACL)

Consider following scenario in Joomla user access.
I have two users; User1 and User2.
User1 mapped to Group1 and User2 mapped to Group2. Also, Group1 is mapped to View Level1.
For Article1, i set Edit, Delete permission as Allowed for Group1 (permission for all other groups as Denied) and View access level is set to Level1
So, It should let User2 to edit Article1 and User1 to view article.
Since User2 can edit will he be able to view article as well ?
Is there anyway of controlling Joomla article access per user ?
One thing is that "seeing" and "doing" are treated separately. So one place you can make a mistake is to give a user an action permission on something she can't see. On the other hand. You need to add user2 to Group 1 either directly or by inheritance i.e. make group2 inherit from group1. You could also add Group 2 to access level 1.
To control by user in the implementation in the CMS you would need to make a group that only contained that user. The only exception is "edit own."
However with plugins or with your own implementation of acl using JAccess you have the possibility to do many other approaches.

Resources