Skip to content

Latest commit

 

History

History
446 lines (368 loc) · 30.7 KB

CHANGELOG-5.0.md

File metadata and controls

446 lines (368 loc) · 30.7 KB

5.0.x

5.0.34 (2021-06-22)

  • PIM-9916: Fix value updating for text, simple select and date attribute used as product export filter not saved

5.0.33 (2021-06-18)

5.0.32 (2021-06-16)

5.0.31 (2021-06-10)

Bug fixes

  • PIM-9876: Fix purge of products old scores in Data Quality Insights
  • PIM-9896: Patched symfony/security-core vulnerability

5.0.30 (2021-06-04)

Bug fixes:

  • PIM-9895: [Backport] PIM-9707: ES Max query size and add test for the ElasticSearch client chunked bulk index
  • PIM-9894: [Backport] PIM-9700: Add batch-size option in index products command and index product-models command

5.0.29 (2021-05-31)

Bug fixes:

  • PIM-9882: Fix the display of the grid selector secondary action dropdown

5.0.28 (2021-05-28)

Bug fixes

  • PIM-9878: Fix breadcrumb link in Settings > Attribute Groups

5.0.27 (2021-05-26)

5.0.26 (2021-05-21)

Bug fixes

  • PIM-9839: Fix indexation issue on the 2-way associations

5.0.25 (2021-05-19)

  • OB-806: Add missing migration on pim_catalog_completeness table
  • PIM-9865: [Backport] PIM-9771: Export to PDF doesn't export Image

5.0.24 (2021-05-07)

5.0.23 (2021-05-05)

BC breaks

  • API-1557:
    • Akeneo\Pim\Enrichment\Bundle\EventSubscriber\BusinessEvent\DispatchProductCreatedAndUpdatedEventSubscriber implements Akeneo\Pim\Enrichment\Bundle\EventSubscriber\BusinessEvent\DispatchBufferedPimEventSubscriberInterface.
    • Akeneo\Pim\Enrichment\Bundle\EventSubscriber\BusinessEvent\DispatchProductModelCreatedAndUpdatedEventSubscriber implements Akeneo\Pim\Enrichment\Bundle\EventSubscriber\BusinessEvent\DispatchBufferedPimEventSubscriberInterface.
    • Akeneo\Pim\Enrichment\Bundle\EventSubscriber\BusinessEvent\DispatchProductModelRemovedEventSubscriber implements Akeneo\Pim\Enrichment\Bundle\EventSubscriber\BusinessEvent\DispatchBufferedPimEventSubscriberInterface.
    • Akeneo\Pim\Enrichment\Bundle\EventSubscriber\BusinessEvent\DispatchProductRemovedEventSubscriber implements Akeneo\Pim\Enrichment\Bundle\EventSubscriber\BusinessEvent\DispatchBufferedPimEventSubscriberInterface.
    • Public methods have been changed according to the new interface.

5.0.22 (2021-04-27)

5.0.21 (2021-04-23)

5.0.20 (2021-04-22)

5.0.19 (2021-04-20)

Bug fixes

  • OB-752: Fix 5.0 memcached package issue

5.0.18 (2021-04-15)

5.0.17 (2021-04-15)

5.0.16 (2021-04-08)

Bug fixes

  • PIM-9799: Improve PEF performance by avoid a useless render

5.0.15 (2021-04-06)

5.0.14 (2021-04-01)

5.0.13 (2021-03-29)

  • PLG-137 - Fix filter "Image quality" label to avoid confusion
  • PLG-138 - Fix bad "activated" english naming in locales screen
  • PLG-139 - Fix bad "activated" english naming in attribute group screen

5.0.12 (2021-03-26)

5.0.11 (2021-03-24)

5.0.10 (2021-03-23)

5.0.9 (2021-03-19)

5.0.8 (2021-03-17)

5.0.7 (2021-03-09)

5.0.6 (2021-03-09)

5.0.5 (2021-02-19)

Bug fixes

  • AOB-1317: Fix deprecated nested ternary expression
  • DAPI-1490: Fix redirect to product grid from DQI dashboard when a default view is activated on the user profile
  • PIM-9686: Fix memory leak during "set_attribute_requirements" job
  • PIM-9673: Make sure that the job that converts product models into simple products does not fail
  • PIM-9727: Add missing query params to hatoas links

