The advice on using Roles in JasperReports that I've found is cryptic and fragmented so I'm writing here how I got it working. In JasperServer 3.5 what I would do is create a parameter in the report which used com.jaspersoft.jasperserver.api.metadata.user.domain.Role)($P{LoggedInUser}.getRoles().toArray()[1])).getRoleName() Which did work but was difficult and cumbersome to use. The main step change is that in JasperReports Server 4 the LoggedInUserRole parameter isn't in the report jrxml, It's in the Input Control. You need to create either a "Single select Query" or "Multi select Query" which links to a parameter in the jrxml. At the Query stage you generate a statement somthing like SELECT column FROM table WHERE $X{IN, column, LoggedInUserRole} If we unpack this a little the $X{} part is an input control for the query. It will be expanded at runtime into column IN('ROLE_USER','CUSTOM_ROLE_1','CUSTOM_ROLE_n') as long as the ROLEs you have created match what is in column then you should see them appear in the Input Control when you run the query. If you change the query or what roles are assigned to the user you need to Log out of JasperReports Server each time as the server appears to cache the results.