I managed to solve this by folowing this thread using part of the code written in the comments: "look at this for source code example" I will resume this in basic steps: 1) Create a java class that implements JRDatasource 2) Create a java class that implements JRDatasourceProvider 3) Create a java class that extends AbstractQueryExecuterFactory 4) From the overriden createQueryExecuter method process whatever is needed to then return an instance of your JRDatasourceProvider Class, make sure to pass the report and report's parameter mapping. 5) In your provider class setup what you need to connect and pass paramenters to the JRDatasource class implemeted (I assume here is where you will access any source and compile the necessary data to fill out the fields of the report) 6) Create a data adapter that uses "java class which implements the JRDataSourceProvider interface" 7) Add the data adapter created to the report and set to read from the query executer created (the custom query executer must be imported into jasperstudio look at here). This is done opening the query and dataset dialog. 8) Should be ready to go NOTE: create the parameters in the report design view, and the parameter map that the method recieves in the query executer should appear. NOTE2: If report has sub datasets that also read from custom data source, a repetition of these steps should be used (I did some bad practice therefore not publishing the actual source code, basically create a boolean parameter inside the subset and read it in the executer and instantiate whatever needed to get to the sub data set data source :] ) TROUBLESHOOTING - If you are having problems with null pointers, enable the jss console in the settings and start printing to system.out, should help figure out whats going on. - If empty document, check your datasource to see if it actually is returning data or that the query executer was imported correctly