Articles

/themes/custom/zyxpro_light/images/placeholder.png
17th December 2018 Job Openings , Careers
close

on 17th December 2018 / by webmaster
Zyxware Technologies is looking for a Test Manager who can lead our team of talented software testers towards delivering true value to our clients. The Test Manager will be managing a team of approximately 10 - 15 testers with the assistance of Testing Team Leads. The Test Manager is accountable for achieving client satisfaction and ensuring the overall quality of testing phase. We expect the Test Manager to have the ability to identify and work with metrics to ensure that the testing process satisfies the organisational and project requirements. The Test Manager is also responsible for contributing to the development of the organisation by upholding our values and being focused on our vision and mission. The selected candidate will be placed at our office in Technopark, Thiruvananthapuram. APPLY ONLINE We are looking for the following attributes: Exposure to business workflows and functional testing Preparation of test cases - functional / performance Exposure in working directly with clients to understand client expectation Ability to propose test strategies for projects Ability to mentor testing team members in processes and tools Sensitivity to cost implication of testing plans Good understanding of SDLC process Candidates with testing certifications will have added advantageExperience: 7 to 10 years of testing experience in various technology frameworks (web / desktop), involving business functionality Experience in leading a large team of ten to fifteen members Experience in developing customised testing processes based on customer and organisational expectation Exposure to test automation toolsIf you meet the above requirements, please mail your updated resume with the subject 'Application for the post of Test Manager (TM011808)' to careers@zyxware.com. Please note that while the management appreciates your interest and application for the job, it may not be possible to send in a personalized response to all applicants. Shortlisted applicants will receive an email or a telephonic communication within 4 weeks of your application. Job Openings Careers Leave a reply Your email address will not be published. Required fields are marked *
/themes/custom/zyxpro_light/images/placeholder.png
17th December 2018 Job Openings , Careers
close

on 17th December 2018 / by webmaster
Zyxware Technologies is engaged in the business of software applications development and consultancy services. Its chosen technology platform is Drupal, a Free Software. It is one of the largest code contributors to Drupal from India. We are looking for a Dev Ops Engineer to join at our Trivandrum Development Centre. APPLY ONLINE Specifically, the person will be responsible for the following: Design and build automated solutions using continuous integration (CI) and continuous delivery (CD) systems and work with other server technologies including virtualization, middleware, storage, messaging, and cloud Build sustainable CI/CD workflows; orchestrate automated tasks, provide maintenance for Jenkins or other CI/CD Systems Work collaboratively with internal Development and Quality Assurance teams to ensure consistency by maintaining parity with production environments Enable transformation of established infrastructure using automation; build new systems environments, and upgrade existing ones Script to build required automation and tools on an ad hoc basis (using Ansible, Python, Bash, etc.) Build new hosting environment and configuration of websites. Manage the hosting and troubleshoot in case of any issues Manage system backups, restore and configure application software Monitoring of Servers with Nagios/other tools, Regular health checking of Servers for Security Violations, Disk Space, MYSQL status, Apache, FTP, etc. We are looking for the following attributes: Experience with CI/CD practices with an understanding of full-life-cycle configuration management; experience with Jenkins CI/CD Experience with DevOps concepts and automation skills Experience in the container ecosystem (Kubernetes, OpenShift by Red Hat) Extensive experience in the deployment, monitoring, and management of virtualized systems Linux expertise. Advanced operating system level networking skills with a focus on problem solving Debugging, improving and maintaining deployment scripts Configure servers like Apache Web Servers, Application Servers MYSQL Database Servers Knowledge of Ansible automation or other configuration management tools Ability to manages system backups, restore and configure application software Experience with version control systems like GIT Experience with Python, Bash, and other common scripting languages Automating task through shell scripting Flexible, with the willingness to quickly learn new tools and methods Good team player, takes initiative, with the ability to work on your own Good written and verbal communication skills in English If you meet the above requirements, please mail your updated resume with the subject 'Application for the post of DevOps Engineer (DO011808)' to careers@zyxware.com. Please note that while the management appreciates your interest and application for the job, it may not be possible to send in a personalized response to all applicants. Shortlisted applicants will receive an email or a telephonic communication within 4 weeks of your application. Job Openings Careers Leave a reply Your email address will not be published. Required fields are marked *
/themes/custom/zyxpro_light/images/placeholder.png
17th December 2018 Drupal Technical , Slider
close

