CRM 2013: Having trouble setting edit permission for wall notes - dynamics-crm

I am working on a CRM 2013 implementation and I have the following requirement:
Salespeople should be able to view all notes within their business unit. They should not be able to delete any notes and they should be able to modify only notes that they created.
I am not new to configuring security role permissions and I have no trouble achieving similar functionality with other entities. Notes however have stumped me.
In the Salesperson security role I configured the note entity as follows:
Read: Organization,
Create/Write/Append/AppendTo: User,
Delete and Assign: None,
The result is that salespeople were correctly able to see all notes. However they were able to delete and note and edit any note within their business unit.
I then did some reading and it seemed that the "Profile Album" permissions under Custom Entities was also somehow related to wall notes. I configured Profile Album as follows:
Read: Organization,
Create: User,
Others: None,
At this point my Salesperson use was no longer able to delete any wall notes. However, they could still edit wall notes owned by their business unit. Just for fun I removed edit permission entirely from the role and the salesperson was correctly unable to edit any records including their own.
Is there a bug with the notes write permission so that the user level confers business unit privileges?

I ran into a similar issue, and this is what I found:
Since notes have a parental relationship to its associated record, the permissions seem to flow down from the parent record.
I ended up creating a plug-in to prevent any user who didn't create the note from editing it, which was a huge pain.
Furthermore, there didn't seem to be any way to prevent users from trying to edit notes on the notes wall, so I ended up doing some HTML manipulation to prevent users from trying to edit notes that they hadn't created.
The business users ended up being happy with the functionality, but it did cost a little bit of time and money to get to the solution. See the attached screenshot.

Related

Create pop-up announcements upon login?

I want to get all of my users to see announcements. As you already know, we can't force everyone to use a dashboard that would have the announcements located in it as outlined here: https://www.powerobjects.com/blog/2011/11/22/adding-announcements-to-the-dashboard-in-crm-2011/. I could add this component to the most frequently-used dashboards, but I'm not going to get complete compliance. Too many people use user-defined dashboards and views. Further, not all of our users use email or other correspondence consistently, so my channels of communication for updates to the system are limited. My best bet was to create a popup upon login containing announcements, akin to the "pending email" warning, which would appear upon login regardless of any other conditions:
I've dug around to try and see where that warning comes from, in hopes of reverse engineering it to build a new component... but I just couldn't figure it out. I've seen options on how to disable or circumvent it, which naturally is the opposite of what I'm trying to do.
Is something like this possible?
Unfortunately this is a missing most wanted piece/feature even today in latest 365 versions.
We are using Web resources in global dashboards to socialize such thing, as announcements are deprecated. We cannot circumvent personal dashboards as default scenario.
We are planning to explore Learning path for this requirement, but that’s not applicable for your version.

Joomla 3.x - how do I have students (we register them) access one area, and public (self registration) another area?

