-
Seth,
Seth,
I am not all that well-versed in ASMX development, but if it is C# on the behind-the-page scripting, you should be able to download the DocuWare NuGet packages and be able to use their types: Organization, ServiceConnection, etc. You could hard-code a username and password directly into that code to establish a conneciton and get back an Organization object. Then you pass that to the sample code and it can access groups and lists. Getting it into a format usable by you is just a matter of coding the iteration through the Groups and Users collections to place data where you want it. You could add your own delimiters to make a file openable in Excel.
Is the environment C# and in Visual Studio? Could you simply make a Windows Desktop app to do this for you? I built one for the Fortis conversion, and it establishes connections, etc via a DocuWare username/password or Windows passthrough authentication. The .NET libraries make DocuWare API programming pretty simple.
Thanks,
Joe Kaufman -
C#
Seth,
If you can use the .NET libraries via C#, this static method can gather a list of groups and users for an Organization instance:
======================
public static string GetGroupsUsersList(Organization org)
{
if (org == null) { return "(No Organization connected...)"; }
StringBuilder list = new StringBuilder();
list.AppendLine("Organization: " + org.Name.ToUpper().Trim());
list.AppendLine();
var groups = org.GetGroupsFromGroupsRelation().Item;
groups = groups.OrderBy(g => g.Name).ToList();
foreach (Group group in groups)
{
list.AppendLine(group.Name.ToUpper().Trim() + " Users:");
list.AppendLine(VFP.REPLICATE('=', group.Name.Length + 7));
var users = group.GetUsersFromUsersRelation().User;
users = users.OrderBy(u => u.Name).ToList();
foreach (User user in users)
{
list.AppendLine(user.Name.Trim() + " (" + ((user.FirstName != null ? user.FirstName : "") + " " + (user.LastName != null ? user.LastName : "")).Trim() + ")");
}
list.AppendLine();
}
return list.ToString();
}======================
You can ignore the VFP.REPLICATE stuff -- that is a library I made to perform certain VFP functions by a name I was used to. You can format the textual output however you want, or store user information in a different data structure, such as List<User>.
If you need to do this via a non-.NET web request, I have not done that. But there should be a resource for it that returns users as XML or JSON
Finally, if you are on-premise, hitting the SQL Server data directly is your best bet for getting a complete look at groups, users, and permissions. The Platform SDK does not have a lot of deeper information with regard to permissions, but the SQL Server data can be pieced together (though that is probably all broken if I ever went to DW 7.0 since they changed the data model a lot). I have an example of a simple user listing with some security information if you want to see what those queries look like and what tables they hit.
Hope this helps!
Thanks,
Joe Kaufman
-
Huh, well that sort of sucks.
Huh, well that sort of sucks. Just a pure price increase? I can see why folks on this thread want more control over their timeouts in that case!
Thanks,
Joe Kaufman
-
Doubled?
Benoit,
Can you help me understand what exactly has doubled in 6.12? Coming from what?
We are on 6.11, which is what we initially started with coming from Fortis. Are you saying that if I upgrade us to 6.12 (something I believe I can do, as a 6.12 LIC file is available on our portal) that we are going to get billed double for our 20 licenses when we renew? I want to be sure I understand the pricing scheme before we think about upgrading!
As far as timing out users, how short would you set the timeout? As I state further up in the thread, the timeout is currently12 minutes. You need to go shorter than that? Could you perhaps consolidate certain use cases behind a Platform SDK program that gathers what users typically need under a single connection where you force a logoff after each request? That would knock the timeout down to two minutes. The other alternative is to keep a single connection alive and run everything through it, but then you have permissions issues because whatever you run everything through has to have access to everything. I am also not sure of the legality of that since it does an end-run around licensing. Using the Platform for certain document access scenarios could be a way of reducing overall concurent usage, though. If you are using DocuWare heavily for tasks and workflow, my idea does not hold water, obviously, but then I would also assume you don;t have that many truly idle connections if people are in the system all day working various workflow queues.
Thanks,
Joe Kaufman
-
Tobias,
Tobias,
I assume with regard to licensing he simply means why keep a license burned when a connection goes idle. Hopefully the 12-minute timeout I explain in detail above is enough to mitigate that particular concern.
Workstation lockdown (and cached passwords -- not to mention Windows passthrough logins) is a good thing to bring up when it comes to true security at the connection level.
Thanks,
Joe Kaufman
-
Twelve Minutes
Hey all,
Not sure it has been made clear on this thread (but it has been mentioned in some others), but connections will timeout -- pretty quickly, actually -- already.
Fire up DWAdmin and watch the license screen. I just started a DocuWare web client session at 8:38, and my license use showed up, saying it would expire at 9:08, a reservation of 30 minutes.
I left the tab open in my web browser but did not do anything with the session. I used other browser tabs as usual.
I kept checking my expiration time for my license, and at 8:48 (10 minutes after initial license use), the expiration time changed to 8:50, just 2 more minutes. After 8:50, I was no longer using a license.
In summary, it looks like when a session goes idle, a license will only be in use for 12 more minutes. Ten minutes for the idle-detection timeout and then 2 minutes more for some built-in grace period DocuWare keeps in play to cushion session restarts (I don't care for it -- an explicit log off should immediately free the license, in my opinion). Overall, though, 12 minutes isn't really that long, and we have never had an issue running only 20 licenses for over 75 named, semi-active users.
An additional note -- even after my license usage had disappeared, I did a search in the DocuWare web page still displaying in my browser and it ran without me needing to log in again. So, being timed-out isn't even really a timeout, at least not in that it forced a re-logon.
All of this works the same way for Platform Service use: initial license grab is for 30 minutes, after 10 minutes of inactivity the expiration switches to 2 minutes from the current time, and even an explicitly called "LogOff" request still keeps the license in use for 2 more minutes.
Is a twelve-minute timeout something you can work with? Are you seeing something different in your license usage? I am running 6.11 on-premise with all the latest hotfixes and patches applied.
Thanks,
Joe Kaufman -
Postman
Dane,
I do HTTP request testing with Postman, it works pretty well. I have had it work against DocuWare both with the POST data authentication and the header-based authentication.
You can download Postman here:
Good luck!
Joe Kaufman
-
Hameed,
Hameed,
The NuGet download will get you were you need to be with regard to .NET environment. For a more generic approach using HTTP request objects, I just posted several links on this forum thread:
That should get you logged in and provide examples of doing the operations you wish to do (which as Phil states, can all be done via the RESTful Platform API.
Thanks,
Joe Kaufman
-
Dave,
Dave,
You don't need to use the ValidateUser resource (that I know of), you just need to POST the username and password, and then your connection object will remain connected until logging off or timing out.
See these links:
I believe you can also place username and password in the header of your requests and authenticate each time, but I cannot find the thread on that at the moment... Oh, wait, this is it:
Those links should get you where you want to be with regard to using the Platform API from tools not part of the .NET environment.
Thanks,
Joe Kaufman
-
Martin,
Martin,
Glad you figured it out in the .NET environment, and thanks for posting (will be good for future reference when searching for soulutions!).
Thanks,
Joe Kaufman