on 17th December 2018 / by webmaster
Slick view Slick view is a module which provides new display style to views called Slick Carousel. For this, ‘Views UI’ module is not required. If we need to customize slick slider then we can use Views UI. Installation Slick views: Composer requires drupal/slick_views This will install Slick views Slick (core slick module) Slick UI Slick UI is for providing UI for slick configuration, Slick Views requires slick. Go to extend and install Slick views and slick. If we need to configure slick then we need to install Slick UI module. After installing this module we get an item ‘slick’ in configuration page under media tab. Creation of slider using slick view To create slider using view. Add needed fields for slider in the ‘fields’ section. Now we need to configure the slick carousel We already selected ’slick carousel’ in ‘format’. Click on settings. Now we are going to discuss basic settings. Vanilla slick: Check only if we selected ‘Content’ in Format >Show section. This can be used when slick features cannot satisfy the needs. Now we keep it unchecked. Option set: We can select predefined option sets from this drop-down. Option sets are sets of configurations which are created and saved. Option sets can be created under Admin > Configuration > Slick. This increases re-usability of a set of configurations. This will also provide a large number of options for customizing the slider. Keep it as default. Skin main: Here we can select different skins for the slider. Skins are layouts for sliders with CSS. Some options depend on skins. We are now selecting ‘default’ skin for getting a simple basic slider. Main stage: select the main background or image field. Select the image field. Title: Select the title field. Layout: layouts can be used to specify the slide and caption alignment. Captions fields: Check needed caption fields. We are selecting ‘title’. Override main optionset: If we checked this box, then we can override some features which are configured in main option set like dots, arrows, autoplay, infinite loop etc. Place view in a region. Go to Admin>Structure >Block layout Place our block into a region. Checkout the slider, it should be working.. Drupal Technical Slider Slick View Leave a reply Your email address will not be published. Required fields are marked *
/themes/custom/zyxpro_light/images/placeholder.png
17th December 2018 Drupal Technical , Slider
close