Apologies for what is I suspect an easy question for many - I am very new to Joomla. I am building a website for my wife on Joomla 3.x (Noteworthymusictuition.co.uk). I already have an area for her music students, in which they log in and can access teaching material not available to the public. We register them.
I want to create an area of 'free downloads' for members of the public to self-register and automatically go to an area for them to download material. They need to be able to log in again after registration. To build up a newsletter group, I want to capture the registrations and store them for subsequent emails.
I do struggle to understand the ACL in Joomla, but if I try and set up a registration form for the public to use, I have to enable self registration in the admin and that affects the existing student login.
I hope that's enough detail! I was wondering whether I need an extension to enable multiple levels, such as Access Manager Pro? But on the other hand, what I'm asking for doesn't really sound like rocket science!
Many thanks!
By the way, I have never done any programming in Joomla - apart from occasional HTML editing.
Anthony
If you choose the 'self' registration option that doesn't stop you creating users as you do now. As long as you set the user up correctly they should be able to log in without issue.
New users would have the option to create an account and would be activated via a confirmation email.
You need to create at least one new user group though. For example, a 'download' group which has access to the additional material. Then, if you use a decent component (http://www.joomlatools.com/extensions/docman/ - see access control new tab) you will be able to control access to documents and downloads by specifying which groups are able to see download links etc.
Hope that helps a bit!

How to disable registration email in joomla 2.5 and 3

When registering a new Joomla user, an email is sent to the new users email address containing the username and password. Does anyone know how to disable this functionality, so that new users does not recieve this email?
Note
Important to note that there are two scenarios to consider, each with different answers.
Scenario 1) An unregistered user registers a new user account for me#foo.com by using the frontend, where me#foo.com represents the user's own email address.
Scenario 2) An admin registers a new user account for her#foo.com using the backend, where her#foo.com represents someone else's email address (i.e. the email address of the account you are trying to create).
Based on comments from the OP, this question is targeting situation 2 - i.e. in this situation we do NOT want Joomla! sending emails to her#foo.com after creating an account for her in the backend.
Solution to Scenario 2
Login to the admin backend and then go to Extensions -> Plugin Manager.
From the Plugin Manager, locate the the plugin called User - Joomla! (Plugin type is user and Element aka Plugin file is joomla). Click on the title of the plugin to go into the configuration for this plugin.
Set Notification Mail to User to No.
Click Save.
References
plugins/user/joomla/joomla.xml
administrator/language/en-GB/en-GB.plg_user_joomla.ini
Rant
Finding this setting feels like discovering an easter egg. After you do find it you will see the seemingly straightforward description of the configuration setting, which, after rolling your mouse over the text at a moderate but not-too-fast velocity, triggers a popup balloon to begin a mocking fade in sequence, which, after finished, explains to you in a condescending tone exactly what the setting does. But before you've found this, you've most likely already visited the global configuration and played around with the email disable function there (but why would you want to globally disable emailing??), and you've probably also visited the User Module configuration, which also has a suspiciously named email configuration setting which however NOT apply to this situation (e.g. see http://www.inmotionhosting.com/support/edu/joomla-25/users/prevent-new-user-email-notification). You might have also searched around on the Internet and found some forum posts which suggest to disable this by hacking the Joomla! core (e.g. http://forum.joomla.org/viewtopic.php?t=280282). Seriously, with the recent discovery of the location of this configuration parameter I have to wonder what kind of altered state of mind the Joomla! folks had to have been in in order to come up with some of the weird ways in which things are organized in this strangely convoluted piece of software.
Check this,
In Joomla 3.x and Joomla 2.5 there is option for avoid sending username/password to the new registered users.
You can check this,
Login to admin -> Users Menu - > Options from tool bar -> Send Password (Yes/No).
Customizing core file do not recommended.
Hope its helps..

Joomla membership for old articles

I would like my Joomla website to behave like this:
All users can view new articles
When new articles are published over sometime (say 1 week), they become
old articles. (This part can be done
manually, if there are no extension
for it.)
Then,
Normal users can only view the title of old articles. If they click them, they are asked to pay.
Paid users can view old articles.
All users can search against new and old articles. But as mentioned, only paid users can view old articles.
What kind of extensions do I need?
Thank you very much.
Updated:
I asked AEC (Account Expiration Control) support about my requirements. Here the reply I got:
AEC is not an Access Restriction
component but a Membership Manager
that happens to be good at telling
other components what they should do.
Many users extend the Joomla
usergroups with components like
FlexiAccess, JACL or JUGA. With
extended usergroups (and, in this
case, Access Levels), you can restrict
access to articles, categories and
menu entries. I would advise that the
best idea might be to check out the
ACL components - AEC can cater to
pretty much all of them so that it's
more of a question whether the ACL
components can do what you want to
achieve.
Also - archiving articles is
completely out of scope for AEC, so
you'd have to find out how to
accomplish this in your content
management.
Updated 2:
I think AEC might be the one I need.
You can do this by using Access Expiration Control. You will have to do the follwing :
Create plans for your users and handle the plans ( Free, Monthly, Life time .. etc ) , the payment and the access control.
Create menu item for the archived articles.
Use ACE to make accessing this part of the site restricted to payed members.
Profit $$$
This is how I see how it could be done ... I've used on many sites but not for archived contents so I would recommend you contact the developers at their site and ask them about your case.

