Plugin migration - calling services help In my Craft 2 plugin my initial init function looked like:

public function init()
{
    parent::init();

    if(!extension_loaded('imagick')) {
        PdfThumbnailerPlugin::log("imagick library not found - cannot make pdf thumbnails" , LogLevel::Warning);
        return;
    }

    craft()-&gt;on('entries.saveEntry', function(Event $event) {
         craft()-&gt;pdfThumbnailer_saveEntry-&gt;setThumb($event);
    });

    craft()-&gt;on('assets.saveAsset', function(Event $event) {
        PdfThumbnailerPlugin::log("on save asset");
        craft()-&gt;pdfThumbnailer_saveAsset-&gt;checkAsset($event);
    });

}


I cannot understand (due to lack of devchops) or find an example of how to call my functions (which were in service files) in Craft3.

I can see the constants used in the new style 'listener' but have no idea what or where these are referenced in the v3 docs. 

    // Register our site routes
    Event::on(
        UrlManager::class,
        UrlManager::EVENT_REGISTER_SITE_URL_RULES,
        function (RegisterUrlRulesEvent $event) {
            $event-&gt;rules['siteActionTrigger1'] = 'pdfthumbnailer/save-entry';
            $event-&gt;rules['siteActionTrigger2'] = 'pdfthumbnailer/save-asset';
        }
    );


My plugin in craft 2 would create a thumbnail from the first page of a PDF asset.

UPDATE:
SO i eventually made some progress with :

Pdfthumbnailer::$plugin-&gt;SaveEntry-&gt;setThumb($event);


Except this kept saying it could not find service method:

Getting unknown property: joomkit\pdfthumbnailer\Pdfthumbnailer::SaveEntry 


It turns out that the method 'SaveEntry' only was found when named 'saveEntry'. Why would this be the case? (excuse pun)
I can't answer the question fully without seeing your plugin code, but I'd suggest you generate your plugin scaffolding with pluginfactory.io to see how it all fits together.

It's also helpful to look at a existing plugin that works; here's one I wrote that's pretty simple, and should be easy to follow: FastCGI Cache Bust

Roughly, you'd do something like:

PluginClass::getInstance()-&gt;serviceName-&gt;methodName();


Or if you do it the pluginfactory.io way:

PluginClass::$plugin-&gt;serviceName-&gt;methodName();