{
    "id": 16080,
    "procurementProjectId": 14078,
    "noticeNumber": "2019-002208",
    "reducedTimeLimitsForReceiptOfTenders": false,
    "corrigendumAdditionalInformation": [],
    "creatorSystem": "Cloudia Kilpailutus",
    "type": 9902,
    "project": {
        "id": 0,
        "title": "Liferay 7.x p\u00e4ivitysprojekti sek\u00e4 konsultointi- ja tukipalvelut dnro 37\/230\/2018",
        "contractType": 2,
        "procurementCategory": 1,
        "referenceNumber": "214934",
        "jointProcurement": false,
        "centralPurchasing": false,
        "coPurchasers": [],
        "validationState": 2,
        "organisation": {
            "id": "5b2d57ff-7dfa-4d61-2d75-08d78deb351a",
            "information": {
                "officialName": "Ilmatieteen laitos",
                "nationalRegistrationNumber": "0244664-7",
                "nutsCodes": [
                    null
                ],
                "postalAddress": {
                    "streetAddress": "Erik Palm\u00e9nin aukio 1",
                    "postalCode": "00560",
                    "town": "Helsinki",
                    "country": "FI"
                },
                "email": "[email protected]",
                "mainUrl": "https:\/\/ilmatieteenlaitos.fi",
                "validationState": 2
            },
            "contractingAuthorityType": 1,
            "contractingType": 0,
            "mainActivity": 0,
            "mainActivityUtilities": 0,
            "validationState": 0
        },
        "state": 0,
        "defenceWorks": 0,
        "defenceSupplies": 0,
        "publish": 2,
        "agricultureWorks": 0,
        "isPrivate": false,
        "isConcluded": false
    },
    "lotsInfo": {
        "divisionLots": false,
        "lotsSubmittedFor": 0,
        "lotsSubmittedForQuantity": 0,
        "lotsMaxAwarded": false,
        "lotsMaxAwardedQuantity": 0,
        "lotCombinationPossible": false,
        "validationState": 0
    },
    "objectDescriptions": [
        {
            "lotNumber": "1",
            "mainCpvCode": {
                "code": "72000000",
                "vocCodes": []
            },
            "additionalCpvCodes": [],
            "nutsCodes": [],
            "descrProcurement": [
                "Ilmatieteen laitos pyyta\u0308a\u0308 tarjousta ta\u0308ma\u0308n tarjouspyynno\u0308n ja sen liitteiden mukaisesti ilmatieteenlaitos.fi -verkkosivuston Liferay-ohjelmiston p\u00e4ivityksest\u00e4 versioon 7.x CE, sivuston sis\u00e4ll\u00f6n ja toiminnallisuuksien siirt\u00e4misest\u00e4 uudelle alustalle ja arkkitehtuurin muuttamisesta siten, ett\u00e4 k\u00e4ytt\u00f6liittym\u00e4 rakennetaan API-kerrosta vasten. Liferayta ei p\u00e4ivitet\u00e4 EE-versioon. Ilmatieteen laitos vie uuden version tuotantoon toimittajan asennusohjeita soveltaen, yhteisty\u00f6ss\u00e4 toimittajan kanssa. Taloustutkimuksen verkkobr\u00e4nditutkimuksen mukaan Ilmatieteen laitos on valittu toiseksi arvostetuimmaksi suomalaiseksi verkkobr\u00e4ndiksi vuonna 2017.\n\nToimituksen ulkopuolelle rajataan:\n\n\u2022 Muiden kuin t\u00e4ss\u00e4 mainittujen portlettien migratointi uuteen versioon. Ilmatieteen laitos migratoi omat s\u00e4\u00e4aiheiset portletit\n\u2022 Laitteistohankinnat. Ilmatieteen laitos k\u00e4ytt\u00e4\u00e4 olemassa olevia palvelimia uuden Liferay-version ajoymp\u00e4rist\u00f6ss\u00e4\n\nToimittaja saa k\u00e4ytt\u00f6\u00f6ns\u00e4:\n\n\u2022 Palvelun l\u00e4hdekoodit ja p\u00e4\u00e4syn Ilmatieteen laitoksen Subversion- ja git-versionhallintaj\u00e4rjestelm\u00e4\u00e4n\n\u2022 Nykyisen version asennusohjeet virtuaalikoneymp\u00e4rist\u00f6\u00f6n\n\u2022 Tietokantadumpit (2 kpl, tietokanta-alustana on PostgreSQL)\n\u2022 Dokumenttikirjaston tiedostot (3-4 GB)\n\nKehitysty\u00f6 tehd\u00e4\u00e4n Ilmatieteen laitoksen kehitysymp\u00e4rist\u00f6ss\u00e4. Varsinaisesta p\u00e4ivitysprojektista erillisi\u00e4 konsultointi- ja tukipalveluita voidaan ostaa tuntit\u00f6in\u00e4 tarpeen mukaan, n\u00e4iden palvelujen tuntihintaa (alv 0%) kysyt\u00e4\u00e4n t\u00e4ss\u00e4 tarjouspyynn\u00f6ss\u00e4.\n\nHankinnalla korvataan nykyinen verkkosivusto, jonka j\u00e4rjestelm\u00e4kuvaus on liitteess\u00e4 1. Tilaaja valitsee yhden toimittajan, jonka kanssa se tekee sopimuksen. Tarjouspyynno\u0308ssa\u0308 esitetyt hankintama\u0308a\u0308ra\u0308t ovat arvioita, eika\u0308 sopimus muodosta tilaajalle ma\u0308a\u0308ra\u0308ostovelvoitetta. "
            ],
            "disagreeAwardCriteriaToBePublished": false,
            "awardCriteria": {
                "criterionTypes": 8,
                "qualityCriteria": [],
                "costCriteria": [],
                "priceCriterion": {},
                "criterion": [],
                "criteriaStatedInProcurementDocuments": false
            },
            "estimatedValue": {
                "type": 0
            },
            "timeFrame": {
                "type": 0,
                "canBeRenewed": false
            },
            "candidateNumberRestrictions": {
                "envisagedNumber": 0,
                "envisagedMinimumNumber": 0,
                "envisagedMaximumNumber": 0,
                "selected": 0
            },
            "optionsAndVariants": {
                "variantsWillBeAccepted": false,
                "partialOffersWillBeAccepted": false,
                "options": false,
                "optionType": 0
            },
            "tendersMustBePresentedAsElectronicCatalogs": false,
            "euFunds": {
                "procurementRelatedToEuProgram": false
            },
            "awardContract": {
                "contractAwarded": 0,
                "noAwardedContract": {
                    "failureReason": 0,
                    "originalNoticeSentVia": 0
                },
                "awardedContract": {
                    "numberOfTenders": {
                        "disagreeTenderInformationToBePublished": false,
                        "total": 0
                    },
                    "disagreeContractorInformationToBePublished": false,
                    "contractors": [
                        {
                            "nutsCodes": [],
                            "postalAddress": {},
                            "isSmallMediumEnterprise": false,
                            "validationState": 0
                        }
                    ],
                    "initialEstimatedValueOfContract": {},
                    "finalTotalValue": {
                        "type": 0
                    },
                    "likelyToBeSubcontracted": false,
                    "valueOfSubcontract": {},
                    "notPublicFields": {
                        "communityOrigin": false,
                        "nonCommunityOrigin": false,
                        "awardedToTendererWithVariant": false,
                        "abnormallyLowTendersExcluded": false
                    }
                }
            },
            "validationState": 0
        }
    ],
    "communicationInformation": {
        "procurementDocumentsAvailable": 0,
        "additionalInformation": 0,
        "additionalInformationAddress": {
            "validationState": 0
        },
        "otherAddressForProcurementDocuments": {
            "validationState": 0
        },
        "sendTendersOption": 1,
        "electronicAddressToSendTenders": "https:\/\/hanki.tarjouspalvelu.fi\/hanki?id=214934&tpk=fa887a03-6491-436b-addd-e5141d6e1d58",
        "addressToSendTenders": {
            "validationState": 0
        },
        "electronicCommunicationRequiresSpecialTools": false,
        "documentsEntirelyInHilma": false,
        "specsAndAdditionalDocuments": 0,
        "validationState": 0
    },
    "contactPerson": {
        "email": "[email protected]"
    },
    "procurementObject": {
        "mainCpvCode": {
            "code": "72000000",
            "name": "Tietotekniset palvelut: neuvonta, ohjelmistojen kehitt\u00e4minen, Internet ja tuki",
            "vocCodes": []
        },
        "validationState": 2
    },
    "conditionsInformation": {
        "economicCriteriaToParticipate": false,
        "technicalCriteriaToParticipate": false,
        "restrictedToShelteredWorkshop": false,
        "restrictedToShelteredProgram": false,
        "reservedOrganisationServiceMission": false,
        "executionOfServiceIsReservedForProfession": false,
        "participationIsReservedForProfession": false,
        "obligationToIndicateNamesAndProfessionalQualifications": false,
        "validationState": 0
    },
    "conditionsInformationNational": {
        "participantSuitabilityCriteria": [],
        "requiredCertifications": [],
        "validationState": 0,
        "reservedForShelteredWorkshopOrProgram": false
    },
    "complementaryInformation": {
        "isRecurringProcurement": false,
        "estimatedTimingForFurtherNoticePublish": [],
        "electronicOrderingUsed": false,
        "electronicInvoicingUsed": false,
        "electronicPaymentUsed": false,
        "additionalInformation": [],
        "validationState": 0
    },
    "datePublished": "2019-01-30T15:16:53",
    "state": 2,
    "tedPublishState": 0,
    "tedValidationErrors": [],
    "procedureInformation": {
        "procedureType": 1,
        "acceleratedProcedure": false,
        "contestType": 0,
        "frameworkAgreement": {
            "includesFrameworkAgreement": false,
            "includesConclusionOfFrameworkAgreement": false,
            "frameworkAgreementType": 0,
            "frameworkEnvisagedType": 0,
            "includesDynamicPurchasingSystem": false,
            "dynamicPurchasingSystemInvolvesAdditionalPurchasers": false,
            "dynamicPurchasingSystemWasTerminated": false,
            "estimatedTotalValue": {
                "type": 0
            },
            "duration": {
                "type": 0,
                "canBeRenewed": false
            }
        },
        "reductionRecourseToReduceNumberOfSolutions": false,
        "reserveRightToAwardWithoutNegotiations": false,
        "electronicAuctionWillBeUsed": false,
        "procurementGovernedByGPA": false,
        "disagreeCriteriaForEvaluationOfProjectsPublish": false,
        "national": {
            "otherProcedure": [],
            "additionalProcedureInformation": [
                "Hankintamenettelyn\u00e4 k\u00e4ytet\u00e4\u00e4n avointa menettely\u00e4. Hankinta on EU-kynnysarvon alittava hankinta. Hankinnassa noudatetaan lakia julkisista hankinnoista ja k\u00e4ytt\u00f6oikeussopimuksista (1397\/2016, hankintalaki). Tilaaja voi keskeytt\u00e4\u00e4 hankintamenettelyn osittain tai kokonaan todellisesta ja perustellusta syyst\u00e4 (hankintalain 125 \u00a7).\n\nTarjouksen tekemisest\u00e4, esittelyst\u00e4 tai muusta menettelyyn osallistumisesta ei makseta tarjoajille korvausta. Tarjousasiakirjat on saatavissa suomenkielisen\u00e4.\n\nVertailuperusteet ja niiden painoarvot ovat seuraavat:\n\n1. HINTA 30 %\n\nVertailuhinta muodostuu p\u00e4ivitysprojektin ja lis\u00e4ty\u00f6tunnin yhteenlasketusta hinnasta. Vertailussa halvin tarjous saa maksimipisteet, 30 pistett\u00e4. Muut tarjoukset pisteytet\u00e4\u00e4n kaavalla: halvin hinta \/ vertailtava hinta * maksimipisteet.\n\n2. KOKONAISARKKITEHTUURIN KUVAUS 70 %\n \nLaadun arviointi tehd\u00e4\u00e4n tarjoukseen ladattavasta dokumentista. Selke\u00e4 esitystapa, esimerkit ja havainnoillistaminen on t\u00e4rke\u00e4\u00e4. Huomioikaa kaikki ao. kohdat tarjouksessanne. Laadun arviointi tehd\u00e4\u00e4n raatity\u00f6skentelyn\u00e4, joka koostuu kahdesta ohjelmistosuunnittelijasta ja p\u00e4\u00e4arkkitehdista.\n\nToivetilana on hy\u00f6dynt\u00e4\u00e4 konttiteknologiaa (Docker, ...) mahdollisimman paljon. \nLaatuvertailussa tarjoajan dokumentista (tarjouksen sy\u00f6tt\u00f6lomakkeella kohdassa 1. teknologiset vaatimukset) arvioidaan dokumentin osa-alueet, kullakin kohdalla on oma painoarvonsa:\n \na) Tarjouksen tulee sisa\u0308lta\u0308a\u0308 suunnitelma miten Liferayn sisa\u0308lto\u0308a\u0308 voi ka\u0308ytta\u0308a\u0308 API:n kautta.\nKa\u0308ytto\u0308liittyma\u0308 toteutetaan erillisena\u0308 komponenttina ka\u0308ytta\u0308en: 1) Elasticsearchin REST API:a 2) Liferayn REST API:a 3) Jompaa kumpaa laajennettuna 4) Muu tapa Esitetta\u0308va\u0308 suunnitelma siita\u0308, miten API ja sit\u00e4 hy\u00f6dynt\u00e4v\u00e4 UI rakennetaan sisa\u0308lta\u0308en seuraavat asiat:\nLiferay-Teeman tulee olla minimaalinen. UI toteutetaan ka\u0308ytta\u0308en React-JavaScript- kirjastoa ja toteutus tehda\u0308a\u0308n hyo\u0308dynta\u0308en ylla\u0308 mainittuja API-komponentteja. Sa\u0308a\u0308sovellus-portletit muutetaan Single Page Application -tyyppisiksi JavaScript-sovelluksiksi soveltuvin osin. Sovellukset on listattu liitteessa\u0308 X2, jossa on lueteltu myo\u0308s alustava arvio siita\u0308, kenen vastuulla sovelluksien muuttaminen on. Uuden arkkitehtuurin on tuettava vanhassa arkkitehtuurissa olevia ProxyPortlet-tekniikalla toteutettuja tuotteita (liite X1). Nykyisessa\u0308 toteutuksessa Javan Portlet-tekniikalla tehdyt sovellukset (liite X2) on pystytta\u0308va\u0308 toteuttamaan uudessa arkkitehtuurissa ka\u0308ytta\u0308en API:a ja valittua UI- tekniikkaa. Uuden arkkitehtuurin on tuettava iframe-upotuksella tehtyja\u0308 sisa\u0308lto\u0308ja\u0308 (liite X3) . Uuden toteutuksen on tuettava nykytoteutuksessa ka\u0308yto\u0308ssa\u0308 olevia JavaScriptilla\u0308 tehtyja\u0308 Single Page Application - tyyppisia\u0308 sovelluksia (liite X4). Yll\u00e4 mainittujen nykyisten sovelluksien lis\u00e4ksi suunnitelmassa arvioidaan kuinka helposti valittu API ja sen pa\u0308a\u0308lle rakennettu ka\u0308ytto\u0308liittyma\u0308 on laajennettavissa. 16 %\n\nb) Kuinka modulaarinen valittu ratkaisu on, eli kuinka helppoa tulevaisuudessa olisi vaihtaa Liferay johonkin toiseen alustaan tai jokin toinen komponentti toiseen ratkaisuun. 9 %\n\nc) Kuinka paljon API-ratkaisussa joudutaan laajentamaan Liferayn toiminnallisuuksia. Tavoitetila on tehda\u0308 mahdollisimman va\u0308ha\u0308n muokkauksia Liferayn sisa\u0308lle. Mika\u0308li API-ratkaisua joudutaan laajentamaan, on hyva\u0308 jos laajennus kontribuoidaan Liferayn Open Source -projektiin. 4 %\n\nd) Jatkokehityksen kannalta eri komponenteille tulee olla testausympa\u0308risto\u0308 ja testaussuunnitelma.\n- API tulee olla testattava ja sille tulee olla testit.\n- UI tulee olla testattava ja sille tulee olla testit.\n- Tarjouksen tulee sisa\u0308lta\u0308a\u0308 suunnitelma siita\u0308, miten API ja UI testataan 4 %\n\ne) Kuinka helppoa ja\u0308rjestelma\u0308n valvonta ja ylla\u0308pito on kuvauksen perusteella 7 % \n\nf) Miten hyvin toimintavarmuus (riitta\u0308va\u0308 redundanssi komponenteilla, jne.) on huomioitu valitussa arkkitehtuurissa 16 %\n\ng) Kuinka helposti valittu arkkitehtuuri on laajennettavissa johonkin kaupalliseseen pilvipalveluun (esimerkiksi Amazon AWS, Google Cloud, Microsoft Azure). Kuvatkaa dokumentissa esimerkin avulla, miten laajentaminen tapahtuu. 7 %\n\nh) Kuinka helposti valittu arkkitehtuuri on skaalattavissa Ilmatieteen laitoksen omassa infrassa. 7 %\n\n\nYll\u00e4 mainitut osa-alueet pisteytet\u00e4\u00e4n jokaisen raadin j\u00e4senen toimesta (asteikolla 1 - 5), jonka j\u00e4lkeen yhteenlasketut pisteet skaalataan kohdittain seuraavasti.  Kohdasta suurimman yhteenlasketun raatipistem\u00e4\u00e4r\u00e4n saanut tarjous saa lopulliseen vertailuun kohdan painoarvon mukaiset maksimipisteet. Muiden tarjoajien pisteet kohdittain lasketaan kaavalla: (tarjoajan saamat laatupisteet\/parhaan tarjoajan laatupisteet) * maksimipisteet.\n \nLopuksi hinta- ja laatupisteet lasketaan tarjoajittain yhteen. Suurimman yhteenlasketun pistem\u00e4\u00e4r\u00e4n saanut tarjoaja valitaan sopimustoimittajaksi."
            ],
            "transparencyType": 0,
            "limitedNumberOfParticipants": false,
            "numberOfParticipants": 0,
            "selectionCriteria": []
        },
        "validationState": 0
    },
    "tenderingInformation": {
        "tendersOrRequestsToParticipateDueDateTime": "2019-02-28T14:00:00",
        "languages": [],
        "tendersMustBeValidOption": 0,
        "tenderOpeningConditions": {},
        "estimatedExecutionTimeFrame": {
            "type": 3,
            "canBeRenewed": false
        },
        "validationState": 2
    },
    "attachments": [],
    "hasAttachments": false,
    "changes": [],
    "isCorrigendum": false,
    "isMigrated": true,
    "isCancelled": false,
    "cancelledReason": [],
    "isLatest": true,
    "language": "FI",
    "proceduresForReview": {
        "reviewBody": {
            "officialName": "Markkinaoikeus",
            "postalAddress": {
                "streetAddress": "Radanrakentajantie 5",
                "postalCode": "00520",
                "town": "Helsinki",
                "country": "FI"
            },
            "telephoneNumber": "+358 295643300",
            "email": "[email protected]",
            "mainUrl": "http:\/\/www.oikeus.fi\/markkinaoikeus",
            "validationState": 0
        },
        "reviewProcedure": [],
        "validationState": 2
    },
    "attachmentInformation": {
        "description": [],
        "links": [],
        "validationState": 0
    },
    "contractAwardsDefence": [],
    "isPrivateSmallValueProcurement": false,
    "dateCreated": "2019-12-31T14:56:17.1151391",
    "dateModified": "2020-01-08T22:29:03.0192801"
}