How to get data out of entity in script in CRM 2011

I have 2 entities (for this example) in CRM 2011 - Account and Case. The Account holds all of our clients, the case holds individual work actions for an account. When a case is created one of the input fields is the Account.
What I would like to do is upon the user selecting the Account, execute some javascript to look up the account entity to display some additional information.
So far I have got the javascript working that triggers the onchange event of the Account field, and it correctly gets the selected Account, but I don't know what the next step is.
I'm new to CRM so don't really know if what I'm asking is actually sensible, if there is a better way then please let me know.
Thanks!
For the record, the way you were thinking about doing things would be completely supported, and TechHike's method is supported in CRM 4, not CRM 2011. Steps you would take:
Use CRM 2011's web resources to upload a script file that does what you want.
Use the form editor to make your javascript method from step one fire when the Account field changes on the form
Make a request to CRM's REST endpoint (http://msdn.microsoft.com/en-us/library/gg334767.aspx) to retrieve the details of the account selected
Use the results to populate fields on the form, show a popup with details, etc.
There are plenty of examples of caling the REST endpoint from JavaScript in the SDK (http://msdn.microsoft.com/en-us/library/gg309408.aspx). Good luck!
Matt's post above contains everything you need to know, but you might also find the blog post below useful. It basically describes the same scenario where you have a 1:n relationship (such as Case and Account) and details how you can pull information from a specified lookup (e.g. account), using the REST endpoint (as Matt has already mentioned) and display it on the form.
http://community.dynamics.com/product/crm/crmtechnical/b/crminthefield/archive/2011/02/07/showing-related-information-in-a-crm-2011-form.aspx
The blog post includes a link to download a CRM2011 solution already built to give you something to look at how they've achieved this (useful if you're new to CRM2011).
There are two ways to do this, and you may be best to do them both in parallel:
on the Account > Case relationship edit the Mappings. When a user goes to an Account and uses the left navigation to look at Cases (or a grid of Cases on the form) then hits "Add New Case" they are creating a Case from inside the "context" of the Account. You can copy any fields you want to from the Account to the Case record at this point - the Mappings define what field from the Account are copied to which target field on the Case. This will always be the most robust, easiest way to do it but relies on the user starting in the right place.
on the Case for you could also add an onChange script to the Parent Customer lookup to fetch the data from the parent record. I think Stephen's link is probably the best way to do this as it does not copy the fields but allows the user to see them anyway, which is better database design (from a purist standpoint) and means the user always sees current info about the Account rather than possibly out of date stuff. Alternatively if you actually need to copy some fields (maybe the customer's normal SLA say) so that you can use these in other such as scripts or workflows on the Case then have a look at this article: Disabling the selection of contacts for opportunities all the way
Although this is about a slightly different topic, the script there fetches the Account details of the parent Contact - you want to fetch values from a parent (llokup) field so the approach is the same, just different in the detail
There are various ways to do this but I would recommend doing it the supported way, without javascript. This may not be as pretty but it is likely much easier. The scenario would be to add a left navigation link to the case entity that when clicked will update the content area to show the details of the account.
To add a link to the left navigation you will need to configure the isv.config file to have an extra link for the case entity.
Here's an example:
http://support.sfusion.com/kb/hosted-microsoft-crm-4/how-do-i-modify-the-isv-config-file-in-microsoft-crm-4/
You can also lookup isv.config customizations in the SDK, found here:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=82e632a7-faf9-41e0-8ec1-a2662aae9dfb&displaylang=en
Next you will need to create a custom aspx page in the ISV folder of the web server. This page will display all the information about the account that you want to show the user when the left navigation link is clicked. The ISV.config as an xml property that allows you to pass all the context params to your page on the querystring. Make sure when you create the link to turn on this attribute.
Now the only tricky part is that in the page you will need to use the CRM web service to display all the account details that you interested in showing the user. I won't do into details on this. You can find great tutorials on the web or in the SDK if you haven't done this before.

Resources