5.0.4 (2021-02-02)

5.0.3 (2021-01-29)

5.0.2 (2021-01-29)

Bug fixes

  • DAPI-1477: Fix unstable DQI integration tests

5.0.1 (2021-01-08)

Bug fixes

  • DAPI-1470: Fix DateTime bad usage
  • DAPI-1469: Fix the size issue with the logo on login page
  • PIM-9622: Fix query that can generate a MySQL memory allocation error
  • PIM-9620: Fix performance issue on API attributes partial update list

5.0.0 (2020-12-31)

Bug fixes

  • PIM-9554: Discrepancy on the user dashboard due to difference between UI locale and catalog locale
  • PIM-9486: System Information sections Registered bundles and PHP extensions repeat a high number of times
  • PIM-9514: Fix check on API completness for product model
  • PIM-9408: Fix attribute group's updated_at field udpate
  • TIP-1513: Environment variables declared in the env were not loaded when using a compiled .env file
  • PIM-9274: Fix Yaml reader to display the number of lines read for incorrectly formatted files
  • TIP-1406: Add a tag to configure a DIC service based on a feature flag
  • PIM-9133: Fix product save when the user has no permission on some attribute groups
  • Fixes memory leak when indexing product models with a lot of product models in the same family
  • PIM-9119: Fix missing warning when using mass edit with parent filter set to empty
  • PIM-9114: fix errors on mass action when the parent filter is set to empty
  • PIM-9110: avoid deadlock error when loading product and product models in parallel with the API
  • PIM-9113: Locale Specific attribute breaks product grid
  • PIM-9157: Fix performance issue when loading the data of a product group
  • PIM-9163: total_fields limit of elasticsearch should be configurable
  • PIM-9197: Make queries in InMemoryGetAttributes case insensitive
  • PIM-9213: Fix tooltip hover on Ellipsis for Family Name on creating product
  • PIM-9184: API - Fix dbal query group by part for saas instance
  • PIM-9289: Display a correct error message when deleting a group or an association
  • PIM-9327: PDF generation header miss the product name when the attribute used as label is localizable
  • PIM-9324: Fix product grid not loading when asset used as main picture is deleted
  • PIM-9356: Fix external api endpoint for products with invalid quantified associations
  • PIM-9357: Make rules case-insensitive so it complies with family and attribute codes
  • PIM-9362: Adapt System Information twig file for a clear and a correct display of the number of API connections
  • PIM-9360: Fix PHP Warning raised in PriceComparator
  • PIM-9370: Fixes page freezing with a big number of attribute options
  • PIM-9391: Filter empty prices and measurement values
  • PIM-9407: Fix glitch in family variant selector if the family variant has no label
  • PIM-9425: Fix inaccurate attribute max characters
  • PIM-9443: Do not cache extensions.json
  • PIM-9454: Fix scalar value type check in PQB filters
  • PIM-9460: Fix performance issue on export
  • PIM-9461: Fix display of multiselect fields with a lot of selected options
  • PIM-9466: Fix selection counter in datagrid
  • GITHUB-12578: Fix trailing zeros when formatting numbers
  • PIM-9440: Fix locked MySQL tables during removing DQI evaluations without product
  • PIM-9476: Fix locale selector behavior on the product edit form when the user doesn't have permissions to edit attributes
  • PIM-9478: Allow the modification of the identifier on a variant product
  • PIM-9481: Fix the list of product models when trying to get them by family variant
  • GITHUB-12899: Fix error shown when importing product models with the same code
  • PIM-9491: Translate product grid filters in user additional settings
  • PIM-9494: Fix the performances of attribute-select-filter on long lists of AttributeOptions
  • PIM-9496: Change date format in the locale it_IT from dd/MM/yy to dd/MM/yyyy
  • PIM-9519: Fix translation key for datagrid search field
  • PIM-9517: Fix locale selector default value on localizable attributes in product exports
  • PIM-9516: Recalculate completeness after a bulk set attribute requirements on families
  • PIM-9532: Fix the family selection in mass action when a filter on label is set
  • PIM-9535: Fix export with condition on localisable attribute does not work if selected locale is not changed
  • PIM-9542: Fix product creation if the family has a numeric code
  • PIM-9498: Add translation for 'Mass delete products' job
  • PIM-9538: Fix sorting on rule engine list page
  • PIM-9499: Fix warning display when a job is running with warnings
  • PIM-9545: Fix possible memory leak in large import jobs
  • PIM-9533: Update wysiwyg editor's style in order to differentiate new paragraphs from mere line breaks
  • PIM-9548: Mitigate deadlock issues on category API
  • PIM-9540: Do not strip HTML tags on textarea content before indexing them in ES and fix newline_pattern char filter
  • PIM-9539: Fix the display of long attribute labels or codes on variant attributes page
  • PIM-9580: Fix conversion operation for ATM, PSI, TORR & MMHG
  • PIM-9569: Fix memory usage issue when adding a group to a product
  • PIM-9571: Fix missing items on the invalid data file when importing product models
  • PIM-9543: Print PDF content with Asian characters
  • PIM-9577: Remove empty 'Global settings' tab on following XLSX import: attribute, family, family variant, association type, attribute option, attribute group, group type
  • PIM-9590: Fix "Default product grid view" multiple times on user settings page
  • CPM-86: Fix undefined tab on job profile edit
  • PIM-9596: Fix attribute options manual sorting
  • PIM-9598: Fix quick export when the bs_Cyrl_BA locale is used.
  • PIM-9612: Fix no image preview for Association with quantities when the image is an asset collection
  • RAC-435: Fix fatal error for user that migrate from 4.0 with product values format that doesn't correspond to expected format
  • RAC-449: Fix invalid processed item when remove attribute
  • PIM-9610: Force displaying years with 4 digits in dates for every locale

