IBM Apptio

Apptio

A place for Apptio product users to learn, connect, share and grow together.


#Aspera
#Apptio
#Automation
#FinOps
#Apptio
#ITAutomation
 View Only
  • 1.  Download Connector - API Issue & Resolution

    Posted 05/02/19 05:24 PM

    Hello, if you are on R11 and attempting to run a Download Connector in Datalink, but keep bumping into "Download Failed (404): Not Found" or "Table not found" errors, the problem may be related to the API URL generated in Cost Transparency. 

     

    error

     

    In our case, Cost Transparency was not encoding the URL listed in the 'API Export' window correctly.  This bad URL caused our connector to error out.  Apptio Support said this bug is specific to R11 and suggested a helpful workaround. 

     

    If you are running into this issue, try the following solution:

     

    1. Navigate to the API Info, for the report component or data you are interested in:

    API URL

     

    2. Copy the URL and paste into a text editor, such MS Word

    3. Run a Find and Replace -- replace all "%2F" with "%5C"

     

       find and replace

     

    4. Update your Datalink Connector - Copy the updated URL (Step 3) and paste into the "Apptio Export URL" section:

     

       Connector

     

    5. Run the connector

     

     

    Hope that helps!  










    #CostingStandard(CT-Foundation)


  • 2.  Re: Download Connector - API Issue & Resolution

    Posted 05/03/19 09:57 PM

    Bookmarking!  Thank you!!


    #CostingStandard(CT-Foundation)


  • 3.  Re: Download Connector - API Issue & Resolution

    Posted 05/16/19 07:02 AM

    Hi @Samir Banker - nice topic!

     

    When working with API, URL Encoder / Decoder is your friend: https://meyerweb.com/eric/tools/dencoder/

     

    Essentially - in the datapath a slash ("/") is used to delimit the sections of the datapath. So if you have a formula where there is a division such as: (Budget-Cost)/Budget, then apptio gets confused and throws a 404 error.

     

    Thankfully - apptio allows you to use the backslash ("\") instead of the forward slash for division operations.

     

    This is why replacing %2F (URL code for / ) with %5C (URL Code for \) works.

     

    I have also seen the 404 download error for the following scenarios:

    1. Malformed datapath: you may have missed a closing brace or square bracket. Or you may have got the !Function name wrong - !NEWCOLUM[ instead of !NEWCOLUMN[
      The best way to diagnose this is to use the URL Encoder Decoder and paste the API URL and decode. For example in the API snippet below, there is something missing:
      URLENCODED: !FILTER%5B%7BStorage+Master+Data.Server+Check%7D!%3D%22%22/
      URLDECODED: !FILTER[{Storage Master Data.Server Check}!=""/
      As you can see the trailing square bracket - the fix is to put %5D before the slash.
    2. You have Slash ("/") in the filter criteria. I have struggled with this. Let's say you have a Server Type = "Windows / Linux" and you want to filter for it.
      The filter criteria is:
      !FILTER[{Server Master Data.Server Type}="Windows/Linux"]
      But the standard encode shown below will give you no results (granted it won't give you a 404):
      !FILTER%5B%7BServer+Master+Data.Server+Type%7D%3D%22Windows%2F/Linux%22%7D
      A simple replace of %2f with %5c doesn't work. I even tried double encoding - i.e. replacing %25 with %252F. That too didn't work.
      In this scenario - one work around I have used is  the CONTAINS Directive
      !FILTER%5B%7BServer+Master+Data.Server+Type%7D+CONTAINS+%22Windows%22%7D 

     

    The take away folks is avoid the slash like the plague in both values as well as headers!

     

    Regards,

    Sanjay Valiyaveettil


    #CostingStandard(CT-Foundation)


  • 4.  Re: Download Connector - API Issue & Resolution

    Posted 05/16/19 10:18 AM

    Hi @Sanjay Valiyaveettil,

     

    Thanks for that explanation!  APIs are not really in my wheelhouse, but that makes a lot of sense.  Nice to actually understand what was causing the issue and why the solution works  

     

    Thanks again!


    #CostingStandard(CT-Foundation)