• RE: Pass Windows Authentication IIS

    For Firefox, see this KBA:

    For Chrome and Edge, I'm sure there is a similar article, but I cannot find it.
    If I recall correcty, You use the old "Internet Options" dialog o windows (Security tab) to add whatever address the client is supposed to use to reach the docuware server to "local intranet".
  • RE: using DateAdd in workflow trigger conditions

    You can only use the DateAdd function where arithmetic expressions are allowed. Of the top of my head, I'd say that is the variable assignment activity and the condition activity.

    When You are using the 'is (where-clause)' operator in the rule editors, you have to offer something that the rule editor can translate to SQL.
    There is a way to do some date arithmetic using 'CURRENTDATE()' here. This seems to take an integer as parameter for a number of days to add/subtract.
    So, for Your situation, You could try CURRENTDATE(-9).

    Disclaimer: I have only used this when I created lists in the web configuration, never in a workflow trigger, so test this carefully, please.

    It would be great if someone from the DocuWare team could elaborate on this. Are there other function-like expressions besides CURRENTDATE()? Can we do more than add or subtract days?

  • RE: Intelligent Indexing issue

    There is a nice list of the used ports listed in this Knowledge Base article:

    However, Intelligent Indexing works over http/https, so use Your preferred tools to check layers 2/3 for connections to the url of the Intelligent Indexing Service, which you can find in the intelligent indexing module of the web configuration.

    It might well be a DNS issue, so You may want to verify the the URL can be properly resolved.
  • RE: use to c# API to download page of a document

    In DocuWare, there is the notion of a document's 'sections'. A document can have multiple sections clipped together, which can be of different file types. Each section can in turn be presented as having multiple pages in the document viewer. 
    The API allows downloading the whole document as well as the individual sections.

    If what you need is really the first page (of the the first, possibly the only section) of a document, then you are already limiting yourself to certain filetypes, because not every filetype is displayed as 'consisting of several pages that you can thumb through'.
    For instance, what if your document is a zip file. The document viewer will show this as a section with one page, and this page shows an auto-generated inventory-list of the files within the zip file. 

    This is basically why what You need isn't possible. 
    DocuWare must be able to handle any type of file You throw at it as a document that You can safely store in an archive, but that will always include filetypes where it's impossible to determine what 'the first page' is, or even display it in the document viewer.

    If You're dealing with pdf documents/sections mainly, you could download the first section of a document and then use a pdf library to get the first page of that pdf file. Maybe take a look at 'pdfium' (no affiliation).
    When you're downloading files, note the Enum 'FileDownloadType', which You can set to 'FileDownloadType.PDF' to open this up to 
    the many file types that can be converted to pdf in a meaningful manner like docx, eml, etc...
  • RE: URL Creator -- Pass query without Base64 encoding?

    We have solved this using a webservice, because while being able to build an url from a template, our customer's ERP also wasn't able to base64 encode on the fly.

    We have pointed the url template to the webservice instead.
    The ERP is sending the parameters it has available to the webservice which in turn queries the DocuWare System for a result list of of documents meeting the parameter criteria. It then uses the URL Integration API to create the encoded URL.
    Finally, the webservices answers the ERP System with an http redirect giving the encoded URL as a "new" address.

  • RE: .NET API Get List of Fields in File Cabinet or Tray

    The thing with the .Net Api is, that whenever you're dealing with one of the entities of the DocuWare System (FileCabinets, DocumentIndexFields, Documents, etc...) in Your code, You may or may not have the full entity.

    In Your case, You are asking the organization for it's FileCabinets, and then each FileCabinet for it's Fields. The FileCabinet instance you have in Your inner ForEach loop is not the full entity, and it's Fields property (and other properties) have not been filled. That's why You're getting a field Count of 0.

    In order to make sure that You have the full entity of the FileCabinet, call the GetFileCabinetFromSelfRelation() Method on the FileCabinet itself.
    So I guess your first statement in the if-clause should be something like:

    fc = fc.GetFileCabinetFromSelfRelation()

    Although I'm not sure about VB Syntax. After that, the Fields property should hold all IndexFields. 
    BeWare that it will also hold the IndexFields ceated by the System, like DWDOCID, DWEXTENSION, etc. You can filter the Fields for their "Scope" property in order to get only the Fields that are explicitly created in the configuration.

  • RE: Workflow Designer - Wiedervorlage erstellen

    Hallo Nicole,

    Ich nehme an, Sie verfügen über die Information, an welchem Tag die Zahlung fällig ist. Wahrscheinlich steht sie in einem Indexfeld, und wahrscheinlich ist es vom Typ "Datum".

    Die Aktivität "Zeitverzögerung" benötigt, wie Sie bereits feststellen, eine globale Variable, und diese muss vom Typ "Datum mit Zeit" sein. Der Variablentyp "Datum" reicht nicht aus.

    Man kann den Inhalt eines Datums-Indexfelds (z.B. Fälligkeit) mit einer "Daten zuweisen"-Aktivität direkt in eine gloable Variable vom Typ "Datum mit Zeit" schreiben, dann wird aber für den Uhrzeit-teil 12:00 Uhr UTC verwendet, was bei mitteleurop. Winterzeit zu 13:00 Uhr am Datum des Indexfelds führt. Das führt in der Aktivität "Zeitverzögerung" dazu, dass diese erst Mittags auslöst.
    Daher empfehle ich, die Funktion DateTimeAtMidnight zu verwenden, damit dies bereits Nachts passiert.
    Suchen Sie im Partnerportal nach dem Dokument "Workflow Expression Parser" o.ä., um dazu Hilfe zu bekommen.

    Die Aktivität "Zeitverzögerung" dürften Sie dann direkt nach der Aufgabe einsetzen, die den Stempel "gebucht" aufbringt. Wählen Sie in dieser Aktivität "Zeitverzögerung" und die globale Variable mit Datum und Uhrzeit.
    Danach dürfte wohl eine neue Aufgabe "Zahlung" o.ä. anstehen, eventuell eine neue Zuweisung. 


  • RE: REST API - Logon Issue

    Hello @Robby Osting,

    Here are my funtions for Logging in and Logging out, that I like to use in my powershell scripts:

    $cookie = New-Object Microsoft.PowerShell.Commands.WebRequestSession

    function Login{
      Invoke-WebRequest `
      "$($dwurl)/Account/Logon" `
      -Method Post `
      -Headers @{ `
          'Content-Type' = 'application/x-www-form-urlencoded'; `
          'Accept' = 'application/json'; } `
      -Body @{ `
          'UserName' = $($username); `
          'Password' = $($password); `
          'Organization' = $($org_name); `
          'RedirectToMyselfInCaseOfError' = 'false'; `
          'RememberMe' = 'false'; `
          'HostID' = '7b5ed19b-bfd6-46e9-8a3b-efd2a4499666'; `
          'LicenseType' = 'PlatformService'; } `
      -WebSession $cookie

    function Logout{
      Invoke-WebRequest "$($dwurl)/Account/Logoff" `
      -Method Get `
      -WebSession $cookie

    They use a few variables for the url, username, password, etc.

    Please note the variable "$cookie". 
    In between logging in and logging out, I send this with every Invoke-WebRequest that I make to do the actual work I want to do.

    What does the html response aou are receiving contain?
    I suspect there is an issue with licensing?

  • RE: Role or Group as select list

    I agree, however I believe Your second statement (mapping users to roles) is neglecting that users can be members of a role not through direct membership (reflected in table DWUserToRole) but through being a member of a group which in turn is a member of the role "DesiredRoleName".

    However, in 7.3 on-premise systems You can leverage the new possibility to create filtered select lists.

    I create a view on the database that maps users and the roles they are members in. For this,I use a UNION statement to basically combine Your statement with a similar statement that joins users to roles via group memberships.
    Then I create filtered select lists using the view as a data source where I filter for the desired role name to get a select list of all users that have a membership in that role.

  • RE: REST API - Logon Issue

    Hello Adriano,

    > The main problem when I use REST API and I logon and logut several times I get an 401 Unauthorized Exception that makes the API completely unusable.

    Are You sure You are logging out correctly? 
    I mainly use powershell to do my REST API stuff, always resending the cookie I have created on login, like You said, but as long as I log out when my work is done, I can rerun my scripts as often and as fast as I like without getting a 401.

    Logging on several times without logging out will eventually return a 401.