New features

  • MET-197: Add possibility to define that an association type is two way & automatically create inversed association when association type is two way
  • MET-14: Measurements (or metrics) are now stored in database
  • AOB-277: Add an acl to allow a role member to view all job executions in last job execution grids, job tracker and last operations widget.
  • RAC-54: Add a new type of associations: Association with quantity
  • RAC-123: Add possibility to export product/product model with labels instead of code
  • RAC-271: Add possibility to declare jobs as stoppable and stop them from the UI
  • RAC-277: Add job progress and remaining time in the UI
  • CPM-93: Add a default value for Yes/No attributes; this default value is applied when creating a new product or product model
  • PM2020-9: Convert a variant to a simple product

Improvements

  • CLOUD-1959: Use cloud-deployer 2.2 and terraform 0.12.25
  • PIM-9306: Enhance catalog volume monitoring count queries for large datasets
  • API-1140: Be able to get attributes searching by a list of attribute codes
  • API-1225: Be able to get attributes searching by updated date
  • API-1226: Be able to get attributes searching by a list of attribute types
  • PIM-9368: Allow minimum translation progress of 70% instead of 80%
  • PIM-9398: Add a primary key on connection table
  • PIM-9371: Disable save button when user creation form is not ready to submit
  • RAC-178: When launching a job, the notification contains a link to the job status
  • PIM-9485: Change ACL name “Remove a product model” to “Remove a product model (including children)”
  • BH-138: clear Locale cache on save
  • RAC-393: Improve attribute removal management
  • CXP-493: Do not save products when they were not actually updated. In order to do so, the product now returns copies of its collections (values, categories, groups, associations and quantified associations). Practically, this means that such a collection cannot be directly updated "from outside" anymore (e.g: $product->getCategories()->add($category) won't update the product anymore, you should now use $product->addCategory($category) to achieve it)
  • CXP-544: Do not save product models when they were not actually updated. As for products, the product model will now return copies of its collections (values, categories, associations and quantified associations)

Technical Improvements

  • TIP-1233: Upgrade to php7.4
  • CPM-38: Upgrade Symfony to 4.4.15
  • TIP-152: Upgrade Mysql to 8.0.22
  • BH-286: Up ElasticSearch to 7.10.1
  • CPM-33: Upgrade node to 12.19
  • CPM-33: Upgrade npm to 6.14
  • PIM-9452: Add a command to update the ElasticSearch indexes max fields limit
  • RAC-444: Improve jobs logs

Classes

BC breaks

  • API-1140: Change $criteria format from Akeneo\Pim\Structure\Bundle\Doctrine\ORM\Repository\ExternalApi\AttributeRepository the new format is [property: [['operator' => (string), 'value' => (mixed)]]].

Codebase

  • Change constructor of Akeneo\Tool\Bundle\ElasticsearchBundle\IndexConfiguration\Loader to

    • add Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface $parameterBag
  • Change constructor of Akeneo\Pim\Enrichment\Bundle\Controller\InternalApi\ProductModelController to

    • add Akeneo\Pim\Enrichment\Bundle\Filter\CollectionFilterInterface $productEditDataFilter
  • Change constructor of \Akeneo\Pim\Enrichment\Bundle\Controller\ExternalApi\ProductController to

    • add Akeneo\Pim\Enrichment\Component\Product\Query\GetConnectorProducts $getConnectorProductsWithOptions
    • add Symfony\Component\EventDispatcher\EventDispatcherInterface $eventDispatcher
    • add GetProductsWithQualityScoresInterface $getProductsWithQualityScores
    • add Akeneo\Pim\Enrichment\Component\Product\EntityWithFamilyVariant\RemoveParentInterface $removeParent
  • Change constructor of Akeneo\Pim\Enrichment\Bundle\Controller\InternalApi\ProductController to

    • add Akeneo\Pim\Enrichment\Bundle\Filter\CollectionFilterInterface $productEditDataFilter
    • add Akeneo\Pim\Enrichment\Component\Product\EntityWithFamilyVariant\RemoveParentInterface $removeParent
  • Change constructor of Akeneo\Pim\Structure\Component\Validator\Constraints\ValidMetricValidator to

    • remove array $measures
    • add Akeneo\Tool\Bundle\MeasureBundle\Provider\LegacyMeasurementProvider $provider
  • Change constructor of Akeneo\Tool\Bundle\MeasureBundle\Controller\ExternalApi\MeasureFamilyController to

    • remove array $measures
    • add Akeneo\Tool\Bundle\MeasureBundle\Provider\LegacyMeasurementProvider $legacyMeasurementProvider
  • Change constructor of Akeneo\Tool\Bundle\MeasureBundle\Controller\MeasuresController to

    • remove array $measures
    • add Akeneo\Tool\Bundle\MeasureBundle\Provider\LegacyMeasurementProvider $provider
  • Change constructor of Akeneo\Tool\Bundle\MeasureBundle\Convert\MeasureConverter to

    • remove array $config
    • add Akeneo\Tool\Bundle\MeasureBundle\Provider\LegacyMeasurementProvider $provider
  • Change constructor of Akeneo\Tool\Bundle\MeasureBundle\Manager\MeasureManager to

    • remove array $config
    • add Akeneo\Tool\Bundle\MeasureBundle\Provider\LegacyMeasurementProvider $legacyMeasurementProvider
  • Change constructor of Akeneo\Pim\Enrichment\Component\Product\Localization\Presenter to

    • remove Akeneo\Tool\Component\Localization\TranslatorProxy $translatorProxy
    • add Akeneo\Tool\Bundle\MeasureBundle\Persistence\MeasurementFamilyRepositoryInterface $measurementFamilyRepository
    • add Akeneo\Tool\Component\StorageUtils\Repository\BaseCachedObjectRepository $baseCachedObjectRepository
    • add Psr\Log\LoggerInterface $logger
  • Change constructor of Akeneo\Pim\Enrichment\Component\Product\Normalizer\InternalApi\GroupNormalizer to

    • add Akeneo\Pim\Enrichment\Component\Product\Query\GetGroupProductIdentifiers
  • Change constructor of Akeneo\Pim\Structure\Component\Query\PublicApi\AttributeType\Attribute to

    • add (string) $defaultMetricUnit
  • Change constructor of Akeneo\Pim\Enrichment\Bundle\Elasticsearch\IdentifierResultCursor to add Akeneo\Pim\Enrichment\Bundle\Elasticsearch\ElasticsearchResult $result

  • Change constructor of Akeneo\Pim\Enrichment\Bundle\Storage\ElasticsearchAndSql\ProductGrid\FetchProductAndProductModelRows to add Akeneo\Pim\Enrichment\Bundle\Elasticsearch\Facet\ProductAndProductsModelDocumentTypeFacetFactory $productAndProductsModelDocumentTypeFacetFactory

  • Change constructor of Akeneo\Pim\Enrichment\Component\Product\Grid\ReadModel\Rows to

    • add ?int $totalProductCount
    • add ?int $totalProductModelCount
  • Change constructor of Akeneo\Pim\Enrichment\Bundle\Elasticsearch\ProductAndProductModelQueryBuilderWithSearchAggregatorFactory to make not nullable the third parameter Akeneo\Pim\Enrichment\Bundle\Elasticsearch\ProductAndProductModelSearchAggregator $searchAggregator

  • Change Akeneo\Tool\Bundle\MeasureBundle\Manager\MeasureManager to remove method setMeasureConfig(array $config)

  • Remove Akeneo\Tool\Bundle\MeasureBundle\DependencyInjection\Configuration

  • Remove Akeneo\Tool\Bundle\MeasureBundle\Family\AreaFamilyInterface

  • Remove Akeneo\Tool\Bundle\MeasureBundle\Family\BinaryFamilyInterface

  • Remove Akeneo\Tool\Bundle\MeasureBundle\Family\CaseBoxFamilyInterface

  • Remove Akeneo\Tool\Bundle\MeasureBundle\Family\DecibelFamilyInterface

  • Remove Akeneo\Tool\Bundle\MeasureBundle\Family\DurationFamilyInterface

  • Remove Akeneo\Tool\Bundle\MeasureBundle\Family\ElectricChargeFamilyInterface

  • Remove Akeneo\Tool\Bundle\MeasureBundle\Family\EnergyFamilyInterface

  • Remove Akeneo\Tool\Bundle\MeasureBundle\Family\FrequencyFamilyInterface

  • Remove Akeneo\Tool\Bundle\MeasureBundle\Family\IntensityFamilyInterface

  • Remove Akeneo\Tool\Bundle\MeasureBundle\Family\LengthFamilyInterface

  • Remove Akeneo\Tool\Bundle\MeasureBundle\Family\PowerFamilyInterface

  • Remove Akeneo\Tool\Bundle\MeasureBundle\Family\PressureFamilyInterface

  • Remove Akeneo\Tool\Bundle\MeasureBundle\Family\ResistanceFamilyInterface

  • Remove Akeneo\Tool\Bundle\MeasureBundle\Family\SpeedFamilyInterface

  • Remove Akeneo\Tool\Bundle\MeasureBundle\Family\TemperatureFamilyInterface

  • Remove Akeneo\Tool\Bundle\MeasureBundle\Family\VoltageFamilyInterface

  • Remove Akeneo\Tool\Bundle\MeasureBundle\Family\VolumeFamilyInterface

  • Remove Akeneo\Tool\Bundle\MeasureBundle\Family\WeightFamilyInterface

  • Rename Akeneo\Tool\Bundle\MeasureBundle\Exception\UnknownFamilyMeasureException as Akeneo\Tool\Bundle\MeasureBundle\Exception\MeasurementFamilyNotFoundException

  • Rename Akeneo\Tool\Bundle\MeasureBundle\Exception\UnknownMeasureException as Akeneo\Tool\Bundle\MeasureBundle\Exception\UnitNotFoundException

  • Change constructor of Akeneo\Pim\Enrichment\Bundle\Command\RefreshProductCommand to

    • replace Akeneo\Tool\Component\StorageUtils\Saver\SaverInterface $productSaver by Akeneo\Tool\Component\StorageUtils\Saver\BulkSaverInterface $productSaver
    • replace Akeneo\Tool\Component\StorageUtils\Saver\SaverInterface $productModelSaver by Akeneo\Tool\Component\StorageUtils\Saver\BulkSaverInterface $productModelSaver
  • Change constructor of Akeneo\Pim\Enrichment\Bundle\Command\RemoveCompletenessForChannelAndLocaleCommand to

    • replace Akeneo\Tool\Component\StorageUtils\Saver\SaverInterface $channelSaver by Akeneo\Tool\Component\StorageUtils\Saver\BulkSaverInterface $channelSaver
  • Add getChannels() and getLabel() methods in Akeneo\Pim\Enrichment\Component\Category\Model\CategoryInterface interface

  • Change addFieldSorter() method of Akeneo\Pim\Enrichment\Component\Product\Query\Sorter\FieldSorterInterface to return Akeneo\Pim\Enrichment\Component\Product\Query\Sorter\FieldSorterInterface

  • The Akeneo\Tool\Component\Api\Repository\ApiResourceRepositoryInterface interface now also extends Doctrine\Common\Persistence\ObjectRepository interface

  • Rename the $objectFilter property in Akeneo\Pim\Enrichment\Bundle\Controller\InternalApi\CategoryController to $collectionFilter

  • Change constructor of Akeneo\Pim\Enrichment\Bundle\Storage\Sql\Connector\SqlGetConnectorProducts to replace Akeneo\Tool\Component\StorageUtils\Repository\IdentifiableObjectRepositoryInterface $attributeRepository by Akeneo\Pim\Structure\Component\Repository\AttributeRepositoryInterface $attributeRepository

  • Change Akeneo\Pim\Enrichment\Component\Comment\Model\CommentInterface to use Akeneo\UserManagement\Component\Model\UserInterface instead of Symfony\Component\Security\Core\User\UserInterface

  • Change Akeneo\Pim\Enrichment\Component\Product\Connector\Step\MassEditStep::setCleaner() to take Akeneo\Pim\Enrichment\Component\Product\Connector\Item\MassEdit\TemporaryFileCleaner $cleaner as first argument instead of Akeneo\Tool\Component\Batch\Step\StepExecutionAwareInterface $cleaner

  • Change Akeneo\Pim\Enrichment\Component\Product\Normalizer\Versioning\ProductNormalizer::normalizeAssociations() to make the first argument not optional

  • Change Akeneo\Pim\Enrichment\Component\Product\Model\Group::getTranslation() to return null or an instance of Akeneo\Pim\Enrichment\Component\Product\Model\GroupTranslationInterface

  • Change Akeneo\Pim\Enrichment\Component\Category\Model\Category::getTranslation() to return null or an instance of Akeneo\Pim\Enrichment\Component\Category\Model\CategoryTranslationInterface

  • Change Akeneo\Pim\Enrichment\Component\Comment\Normalizer\Standard\CommentNormalizer to implement Symfony\Component\Serializer\Normalizer\NormalizerAwareInterface instead of Symfony\Component\Serializer\SerializerAwareInterface. That means:

    • the setSerializer() method and the $serializer property are removed
    • the setNormalizer() method and the $normalizer property are added
  • Change Akeneo\Pim\Enrichment\Component\Product\Normalizer\Versioning\Product\CollectionNormalizer to implement Symfony\Component\Serializer\Normalizer\NormalizerAwareInterface instead of Symfony\Component\Serializer\SerializerAwareInterface. That means:

    • the setSerializer() method and the $serializer property are removed
    • the setNormalizer() method and the $normalizer property are added
  • Change Akeneo\Pim\Enrichment\Component\Product\Normalizer\Versioning\Product\ValueNormalizer to implement Symfony\Component\Serializer\Normalizer\NormalizerAwareInterface instead of Symfony\Component\Serializer\SerializerAwareInterface. That means:

    • the setSerializer() method and the $serializer property are removed
    • the setNormalizer() method and the $normalizer property are added
  • Change Akeneo\Pim\Enrichment\Component\Product\Normalizer\Versioning\ProductModelNormalizer to implement Symfony\Component\Serializer\Normalizer\NormalizerAwareInterface instead of Symfony\Component\Serializer\SerializerAwareInterface. That means:

    • the setSerializer() method and the $serializer property are removed
    • the setNormalizer() method and the $normalizer property are added
  • Change Akeneo\Pim\Enrichment\Component\Product\Normalizer\Versioning\ProductNormalizer to implement Symfony\Component\Serializer\Normalizer\NormalizerAwareInterface instead of Symfony\Component\Serializer\SerializerAwareInterface. That means:

    • the setSerializer() method and the $serializer property are removed
    • the setNormalizer() method and the $normalizer property are added
  • Change Akeneo\Pim\Structure\Component\Normalizer\InternalApi\AttributeOptionNormalizer to implement Symfony\Component\Serializer\Normalizer\NormalizerAwareInterface instead of Symfony\Component\Serializer\SerializerAwareInterface. That means:

    • the setSerializer() method and the $serializer property are removed
    • the setNormalizer() method and the $normalizer property are added
  • Change Akeneo\Pim\Structure\Component\Normalizer\InternalApi\AttributeOptionValueCollectionNormalizer to implement Symfony\Component\Serializer\Normalizer\NormalizerAwareInterface instead of Symfony\Component\Serializer\SerializerAwareInterface. That means:

    • the setSerializer() method and the $serializer property are removed
    • the setNormalizer() method and the $normalizer property are added
  • Remove Akeneo\Pim\Enrichment\Component\Product\Normalizer\InternalApi\ViolationNormalizer class, it is replaced by Akeneo\Pim\Enrichment\Component\Product\Normalizer\InternalApi\ConstraintViolationNormalizer

  • Change Akeneo\Pim\Enrichment\Component\Product\Model\EntityWithValuesInterface to add getId() and getIdentifier() methods

  • Change constructor of Akeneo\Pim\Structure\Bundle\Controller\InternalApi\AttributeGroupController to replace Doctrine\ORM\EntityRepository $attributeGroupRepo by Akeneo\Pim\Structure\Component\Repository\AttributeGroupRepositoryInterface $attributeGroupRepo

  • Change Akeneo\Pim\Structure\Component\Repository\FamilyRepositoryInterface interface to add getWithVariants()

  • Change constructor of Akeneo\Pim\Structure\Bundle\Query\InternalApi\AttributeGroup\Sql\FindAttributeCodesForAttributeGroup to replace Doctrine\DBAL\Driver\Connection $connection by Doctrine\DBAL\Connection $connection

  • Update Akeneo\Pim\Enrichment\Component\Product\Model\ProductInterface to

    • remove the setFamilyId() method
    • extend the new Akeneo\Tool\Component\StorageUtils\Model\StateUpdatedAware interface (with isDirty() and cleanup() methods)
  • Update Akeneo\Pim\Enrichment\Component\Product\Model\ProductModelInterface to extend the new Akeneo\Tool\Component\StorageUtils\Model\StateUpdatedAware interface (with isDirty() and cleanup() methods)

  • Update Akeneo\Pim\Enrichment\Component\Product\Model\AbstractProduct to

    • remove the setFamilyId() method
    • remove the $categoryIds public property and the $familyId and $groupIds protected properties
    • add isDirty() and cleanup() methods
  • Change the Oro\Bundle\PimDataGridBundle\Repository\DatagridViewRepositoryInterface to:

    • remove the findDatagridViewByAlias() method
    • rename the getDatagridViewTypeByUser() method to getDatagridViewAliasesByUser() and add type hint on the return (array)
    • add type hint on the return of the findDatagridViewBySearch() method (Doctrine\Common\Collections\Collection)
  • Change constructor of Akeneo\Pim\Enrichment\Component\Product\Job\DeleteProductsAndProductModelsTasklet to

    • add Akeneo\Tool\Component\Batch\Job\JobRepositoryInterface $jobRepository
  • Update Akeneo\Pim\Enrichment\Component\Product\Model\ProductModel to add isDirty() and cleanup() methods

  • Move Akeneo\Pim\Enrichment\Component\Product\Validator\Constraints\WritableDirectory to Akeneo\Tool\Component\StorageUtils\Validator\Constraints\WritableDirectory

  • Move Akeneo\Pim\Enrichment\Component\Product\Validator\Constraints\WritableDirectoryValidator to Akeneo\Tool\Component\StorageUtils\Validator\Constraints\WritableDirectoryValidator

  • Change constructor of Akeneo\Pim\Enrichment\Bundle\Command\CleanRemovedAttributesFromProductAndProductModelCommand to

    • add \Symfony\Component\EventDispatcher\EventDispatcherInterface $eventDispatcher
    • remove \Akeneo\Pim\Enrichment\Component\Product\ValuesRemover\CleanValuesOfRemovedAttributesInterface $cleanValuesOfRemovedAttributes
    • add \Akeneo\Tool\Bundle\BatchBundle\Launcher\JobLauncherInterface $jobLauncher
    • add \Akeneo\Tool\Component\StorageUtils\Repository\IdentifiableObjectRepositoryInterface $jobInstanceRepository
    • add \Akeneo\Pim\Enrichment\Component\Product\Query\CountProductsWithRemovedAttributeInterface $countProductsWithRemovedAttribute
    • add \Akeneo\Pim\Enrichment\Component\Product\Query\CountProductModelsWithRemovedAttributeInterface $countProductModelsWithRemovedAttribute
    • add \Akeneo\Pim\Enrichment\Component\Product\Query\CountProductsAndProductModelsWithInheritedRemovedAttributeInterface $countProductsAndProductModelsWithInheritedRemovedAttribute
    • add \Symfony\Component\Routing\RouterInterface $router
    • add string $pimUrl
  • Change the Oro\Bundle\PimDataGridBundle\Controller\ProductExportController class to remove the getRequest() method

  • Change signature of createInversedAssociation() from Akeneo\Pim\Enrichment\Component\Product\Updater\TwoWayAssociationUpdaterInterface

    • remove AssociationInterface $association
    • add string $associationTypeCode and Akeneo\Pim\Enrichment\Component\Product\Model\EntityWithAssociationsInterface $associatedEntity
  • Change signature of removeInversedAssociation() from Akeneo\Pim\Enrichment\Component\Product\Updater\TwoWayAssociationUpdaterInterface

    • remove AssociationInterface $association
    • add string $associationTypeCode and Akeneo\Pim\Enrichment\Component\Product\Model\EntityWithAssociationsInterface $associatedEntity
  • Update Akeneo\Pim\Enrichment\Component\Product\Model\EntityWithAssociationsInterface interface:

    • Remove method setAssociations()
    • Remove method getAssociationForType()
    • Remove method getAssociationForTypeCode()
    • Add method hasAssociationForTypeCode()
    • Add method addAssociatedProduct()
    • Add method removeAssociatedProduct()
    • Add method getAssociatedProducts()
    • Add method addAssociatedProductModel()
    • Add method removeAssociatedProductModel()
    • Add method getAssociatedProductModels()
    • Add method addAssociatedGroup()
    • Add method removeAssociatedGroup()
    • Add method getAssociatedGroups()
  • Change constructor of Akeneo\Pim\Enrichment\Component\Product\Updater\Adder\AssociationFieldAdder:

    • add argument Akeneo\Pim\Structure\Component\Repository\AssociationTypeRepositoryInterface $associationTypeRepository
    • add argument Akeneo\Pim\Enrichment\Component\Product\Updater\TwoWayAssociationUpdaterInterface $twoWayAssociationUpdater
  • Change constructor of Akeneo\Pim\Enrichment\Component\Product\Updater\Clearer\Field\AssociationFieldClearer: add argument Akeneo\Pim\Enrichment\Component\Product\Updater\TwoWayAssociationUpdaterInterface $twoWayAssociationUpdater

  • Change constructor of Akeneo\Pim\Enrichment\Component\Product\Updater\Setter\AssociationFieldSetter: add argument Akeneo\Pim\Structure\Component\Repository\AssociationTypeRepositoryInterface $associationTypeRepository

  • Change constructor of Akeneo\Pim\Enrichment\Component\Product\Factory\ReadValueCollectionFactory to

    • add Psr\Log\LoggerInterface $logger
  • Move Akeneo\Channel\Component\Query\GetChannelCodeWithLocaleCodesInterface to Akeneo\Channel\Component\Query\PublicApi\GetChannelCodeWithLocaleCodesInterface

  • Remove Akeneo\Pim\Enrichment\Component\Product\Validator\Constraints\ImmutableVariantAxesValues

  • Remove Akeneo\Pim\Enrichment\Component\Product\Validator\Constraints\ImmutableVariantAxesValuesValidator

  • Change constructor of Akeneo\Pim\Enrichment\Component\Product\Connector\Processor\Denormalizer\ProductProcessor to add Akeneo\Pim\Enrichment\Component\Product\EntityWithFamilyVariant\RemoveParentInterface $removeParent

  • Change constructor of Akeneo\Platform\Bundle\ImportExportBundle\Controller\Ui\JobTrackerController to

    • add Psr\Log\LoggerInterface $logger

CLI commands

The following CLI commands have been deleted:

Services

  • Update pim_catalog.validator.constraint.valid_metric to use akeneo_measure.provider.measurement_provider
  • Update akeneo_measure.measure_converter to use akeneo_measure.provider.measurement_provider
  • Update akeneo_measure.manager to use akeneo_measure.provider.measurement_provider
  • Update akeneo_measure.controller.rest.measures to use akeneo_measure.provider.measurement_provider
  • Update legacy_pim_api.controller.measure_family to use akeneo_measure.provider.measurement_provider
  • Rename pim_api.controller.measure_family to legacy_pim_api.controller.measure_family
  • Remove parameter akeneo_measure.measures_config