on 17th December 2018 / by webmaster
Slick Carousel   Slick can be used to create a slider. We can create a slider with views and paragraph types or multiple value fields. Slick carousel has many features. Responsiveness is the main feature, that is the ability to scale according to its container. It provides advanced settings for breakpoints. The slick slider can be scrolled using the auto scroll, mouse wheel scroll, swipe, desktop mouse dragging etc. It provides settings for customizing arrow keys and its navigation also provides settings for dots under the slider for slide selecting. Slick has different skins like Full width, Full-screen Split, Grid and multiple-row carousel. Installing slick Composer requires Drupal/slick For creating a slider with multiple value fields, we need the following modules Slick Slick UI For creating a slider with the view, we need the following modules Slick Slick views Creating a slider with multiple value fields or paragraph types Go to extend menu, then install and enable the slick module and slick UI (Provides slick carousel configuration UI). Now we are going to create a slider with a paragraph type and a multiple value image field. Steps: Now we need to configure slick slider. Click on the settings icon in manage display tab. Set ‘OptionSet’ and ‘Skin’ to any predefined one will generate a basic slider. OptionSet is already selected with ‘default’ OptionSet. Other fields and advanced configurations All fields are displayed with a tooltip which contains information about the field. Now we are going to discuss some of the fields. Display style: Use either CSS3 Columns or Grid Foundation. Difference: Columns are best with irregular image sizes (scale width, empty height), as it affects the natural order of grid items. Grid is good with regular cropped ones. Unless required, leave empty to use default formatter, or style. CSS3 Columns is best with adaptive height, non-vertical. Will use the regular carousel as default style if left empty. OptionSet main: Here we can select option set which we can create in the slick configuration page. OptionSet is a set of configuration which we can create and save. This increases the re-usability of a certain configuration. ‘Default’ option set is selected as default. OptionSet creation is going to be discussed in the next topic. Skin main: Skins allow various CSS layouts. Slick provides some predefined skins. Selecting OptionSet and a skin is enough to generate a simple slider. Image style: Select image style. This is the main image style option. Selecting any image style will help to change the image style like ratio, crop etc. OptionSet thumbnail: Select only if we needed thumbnail customisation using optionset. Skin thumbnail: Select only if we needed thumbnail for our slider. Thumbnail style, Thumbnail effect, Thumbnail position: These can be used to specify the thumbnail image style, effect and position. If thumbnail options have been provided then thumbnail for slider images can be displayed as below. Media switcher: We can select appropriate media switching option like switching to content, link to smaller slick etc. Use CSS background: Check this to turn the image into css background. Aspect ratio: Select any aspect ratio for image slider. Grid large: Set this option only for larger displays if needed. Layout: This option can be used for selecting a layout that specifies the slider and caption position etc. Thumbnail caption: Here we can decide what should be displayed as thumbnail caption among alt and title text of the image. Caption fields: Here we can tick alt and title field for displaying as a caption for each slide. Cache: If we need to cache our slider data, then we can select an appropriate time period for caching data. Override main optionset: If we checked this, some settings of selected optionset can be overridden. The settings which can be overridden will be displayed after selecting this checkbox. Over-ridable options are: Arrows - check if slider next and previous arrow need to be displayed. Autoplay – check if the slider needs to be auto played. Dots – check if the slider bottom dots needs to be displayed. Draggable – makes the slider draggable. Infinite – allow the slider slide infinitely. Mousewheel – allow the slider to slide when mouse scrolls. Randomize – for random sliding. Variable width – select if each slide needs to be displayed as variable width. Settings for responsiveness: Leave Breakpoints empty to disable multi-serving images. If provided, lazyload applies. This is ignored if core responsive image is provided. It uses max-width, not min-width. Here we can set breakpoints as we needed. The above listed are fields of slick configuration. This configuration is enough for creating a slider. If we need to customize more then we can create option set and use it. Option set increases the re-usability of configurations. Now let's discuss how to create a new optionset. Creating option set Go to the configuration page, under media, select slick. On this page, we can see the default option set. This cannot be edited, but we can create its duplicate and edit. Here we can configure our slider from the basic, like slider arrows, autoplay, dots, variable width or height etc. Click on duplicate and give a name to option set. There are two tabs one is settings and other is responsive display. Settings tab for specifying the needed configuration for the slider and responsive display tab for specifying the responsive design. Now we are going to discuss the fields in the option set. Optimized: Check to optimize the stored options. Anything similar to defaults will not be stored, except those required by sub-modules and theme_slick(). Breakpoints: Here we can specify the number of breakpoints which is needed for the responsive design. After adding the number of breakpoints, we can specify configuration for each breakpoint in ‘responsive display’ tab. Skin: Here we can select a skin for this particular option set. Mobile first: This is used for specifying mobile first responsive display (taking min-width instead of max-width). asNavFor target: Can specify ID or class for navigation to other sliders. Accessibility: Enables tabbing and arrow key navigation. There are many fields for specifying variable height or width, autoplay, dots for the slider, next and previous icons, slide speed, fade draggable infinite loop of slides, etc.. After creating slick configurations, print the field for displaying the slick slider. Slick is an easy way to create a slider with large options for customization. Read 'How to create Slider using Slick View in Drupal' Drupal Technical Slider Slick Carousel Leave a reply Your email address will not be published. Required fields are marked *
/themes/custom/zyxpro_light/images/placeholder.png
17th December 2018 Business Solution , Digital Transformation
close

