Community
    • Categories
    • Recent
    • Popular
    • Users
    • Search
    • Register
    • Login

    Multi-Value Eintrag löschen bzw. archivieren

    Scheduled Pinned Locked Moved Entwicklung
    10 Posts 3 Posters 845 Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • N Offline
      Nicolas
      last edited by Nicolas

      Guten Tag

      Ich versuche seit einiger Zeit über die REST-Schnittstelle einen Eintrag aus einer Custom Category zu löschen. Beim erstellen funktioniert alles wie gewollt.
      Nur bei der Entfernung eines bestimmten Eintrages bekomme ich diese Fehlermeldung:
      i-doit system error: Unable to rank single value category entry. mit dem Code -32099.
      Diesen Fehler bekomme ich bei cmdb.category.archive sowie bei cmdb.category.delete.
      Bei der Category handelt es sich jedoch definitiv um ein Multi-Value.
      Wenn ich cmdb.category.purge verwende, kriege ich eine positive success Rückmeldung. Im Webinterface ist der Eintrag dann jedoch immernoch vorhanden.
      Mit Categories des Systems bspw. Contact Assignment funktioniert das einwandfrei. Liegt es vielleicht daran das es eine Custom Category ist?

      Hier der Body der Anfrage:

      "{
              "version": "2.0",
              "method": "cmdb.category.archive",
              "params": {
                  "category": "C__CATG__CUSTOM_FIELDS_APITEST",
                  "cateID": "2",
                  "object": 6505,
                  "apikey": "ApiKey",
                  "language": "en"
              },
              "id": 1
          }"
      

      Für die Identifikation funktionieren weder cateID noch entry.

      Vielen Dank im Voraus

      LFischerL 1 Reply Last reply Reply Quote 0
      • LFischerL Offline
        LFischer @Nicolas
        last edited by

        Hallo @nicolas

        ich fürchte hier fehlt ein entsprechender Check im Kontext der benutzerdefinierten Kategorien. Ich werde mir das mal ansehen 🙂

        Viele Grüße
        Leo

        1 Reply Last reply Reply Quote 0
        • LFischerL Offline
          LFischer
          last edited by

          Hallo @Nicolas

          ich habe mir das mal angesehen und konnte ad-hoc keinen Fehler finden. Mir ist aber aufgefallen das du für die Methode cmdb.category.archive den Parameter entry statt cateID verwenden musst. Gleiches gilt für cmdb.category.delete und cmdb.category.purge.

          Probier es mal damit 🙂

          Viele Grüße
          Leo

          N 1 Reply Last reply Reply Quote 0
          • N Offline
            Nicolas @LFischer
            last edited by Nicolas

            @lfischer
            Hi, erstmal vielen Dank für die schnelle Antwort.
            Das habe ich bereits probiert. Hier erneut der Body mit dem Versuch mit entry:

            "{
                    "version": "2.0",
                    "method": "cmdb.category.archive",
                    "params": {
                        "category": "C__CATG__CUSTOM_FIELDS_APITEST", "entry": "1","object": 6505,
                        "apikey": "ApiKey",
                        "language": "en"
                    },
                    "id": 1
                }"
            

            Auch hier mit derselben Fehlermeldung.
            Wie gesagt, in einem anderen Skript, das Contact Assignments behandelt, was keine custom category ist, funktioniert die Anfrage mit genau diesem Body wunderbar.

            P.S.: die Anführungszeichen um die entryid machen keinen Unterschied.

            Grüsse
            Nicolas

            LFischerL 1 Reply Last reply Reply Quote 0
            • LFischerL Offline
              LFischer @Nicolas
              last edited by

              Hi @nicolas

              das ist merkwürdig. Ich fürchte in dem Fall kann ich das Problem nicht nachstellen. Sobald ich entry nutze läuft es korrekt durch.

              Welche i-doit und API Add-on Version sind bei dir installiert? Gibt es ggf. noch andere benutzerdefinierte Kategorien mit ähnlicher Konstante?
              Du könntest noch probieren die benutzerdefinierte Kategorie (ohne Änderung) zu überspeichern und anschließend den Cache zu leeren.

              Viele Grüße
              Leo

              N 1 Reply Last reply Reply Quote 0
              • N Offline
                Nicolas @LFischer
                last edited by

                @lfischer
                Aktuell befinden wir uns auf der Version 1.15.
                Was meinst du mit überspeichern?
                Das mit dem Cache muss ich wohl nächste Woche ausprobieren. Ich bin nicht für die Backups verantwortlich und will das erst noch abklären. Nicht das da noch etwas verloren geht 😉
                Ich melde mich wieder, wenn wir die nötigen Vorkehrungen getroffen haben.

                Grüsse
                Nicolas

                LFischerL 1 Reply Last reply Reply Quote 0
                • LFischerL Offline
                  LFischer @Nicolas
                  last edited by

                  Hey @nicolas

                  mit "überspeichern" meine ich: du öffnest die Konfiguration und speicherst diese, ohne etwas zu verändern. In manchen Fällen kann sowas helfen, wenn beim initialen Speichern irgendetwas nicht funktioniert hat.

                  Generell könntest du auch probieren auf die aktuellsten Versionen von i-doit (1.16.2) und API (1.12.1) zu aktualisieren 🙂

                  Viele Grüße
                  Leo

                  N 1 Reply Last reply Reply Quote 0
                  • N Offline
                    Nicolas @LFischer
                    last edited by

                    Hi @lfischer
                    Das leeren des Caches hat nichts genützt.
                    Nachdem wir auf die API Version 1.12.1 umgestiegen sind, läuft jedoch alles 🙂

                    Vielen Dank für die Unterstützung und einen schönen Tag.

                    Grüsse
                    Nicolas

                    B 1 Reply Last reply Reply Quote 1
                    • B Offline
                      bsorkhpour @Nicolas
                      last edited by

                      @Nicolas said in Multi-Value Eintrag löschen bzw. archivieren:

                      @lfischer

                      Hi @LFischer

                      I have same problem when i want importing application from cmk add 1.8.3 and api 1.14.1. i installed all hotfixs.

                      i-doit responded with an error: i-doit system error: The specified version could not be assigned to this application
                      Stack trace:
                      #0 phar:///usr/local/bin/idoitcmk/vendor/idoit/apiclient/src/API.php(532): Idoit\APIClient\API->evaluateResponse()
                      #1 phar:///usr/local/bin/idoitcmk/src/API/Idoit.php(413): Idoit\APIClient\API->batchRequest()
                      #2 phar:///usr/local/bin/idoitcmk/src/Service/ImportApps.php(336): idoit\idoitcmk\API\Idoit->commit()
                      #3 phar:///usr/local/bin/idoitcmk/src/Service/ImportApps.php(123): idoit\idoitcmk\Service\ImportApps->processSoftwareAssignment()
                      #4 phar:///usr/local/bin/idoitcmk/src/Service/Import/ApplicationCategory.php(32): idoit\idoitcmk\Service\ImportApps->processApplications()
                      #5 phar:///usr/local/bin/idoitcmk/src/Service/ImportObjects.php(365): idoit\idoitcmk\Service\Import\ApplicationCategory->process()
                      #6 phar:///usr/local/bin/idoitcmk/src/Service/ImportObjects.php(278): idoit\idoitcmk\Service\ImportObjects->import()
                      #7 phar:///usr/local/bin/idoitcmk/src/Command/Pull.php(398): idoit\idoitcmk\Service\ImportObjects->update()
                      #8 phar:///usr/local/bin/idoitcmk/src/Command/Pull.php(373): idoit\idoitcmk\Command\Pull->importFromCue()
                      #9 phar:///usr/local/bin/idoitcmk/src/Command/Pull.php(123): idoit\idoitcmk\Command\Pull->import()
                      #10 phar:///usr/local/bin/idoitcmk/vendor/bheisig/cli/src/App.php(906): idoit\idoitcmk\Command\Pull->execute()
                      #11 phar:///usr/local/bin/idoitcmk/vendor/bheisig/cli/src/App.php(389): bheisig\cli\App->executeCommand()
                      #12 phar:///usr/local/bin/idoitcmk/vendor/bheisig/cli/src/App.php(318): bheisig\cli\App->satisfyUserChoice()
                      #13 phar:///usr/local/bin/idoitcmk/bin/idoitcmk.php(149): bheisig\cli\App->run()
                      #14 /usr/local/bin/idoitcmk(2): include('...')
                      #15 {main}

                      Api log>
                      [2023-10-16 10:01:41 169852] DEBUG: Prepare to run request...
                      [2023-10-16 10:01:41 189719] ERROR: An exception occured while processing request: -32099 i-doit system error: The specified version could not be assigned to this application
                      [2023-10-16 10:01:41 189783] DEBUG: -------------------------------------------------------------
                      "version": "2.0",
                      "method": "cmdb.category.save",
                      "params": {
                      "object": 14870,
                      "category": "C__CATG__APPLICATION",
                      "data": {
                      "application": 14148,
                      "assigned_version": "2.28.0"
                      },
                      "apikey": "=********",
                      "language": "en"
                      },
                      "id": 2689

                      LFischerL 1 Reply Last reply Reply Quote 0
                      • LFischerL Offline
                        LFischer @bsorkhpour
                        last edited by

                        Hello @bsorkhpour

                        this is a known problem 😞 It happenes, because the API validation works on a "per property" basis instead of checking the given category data as one unit.

                        Because of this it will check the given version without knowing the reference application. The code will not be able to find the given version and result in an error.

                        I'm afraid the only workaround for this is to disable the API validation.

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post