on 17th December 2018 / by webmaster
Authors: Thomas P. Thomas, Nisha Oommen Increasingly, we hear the term 'Digital Transformation' in the context of IT Industry and how it is changing the world around us in ways we could not have anticipated just a few years ago. It is real and it has impact. We see it in governance (Smart City) in commerce (Uber, Airbnb, personalisation, omni-channel marketing), in finance (cryptocurrency, blockchain enabled trade finance), in manufacturing (IoT and industrial robots). However, for many the term is vaguely understood. While many understand the form that Digital Transformation takes - IoT, AI, Analytics and it's technology stack - very few understand the content of the term. The Content of Digital Transformation The content or the essence of digital transformation is that it radically transforms a business model or it causes disruption in an industry and that is why it is powerful. The content is less technology and more business and therefore, people with a strong orientation to technology tend to focus on the form and miss out on the content. It will require deeper engagement to understand the content of Digital Transformation. But as a quick guideline, there are some thumb rules that allow us to distinguish between a digital transformation initiative and an IT enablement initiative. An IT enablement initiative is usually about automation of an existing business process to reduce cost and the time of execution. A digital transformation initiative on the other hand usually involves a lot more than that. The essential test we can apply to see whether an initiative is a digital transformation initiative or not, is to see to whether any of the following kinds of changes are taking place as a result of the initiative. Aggregation of Demand and/or Supply (Airbnb, Uber etc) Disintermediation (Flipkart, Amazon etc took out many distributors and retailers from the supply chain, blockchain can take away the need for intermediaries like banks for payments) Automation leveraging on AI for analysis and insights (preliminary diagnostics in healthcare, algorithm driven trading in capital markets etc.) The first two are brought about by filling information gaps that are otherwise hindering a meaningful transaction. For instance, Uber, provides the driver information about who requires a cab and to the consumer the information about the cab, the driver and time of arrival. In other words, it connects demand and supply by plugging information gaps. By doing just that, it drastically improves the utilisation of the car (asset) and can bring down the operating cost and thereby price of cab services. (Actual prices will of course be influenced by the profit seeking nature of enterprises.) The third is a lot more than that. It is made possible by advances in AI and availability of information processing technology whereby some of the capabilities of the human mind can be replicated by systems. Lets get little bit more into detail about the digital transformation of the above three kinds of changes to understand the difference from IT enablement. Aggregation of Demand and Supply Airbnb and Uber are digital platforms that are seen as the models of digital transformation and disruption. Why do we call them as instances of digital transformation? How did they bring about disruption, despite the fact that their service offerings are not new? One offers bed and breakfast services. The other a taxi service. Both are not new concepts. What really made the difference? By aggregating demand and supply using a digital platform, they created new possibilities that changed the nature of customer experience, impacted pricing and created a totally new service model that could scale with almost zero marginal cost. Airbnb - Transforming the Hospitality Market It is said that Airbnb started as a solution to the problem (of paying rent) by the founders. They had built a simple website offering bed and breakfast. By offering a simple but critical service of providing information about availability and pricing of places to stay including non-conventional ones and facilitating bookings, they were able to cater to a large number of customers of varied profiles. This market share gave them the leverage to aggregate on the supply side and launch a number of digitally driven initiatives that enhanced the customer experience as well as offer benefits to suppliers. Trust factor was a major issue for those renting. Integration of rating/reviewer systems and Facebook profiles helped address the information gap and helped people make more informed choices. This helped to build chains of supply and demand where each player is self motivated without the platform spending a dime on assets and their upkeep. The Airbnb business model utilises a network of freelance photographers( directly paid by Airbnb) to visit properties and take high definition photographs of the property. These highly improved pictures boosted the click rates and allowed for better branding of their properties. Thus by aggregating demand and supply and creating the right incentive structures for the actors in the ecosystem, they were able to build a new service delivery model that transformed customer experience. Uber - Transforming the Taxi Services Market As for Uber, while it does use the same aggregator business model there are variants in the key factors that brought about the disruption. The map locating technology along with the Uber app closed the information gap between the supply and the demand. The rating system and the surge pricing strategy helped them handle the fluctuations in demand against the supply. This can be illustrated by its business model canvas as shown below. Source Digital Disintermediation In this kind of digital transformation, the role of the middleman is removed, connecting directly the consumer and the manufacturer. Not only does this bring the customer closer to the source but also enables direct selling causing disruption in the value chain. Some prime examples are blockchains (disintermediation of banks), Amazon, and Flipkart. Both Amazon and Flipkart have disrupted the traditional brick and mortar stores sales and distribution model and have still succeeded in creating brands of great value. By directly selling to the consumer online, a fish company in the South of India, ‘Daily Fish’ has eliminated the need for street hawkers and reach the consumers (homemakers or restaurants) directly through their app or website. Leveraging AI for Analysis and Insights At one point of time, insights generation and decision making ability were not seen to be within the ambit of automation. However, AI and Big Data have now created new possibilities. Developed from systematic analysis of relevant (labeled) data, analytics driven insights bring to the forefront hidden truths that can be used to the advantage of the business. For instance, AI driven recommendation systems have shot up click through rates of videos on YouTube. As of 2018, 100 hours of video are uploaded every minute. 5 billion videos are watched by 1.3 billions users( almost one third of the internet users) everyday.6 How did YouTube manage this kind of disruption? YouTube’s AI based recommendation system. Their co-visitation based recommendation accounts for 207% of the ‘Most Viewed Page’ and 60% of the video clicks from the home page.7 In a recent joint research by Accenture and MIT, ‘Winning in Analytics’ they found that high performing companies are embedding predictive analytics insights into key business processes which is twice that of low performers. Without doubt, analytics based decision making is disrupting industries especially healthcare industry, retail, finance and surprisingly the sports industry. Case in point is the way the Houston Astros won the major league baseball championship last year.8 The insights can be customer focused when we are talking about business insights, algorithm-driven trading in capital markets, or it could be resource allocation or supply chain- having insights on anything based on the predictability or patterns that emerge from mapping the data garnered. Digital Transformation as a Business Approach So in conclusion, digital transformation is a three-pronged business approach performing end-to-end mapping of business activities, re-architecting the activities or introducing new value creating activities using digital technology strategically, assessing and improving data management and analytics expertise, and leading to radically improved customer experiences, emergence of radically new business models and industry structures. References 1. ‘Closing the Gap: Beyond Digitization to Business Transformation’, whitepaper, published in 2017, Cognizant-HBR, accessed June 2018 2. Janaki Akella, Neha Gargi and Tusha Mehrotra, ‘Putting digital process innovation at the center of organizational change’, article, published July 2015, Mckinsey.com, accessed June 2018 3. ‘Digital Transformation of Industries: In collaboration with Accenture’, white paper, published January 2016, World Economic Forum, accessed June 2018 4. ‘Digital Transformation: A Roadmap For Billion-Dollar Organizations’, white paper, published 2011, MIT Center for Digital Business and Capgemini Consulting, accessed June 2018 5. Sourobh Das, ‘Airbnb Business Model: How Does Airbnb Make Money?’, brandstudy/ business model, updated April 2018, Feedough.com, accessed June 2018 6. Salman Aslam, ‘YouTube by the Numbers: Stats, Demographics & Fun Facts’, blog, Published February 2018, Omnicore, accessed July 2018 7. James Davidson, Benjamin Liebald, Junning Liu, Palash Nandy, Taylor Van Vleet, ‘The YouTube Video Recommendation System’, whitepaper, January 2010, Researchgate.net, accessed July 2018 8. Jeff Luhnow, Aaron De Smet, Allen Webb, ‘How the Houston Astros are winning through advanced analytics’, interview, published June 2018, Mckinsey Quarterly, accessed July 2018 Business Solution Digital Transformation Leave a reply Your email address will not be published. Required fields are marked *
/themes/custom/zyxpro_light/images/placeholder.png
17th December 2018 Drupal Technical , Drupal 8
close

on 17th December 2018 / by akhila.vn
To load a node details using its id in Drupal 8 use the following syntax: $node_details = Node::load($nid); $node_details->field_FIELD_NAME->value; We can load multiple nodes in Drupal 8 using loadMultiple() function. Note that the parameter should be array of ids. $nodes = Node::loadMultiple($nids); foreach ($nodes as $node_content) { $title = $node_content->getTitle(); $created_by = $node_content->getOwner(); $type = $node_content->getType(); $field1 = $node_content->field_FIELD_NAME->value; // Get necessary fileds like this. } If it is a node page, then we can get $node_content = \Drupal::routeMatch()->getParameter('node');. Similarly we can load file by id and get its contents like this: $file = File::load($file_fid); $file_url = $file->url(); $file_name = $file->getFilename(); $url = Url::fromUri($file_url); $file_user_entity = $file->getOwner() $file_user_id = $file->getOwnerId() $size = $file->getSize(); // Getting all other details of the file goes here. We can load multiple files like node using File::loadMultiple($fids). For taxonomy term loading we have to pass its target id Term::load($keyword_name->target_id);. We can use getName(), getVocabularyId(), getDescription() etc. For vocabularies we can use, Vocabulary::load($vid). If there is an object for vocabulary then we can get the vocabulary hierarchy by using $vb_obj->getHierarchy(). Note that we have to use the entity class for appropriate load use Drupal\node\Entity\ENTITY_NAME;. For example: use Drupal\node\Entity\Node; use Drupal\taxonomy\Entity\Term; use Drupal\file\Entity\File; --------------------------- Hope this helps. Drupal Technical Drupal 8 Node Taxonomy Leave a reply Your email address will not be published. Required fields are marked *
/themes/custom/zyxpro_light/images/placeholder.png
17th December 2018 Drupal Technical , Drupal 7
close

on 17th December 2018 / by akhila.vn
I had a requirement to add a multi-level responsive drop down menu in a Zyxware theme. Please do refer the below reference links to know more about responsive themes and free Drupal themes. So for that I had to edit page.tpl.php, page--front.tpl.php, style.css, template.php etc. First I added the following code to template.php of my theme. The steps that I followed here are, Added the following code to the function themename__preprocess_page(&$vars) to make the menu as a tree. //Setting menu in a tree structure $main_menu_tree = menu_tree(variable_get('menu_main_links_source', 'main-menu')); $vars['main_menu'] = $main_menu_tree; // Get the entire main menu tree $main_menu_tree = menu_tree_all_data('main-menu'); // Add the rendered output to the $main_menu_expanded variable $vars['main_menu_expanded'] = menu_tree_output($main_menu_tree); Added css class to main menu using the function, function themename_menu_tree__main_menu(&$vars) { return '<ul class="nav navbar-nav">' . $vars['tree'] . '</ul>'; } Added css class to inner part of main menu using the function, function themename_menu_tree__main_menu_inner($vars) { return '<ul class="dropdown-menu">' . $vars['tree'] . '</ul>'; } Added the following function to display the links in main menu tree, function themename_menu_link__main_menu($vars) { $element = $vars['element']; $sub_menu = ''; if ($element['#below']) { foreach ($element['#below'] as $key => $val) { if (is_numeric($key)) { $element['#below'][$key]['#theme'] = 'menu_link__main_menu_inner'; // 2 level <li> } } $element['#below']['#theme_wrappers'][0] = 'menu_tree__main_menu_inner'; // 2 level <ul> $sub_menu = drupal_render($element['#below']); } $output = l($element['#title'], $element['#href'], $element['#localized_options']); $element['#localized_options']['attributes']['class'][] = " dropdown-toggle "; $element['#localized_options']['attributes']['role'][] = "menu"; $element['#localized_options']['attributes']['data-toggle'][] = "dropdown"; $element['#localized_options']['attributes']['aria-expanded'][] = "true"; $output = l($element['#title'], $element['#href'], $element['#localized_options']); return '<li class="dropdown">' . $output . $sub_menu . '</li>'; } Added the following code to make inner <li> tag - links function themename_menu_link__main_menu_inner($vars) { $element = $vars['element']; $sub_menu = ''; if ($element['#below']) { $sub_menu = drupal_render($element['#below']); } $output = l($element['#title'], $element['#href'], $element['#localized_options']); return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . '</li>\n'; } Then I added the code ' print render($main_menu); ' to the page.tpl and page--front.tpl for display menu with necessary <div> tag and css styles based on the theme that were downloaded from http://getbootstrap.com/components References : https://www.drupal.org/node/1178784 http://getbootstrap.com/components/ http://www.zymphonies.com/metro-responsive-theme Drupal Technical Drupal 7 Hook Leave a reply Your email address will not be published. Required fields are marked *
/themes/custom/zyxpro_light/images/placeholder.png
17th December 2018
close

on 17th December 2018 / by webmaster
Introduction A client approached us to add a feature to a site they were building. The site was to be an auctioning platform for football players. Among other enhancements, we worked on a registration confirmation feature. Many of the features in the site like registration, negotiation and other communications are based on an emailing system. Problem Identification The emails that were going out of the site were being marked spam and not being delivered to the intended recipient’s inbox. Another issue was that the number of emails sent daily got limited to 500 emails, Google’s email delivery limit. Problem Research When sending out emails through Gmail or via an email app, emails get routed through sender email service's SMTP service to the recipient’s SMTP email service. This is the normal way of sending emails, but even in this some emails were getting labeled as spam. Nowadays, most email apps strictly scan emails to remove spam, and one of the main things they use to filter out spam messages is the IP address that is used to send the emails. They check against both blacklists as well as whitelists. If we are sending emails from a shared server, there's a possibility that our IP address is already on those blacklists. If we have our own IP address, our mail still may get marked as spam, which means we are on a blacklist. If our site is not associated with a reputable or identifiable IP address and domain name, most email providers will mark it spam. We will also need an SPF or DMIK record, email validation tool that may be difficult to implement on our own but is included with most email sending services. On consideration, we found that transactional email services were a good option in those cases. Approach Why we chose transactional email sending services? Below are three situations (reasons) when transactional email services are the best options: Sending more messages, faster Gmail has a cap (capability) of 500 emails a day, a common limitation we face with email servers. Many shared hosting services also limit the number of emails that can be sent per day. With transactional email sending services, we can send from 10 emails a minute to even 10 million a month. Either way, the email service will be ready for our load, without any added effort from our side. If we need to send thousands of emails a day through our app, or say deliver our company's newsletter to millions of people, we need to think a lot more about how our emails are to be sent. We need a transactional email service, a dedicated email sending service that'll make sure our emails are delivered no matter how many we send. Ensuring your messages get delivered Even if we choose our own servers, and have the infrastructure to send the messages we need, another potential problem we can face with owned email sending server is deliverability. We may technically be able to send emails on our own, but the probability of those emails showing up in our recipients' inboxes is close to nil. Doing more with our emails Some transactional email services, such as Amazon SES, are focused only on sending the email and thus priced accordingly. But most other transactional email services include advanced stats, notifications, filtering and other features which can’t be done using normal email services. With a bit of coding, or with just some clicks on the stats dashboard, we can do amazing things. Solutions Depending on the ease of use, the stats dashboards, and other features we need we can select the right email sending service. The most simple and cheapest transactional email service is Amazon SES, it sends emails, and little else. Others like SendInBlue, Mandrill etc have features like SPF and IP address mapping, template hosting, reports, and analytics, etc, but they are often more expensive, even though your requirement might involve sending comparatively lesser number of emails. Depending on the features, one service may be better suited for our needs and by trying out the most suitable ones, we can see which works best with our apps and workflow and then standardize it. Why SendGrid integration with SMTP module was chosen? One of the biggest transactional email service providers is SendGrid. It delivers over 15 Billion emails each month for their clients. Some of their regular clients are Uber, Spotify, Airbnb and Glassdoor. SendGrid gives real-time analysis to optimize the performance of our email marketing campaign. With powerful segmentation and Contact Management tools we can simply send straightforward mail to a targeted and relevant audience. SendGrid can handle massive email campaigns while providing highly detailed and flexible reporting, along with the ability to scale and increase deliverability, so we went with it. Key features Offers high email delivery to make sure our emails get delivered. Allow us to analyze the results of the sent emails like number of opens, clicks, bounce, etc. We can use Engagement Segmentation feature to group customers by how much they engage with messages. We can also edit the transactional email templates either with the drag n drop editor, HTML or CSS. We can build our own preview design and template with SendGrid to ensure that our emails are displayed beautifully and are well crafted. We can open our Sendgrid account and other reports in the mobile phone. Project Implementation Create a SendGrid Account After signing up for an account, we can select a plan that meets our business needs. After receiving a confirmation email, sign in to the SendGrid account. From within the Settings menu, click Credentials. This is where we can create site-specific credentials so that sites have their own unique access to our SendGrid features and mail. Once we have created our site's credentials, we gain the desired access (UI/API and Mail). Integrating Sendgrid With Drupal Follow the procedure specified below for Drupal CMS. There are two methods that can be used to integrate SendGrid with a Drupal 8 site: API or SMTP. SendGrid SMTP Integration Install the SMTP Authentication Support module using Composer. Visit /admin/config/system/smtp once you've logged in as an administrator. From within Install Options, select On. Use the following within SMTP Server Settings: SMTP server: smtp.sendgrid.net SMTP port: 2525 Use encrypted protocol: We strongly recommend selecting TLS Provide your site-specific SendGrid credentials and click Save configuration. The Drupal application is now ready to send emails through SendGrid. Provide an address within the Send Test E-mail configuration field and click Save configuration to test. Checking deliverability in SendGrid For testing purposes, our first few deliveries had be to email addresses that we could verify directly. We tracked and measured unique aspects of mail behaviors from within our site's SendGrid account, which we monitored. For that first, we logged into SendGrid and selected Activity. It will take us to a page with a form to search by email. Enter the email address, and press Enter. SendGrid will search through our mail queue for any messages sent to that address. For additional search parameters, select the filters near the top right corner. Implementation Result Since the site registration, products reachability, both internal and external communication etc. are through emails, the mailing system plays a very important role in the business process. With the integration of sendGrid in the site, there are no longer any issues of the emails not reaching the recipient's inbox. The clients also benefited from the extra features that came with the integration of SendGrid.
/themes/custom/zyxpro_light/images/placeholder.png
17th December 2018 Drupal Technical , Drupal 8
close

on 17th December 2018 / by akhila.vn
In Drupal 8, the usage of database operations such as select, update and delete are slightly changed from Drupal 7. The db_query() is deprecated in Drupal 8. To fetch a field we can use : $query = \Drupal::database()->query('SELECT myfield from my_table where field1 = :value1 AND field2 = :value2', array( ':value1' => $condition1, ':value2' => $condition2, ) ); $data = $query->fetchField(); Now we can checkout the select, update, and delete operations in Drupal 8. For a field selection use, $query = \Drupal::database()->select('table_name', 'alias') ->fields('alias', ['field1', field2]) ->condition('field3', $condition); $results = $query->execute(); while ($content = $results->fetchAssoc()) { // Operations using $content. } For a single field selection we can use $last_paper_id = $last_paper->fetchField(); For update query execution in Drupal 8, we can use, $table = 'table_name'; \Drupal::database()->update($table) ->fields(array('field1' => $value1, 'field2' => $value2)) ->condition('field3', $condition1) ->condition('field4', $condition2) ->execute(); For content deletion, $query = \Drupal::database()->delete('table_name'); $query->condition('field1', $condition1); $query->condition('field2', $condition2); $query->execute(); Now checkout other database statements in Drupal 8 from this link! Drupal Technical Drupal 8 Database Operations Leave a reply Your email address will not be published. Required fields are marked *
/themes/custom/zyxpro_light/images/placeholder.png
17th December 2018 Technical Solution , HubSpot CRM
close

on 17th December 2018 / by fathimath.sajila
We can send email through HubSpot CRM using SMTP API. For sending email SMTP, first we need to create the SMTP tokens. Generate SMTP API Tokens An API token provides both a username and password which can then be used to send email through the HubSpot SMTP APi. We can create SMTP token using the API link below. https://api.hubapi.com/email/public/v1/smtpapi/tokens?hapikey=demo Example: Use the following code for generating json code, $post_arr = array( 'createdBy' => 'demo@hubspot.com', 'campaignName' => 'Transactional Email For Test' ); $post_json = json_encode($post_arr); $hubspot_api_url = 'https://api.hubapi.com/email/public/v1/smtpapi/tokens?hapikey=demo'; $response = drupal_http_request($hubspot_api_url, array('Content-Type' => 'application/x-www-form-urlencoded'), 'POST', $post_json); A sample json response is shown below, { "userName": "asdfghjkl@11111.smtp.hubspot.net", "password": "3432fff8eljl1249fjjasdfnv3", "portalId": 11111, "emailCampaignId": 14862038, "createdAt": 1415660606232, "deleted": false, "createdBy": "abcd@hubspot.com", "appId": 22709, "campaignName": "Test Transactional Email" } From there we get the SMTP Hostname, SMTP Port, SMTP User Name,SMTP Password. Now we can send email through HubSpot CRM using these SMTP values. Technical Solution HubSpot CRM API Leave a reply Your email address will not be published. Required fields are marked *
Subscribe to